add skynet.service

This commit is contained in:
Cloud Wu
2017-06-01 16:58:51 +08:00
parent 25763fc70b
commit 1d364b5c22
5 changed files with 207 additions and 1 deletions

43
test/testservice/kvdb.lua Normal file
View File

@@ -0,0 +1,43 @@
local skynet = require "skynet"
local service = require "skynet.service"
local kvdb = {}
-- service.address is the default address registered by itself.
function kvdb.get(key)
return skynet.call(service.address, "lua", "get", key)
end
function kvdb.set(key, value)
skynet.call(service.address, "lua", "set", key , value)
end
-- this function will be injected into an unique service, so don't refer any upvalues
local function service_mainfunc(...)
local skynet = require "skynet"
skynet.error(...) -- (...) passed from service.new
local db = {}
local command = {}
function command.get(key)
return db[key]
end
function command.set(key, value)
db[key] = value
end
-- skynet.start is compatible
skynet.dispatch("lua", function(session, address, cmd, ...)
skynet.ret(skynet.pack(command[cmd](...)))
end)
end
skynet.init(function()
service.new("kvdb", service_mainfunc, "Service Init")
end)
return kvdb