diff --git a/changes.md b/changes.md index ce9b3ac..3b322c2 100644 --- a/changes.md +++ b/changes.md @@ -1,5 +1,15 @@ #Changes [TOC] +Update 13.1.0 Bug fixes and some new features (Will upgrade version to 14.0.0 if significant changes are made) +------------- +Added: +- Connections:Lock() -- Prevents a connection object form being fired +- Connections:Unlock() -- Removes the restriction imposed by conn:Lock() + +Fixed: +- Minor bug with multi:newThread() in how names and functions were managed +- + Update 13.0.0 Added some documentation, and some new features too check it out! ------------- **Quick note** on the 13.0.0 update: diff --git a/multi/init.lua b/multi/init.lua index 418bc26..bbc12a0 100644 --- a/multi/init.lua +++ b/multi/init.lua @@ -24,8 +24,8 @@ SOFTWARE. local bin = pcall(require,"bin") local multi = {} local clock = os.clock -multi.Version = "13.0.0" -multi._VERSION = "13.0.0" +multi.Version = "13.1.0" +multi._VERSION = "13.1.0" multi.stage = "stable" multi.__index = multi multi.Name = "multi.root" @@ -740,6 +740,7 @@ function multi:newConnection(protect,func) local c={} c.callback = func c.Parent=self + c.lock = false setmetatable(c,{__call=function(self,...) local t = ... if type(t)=="table" and t.Type ~= nil then @@ -788,8 +789,15 @@ function multi:newConnection(protect,func) return self.connections[name] or self end end + function c:Lock() + c.lock = true + end + function c:Unlock() + c.lock = false + end function c:Fire(...) local ret={} + if self.lock then return end for i=#self.func,1,-1 do if self.protect then local temp={pcall(self.func[i][1],...)} @@ -822,6 +830,7 @@ function multi:newConnection(protect,func) ID=self.ID, Parent=self, Fire=function(self,...) + if self.Parent.lock then return end --~ if self.Parent.FC>0 then --~ for i=1,#self.Parent.FC do --~ self.Parent.FC[i]:Fire(...) @@ -1497,9 +1506,8 @@ multi:setDomainName("Globals") local initT = false local threadCount = 0 function multi:newThread(name,func) - local func = func + local func = func or name if type(name) == "function" then - func = name name = "Thread#"..threadCount end local c={} diff --git a/test.lua b/test.lua index f213a9f..2337394 100644 --- a/test.lua +++ b/test.lua @@ -2,8 +2,25 @@ package.path="?/init.lua;?.lua;"..package.path multi = require("multi") local GLOBAL,THREAD = require("multi.integration.lanesManager").init() nGLOBAL = require("multi.integration.networkManager").init() +function table.print(tbl, indent) + if type(tbl)~="table" then return end + if not indent then indent = 0 end + for k, v in pairs(tbl) do + formatting = string.rep(' ', indent) .. k .. ': ' + if type(v) == 'table' then + print(formatting) + table.print(v, indent+1) + else + print(formatting .. tostring(v)) + end + end +end multi:newThread(function() - error("Did it work?") + while true do + thread.sleep(1) + print("-----") + multi:getTasksDetails("t") + end end) multi.OnError(function(...) print(...)