1 2verbose = true 3 4function say(...) 5 if verbose then 6 print(...) 7 end 8end 9 10function mcp_config_pools() 11 local srv = mcp.backend 12 local b1 = srv('b1', '127.0.0.1', 12021) 13 return mcp.pool({b1}) 14end 15 16function factory(rctx, h) 17 return function(r) 18 return rctx:enqueue_and_wait(r, h) 19 end 20end 21 22function d_factory(rctx) 23 return function(r) 24 return "SERVER_ERROR default route\r\n" 25 end 26end 27 28function string_fgen(msg) 29 local fg = mcp.funcgen_new() 30 fg:ready({ f = function(rctx) 31 return function(r) 32 return msg 33 end 34 end}) 35 return fg 36end 37 38-- TODO: make default path and some other paths that return static data 39function mcp_config_routes(p) 40 local fg = mcp.funcgen_new() 41 local fgh = fg:new_handle(p) 42 fg:ready({ f = factory, a = fgh }) 43 44 local def_fg = mcp.funcgen_new() 45 def_fg:ready({ f = d_factory }) 46 47 local map = { 48 ["one"] = fg, 49 ["two"] = fg, 50 ["cmd"] = { [mcp.CMD_GET] = string_fgen("SERVER_ERROR cmd_get\r\n"), 51 [mcp.CMD_SET] = string_fgen("SERVER_ERROR cmd_set\r\n") }, 52 ["cmdd"] = { [mcp.CMD_ANY_STORAGE] = string_fgen("SERVER_ERROR cmd_default\r\n"), }, 53 } 54 55 local cmap = { 56 [mcp.CMD_INCR] = string_fgen("SERVER_ERROR cmap incr\r\n"), 57 [mcp.CMD_DECR] = string_fgen("SERVER_ERROR cmap decr\r\n") 58 } 59 60 local rpfx_short = mcp.router_new({ map = map, cmap = cmap, mode = "prefix", stop = "|", default = def_fg }) 61 local rpfx_long = mcp.router_new({ map = map, mode = "prefix", stop = "+#+", default = def_fg }) 62 local ranc_short = mcp.router_new({ map = map, mode = "anchor", start = "_", stop = ",", default = def_fg }) 63 local ranc_long = mcp.router_new({ map = map, mode = "anchor", start = "=?=", stop = "__", default = def_fg }) 64 65 local cmap_only = mcp.router_new({ 66 cmap = { 67 [mcp.CMD_GETS] = string_fgen("SERVER_ERROR cmap_only gets\r\n") 68 }, 69 default = string_fgen("SERVER_ERROR cmap_only default\r\n"), 70 }) 71 72 mcp.attach(mcp.CMD_ANY_STORAGE, rpfx_short) 73 mcp.attach(mcp.CMD_MG, rpfx_short) 74 mcp.attach(mcp.CMD_MS, rpfx_long) 75 mcp.attach(mcp.CMD_MD, ranc_short) 76 mcp.attach(mcp.CMD_MA, ranc_long) 77 mcp.attach(mcp.CMD_GETS, cmap_only) 78 mcp.attach(mcp.CMD_GAT, cmap_only) 79end 80