mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 20:23:06 +00:00
local group
This commit is contained in:
24
lualib/localgroup.lua
Normal file
24
lualib/localgroup.lua
Normal 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
32
service/group_local.lua
Normal 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)
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
local skynet = require "skynet"
|
local skynet = require "skynet"
|
||||||
|
|
||||||
local id = 0
|
-- read group_local for id 10000
|
||||||
|
local id = 10000
|
||||||
local harbor_ctrl = {}
|
local harbor_ctrl = {}
|
||||||
local multicast = {}
|
local multicast = {}
|
||||||
local command = {}
|
local command = {}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
local skynet = require "skynet"
|
local skynet = require "skynet"
|
||||||
local group = require "mcgroup"
|
local group = require "mcgroup"
|
||||||
|
--local group = require "localgroup"
|
||||||
|
|
||||||
skynet.start(function()
|
skynet.start(function()
|
||||||
local gid = group.create()
|
local gid = group.create()
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
local skynet = require "skynet"
|
local skynet = require "skynet"
|
||||||
local group = require "mcgroup"
|
local group = require "mcgroup"
|
||||||
|
--local group = require "localgroup"
|
||||||
local id, g = ...
|
local id, g = ...
|
||||||
|
|
||||||
skynet.start(function()
|
skynet.start(function()
|
||||||
|
|||||||
Reference in New Issue
Block a user