local group

This commit is contained in:
云风
2012-10-11 22:26:38 +08:00
parent 837e79949d
commit 4fb7fec2fa
5 changed files with 60 additions and 1 deletions

24
lualib/localgroup.lua Normal file
View File

@@ -0,0 +1,24 @@
local skynet = require "skynet"
local lg
local group = {}
function group.create()
return skynet.call(lg, "lua", "NEW" , skynet.self())
end
group.address = assert(skynet.query_group)
group.enter = assert(skynet.enter_group)
group.leave = assert(skynet.leave_group)
function group.release(id)
skynet.send(lg, "lua" , "DELETE", id)
end
skynet.init(function()
lg = skynet.call(".service","lua","group_local")
assert(lg)
end, "localgroup")
return group

32
service/group_local.lua Normal file
View File

@@ -0,0 +1,32 @@
local skynet = require "skynet"
local local_group = {}
for i=1,10000 do
local_group[i] = true
end
local command = {}
function command.NEW()
local k = next(local_group)
if k then
local_group[k] = nil
skynet.ret(skynet.pack(k))
else
skynet.ret(skynet.pack(nil))
end
end
function command.DELETE(id)
assert(handle_group[id] == nil)
skynet.clear_group(id)
local_group[id] = true
end
skynet.start(function()
skynet.dispatch("lua", function(_, _, cmd, id)
local f = command[cmd]
assert(f, cmd, id)
f(id)
end)
end)

View File

@@ -1,6 +1,7 @@
local skynet = require "skynet"
local id = 0
-- read group_local for id 10000
local id = 10000
local harbor_ctrl = {}
local multicast = {}
local command = {}

View File

@@ -1,5 +1,6 @@
local skynet = require "skynet"
local group = require "mcgroup"
--local group = require "localgroup"
skynet.start(function()
local gid = group.create()

View File

@@ -1,5 +1,6 @@
local skynet = require "skynet"
local group = require "mcgroup"
--local group = require "localgroup"
local id, g = ...
skynet.start(function()