Added Unconnect to connections. Allows fastmode connections to be removed
This commit is contained in:
parent
f5e95b8c9f
commit
8c3d66a7b1
@ -83,6 +83,7 @@ multi:mainloop()
|
|||||||
|
|
||||||
Added
|
Added
|
||||||
---
|
---
|
||||||
|
- `multi:newConnection():Unconnect(conn_link)` Fastmode previously didn't have the ability to be unconnected to. This method works with both fastmode and non fastmode. `fastMode` will be made the default in v16.0.0 (This is a breaking change for those using the Destroy method, use this time to migrate to using `Unconnect()`)
|
||||||
- `thread.chain(...)` allows you to chain `thread.hold(FUNCTIONs)` together
|
- `thread.chain(...)` allows you to chain `thread.hold(FUNCTIONs)` together
|
||||||
```lua
|
```lua
|
||||||
while true do
|
while true do
|
||||||
|
|||||||
12
init.lua
12
init.lua
@ -244,6 +244,14 @@ function multi:newConnection(protect,func,kill)
|
|||||||
return call_funcs
|
return call_funcs
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function c:Unconnect(conn)
|
||||||
|
if conn.fast then
|
||||||
|
table.remove(fast,conn.ind)
|
||||||
|
elseif conn.Destroy then
|
||||||
|
conn:Destroy()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function c:fastMode()
|
function c:fastMode()
|
||||||
if find_optimization then return self end
|
if find_optimization then return self end
|
||||||
function self:Fire(...)
|
function self:Fire(...)
|
||||||
@ -252,8 +260,8 @@ function multi:newConnection(protect,func,kill)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
function self:Connect(func)
|
function self:Connect(func)
|
||||||
table.insert(fast,func)
|
table.insert(fast, func)
|
||||||
local temp = {}
|
local temp = {fast = true, ind = #fast}
|
||||||
setmetatable(temp,{
|
setmetatable(temp,{
|
||||||
__call=function(s,...)
|
__call=function(s,...)
|
||||||
return self:Connect(...)
|
return self:Connect(...)
|
||||||
|
|||||||
165
tests/test.lua
165
tests/test.lua
@ -5,7 +5,42 @@ multi:getOptimizationConnection()(function(msg)
|
|||||||
print(msg)
|
print(msg)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- local conn1, conn2, conn3 = multi:newConnection(), multi:newConnection(), multi:newConnection()
|
local conn1, conn2, conn3 = multi:newConnection(), multi:newConnection():fastMode(), multi:newConnection()
|
||||||
|
|
||||||
|
local link = conn1(function()
|
||||||
|
print("Conn1, first")
|
||||||
|
end)
|
||||||
|
|
||||||
|
local link2 = conn1(function()
|
||||||
|
print("Conn1, second")
|
||||||
|
end)
|
||||||
|
|
||||||
|
local link3 = conn1(function()
|
||||||
|
print("Conn1, third")
|
||||||
|
end)
|
||||||
|
|
||||||
|
local link4 = conn2(function()
|
||||||
|
print("Conn2, first")
|
||||||
|
end)
|
||||||
|
|
||||||
|
local link5 = conn2(function()
|
||||||
|
print("Conn2, second")
|
||||||
|
end)
|
||||||
|
|
||||||
|
local link6 = conn2(function()
|
||||||
|
print("Conn2, third")
|
||||||
|
end)
|
||||||
|
|
||||||
|
print("All conns\n-------------")
|
||||||
|
conn1:Fire()
|
||||||
|
conn2:Fire()
|
||||||
|
|
||||||
|
conn1:Unconnect(link3)
|
||||||
|
conn2:Unconnect(link6)
|
||||||
|
print("All conns Edit\n---------------------")
|
||||||
|
conn1:Fire()
|
||||||
|
conn2:Fire()
|
||||||
|
|
||||||
-- thread:newThread(function()
|
-- thread:newThread(function()
|
||||||
-- print("Awaiting status")
|
-- print("Awaiting status")
|
||||||
-- thread.hold(conn1 + (conn2 * conn3))
|
-- thread.hold(conn1 + (conn2 * conn3))
|
||||||
@ -25,74 +60,74 @@ end)
|
|||||||
-- conn3:Fire()
|
-- conn3:Fire()
|
||||||
-- end)
|
-- end)
|
||||||
|
|
||||||
local conn = multi:newSystemThreadedConnection("conn"):init()
|
-- local conn = multi:newSystemThreadedConnection("conn"):init()
|
||||||
|
|
||||||
multi:newSystemThread("Thread_Test_1", function()
|
-- multi:newSystemThread("Thread_Test_1", function()
|
||||||
local multi, thread = require("multi"):init()
|
-- local multi, thread = require("multi"):init()
|
||||||
local conn = GLOBAL["conn"]:init()
|
-- local conn = GLOBAL["conn"]:init()
|
||||||
local console = THREAD.getConsole()
|
-- local console = THREAD.getConsole()
|
||||||
conn(function(a,b,c)
|
-- conn(function(a,b,c)
|
||||||
console.print(THREAD:getName().." was triggered!",a,b,c)
|
-- console.print(THREAD:getName().." was triggered!",a,b,c)
|
||||||
end)
|
-- end)
|
||||||
multi:mainloop()
|
-- multi:mainloop()
|
||||||
end)
|
-- end)
|
||||||
|
|
||||||
multi:newSystemThread("Thread_Test_2", function()
|
-- multi:newSystemThread("Thread_Test_2", function()
|
||||||
local multi, thread = require("multi"):init()
|
-- local multi, thread = require("multi"):init()
|
||||||
local conn = GLOBAL["conn"]:init()
|
-- local conn = GLOBAL["conn"]:init()
|
||||||
local console = THREAD.getConsole()
|
-- local console = THREAD.getConsole()
|
||||||
conn(function(a,b,c)
|
-- conn(function(a,b,c)
|
||||||
console.print(THREAD:getName().." was triggered!",a,b,c)
|
-- console.print(THREAD:getName().." was triggered!",a,b,c)
|
||||||
end)
|
-- end)
|
||||||
multi:newAlarm(2):OnRing(function()
|
-- multi:newAlarm(2):OnRing(function()
|
||||||
console.print("Fire 2!!!")
|
-- console.print("Fire 2!!!")
|
||||||
conn:Fire(4,5,6)
|
-- conn:Fire(4,5,6)
|
||||||
THREAD.kill()
|
-- THREAD.kill()
|
||||||
end)
|
-- end)
|
||||||
|
|
||||||
multi:mainloop()
|
-- multi:mainloop()
|
||||||
end)
|
-- end)
|
||||||
local console = THREAD.getConsole()
|
-- local console = THREAD.getConsole()
|
||||||
conn(function(a,b,c)
|
-- conn(function(a,b,c)
|
||||||
console.print("Mainloop conn got triggered!",a,b,c)
|
-- console.print("Mainloop conn got triggered!",a,b,c)
|
||||||
end)
|
-- end)
|
||||||
|
|
||||||
alarm = multi:newAlarm(1)
|
-- alarm = multi:newAlarm(1)
|
||||||
alarm:OnRing(function()
|
-- alarm:OnRing(function()
|
||||||
console.print("Fire 1!!!")
|
-- console.print("Fire 1!!!")
|
||||||
conn:Fire(1,2,3)
|
-- conn:Fire(1,2,3)
|
||||||
end)
|
-- end)
|
||||||
|
|
||||||
alarm = multi:newAlarm(3):OnRing(function()
|
-- alarm = multi:newAlarm(3):OnRing(function()
|
||||||
multi:newSystemThread("Thread_Test_3",function()
|
-- multi:newSystemThread("Thread_Test_3",function()
|
||||||
local multi, thread = require("multi"):init()
|
-- local multi, thread = require("multi"):init()
|
||||||
local conn = GLOBAL["conn"]:init()
|
-- local conn = GLOBAL["conn"]:init()
|
||||||
local console = THREAD.getConsole()
|
-- local console = THREAD.getConsole()
|
||||||
conn(function(a,b,c)
|
-- conn(function(a,b,c)
|
||||||
console.print(THREAD:getName().." was triggered!",a,b,c)
|
-- console.print(THREAD:getName().." was triggered!",a,b,c)
|
||||||
end)
|
-- end)
|
||||||
multi:newAlarm(4):OnRing(function()
|
-- multi:newAlarm(4):OnRing(function()
|
||||||
console.print("Fire 3!!!")
|
-- console.print("Fire 3!!!")
|
||||||
conn:Fire(7,8,9)
|
-- conn:Fire(7,8,9)
|
||||||
end)
|
-- end)
|
||||||
multi:mainloop()
|
-- multi:mainloop()
|
||||||
end)
|
-- end)
|
||||||
end)
|
-- end)
|
||||||
|
|
||||||
multi:newSystemThread("Thread_Test_4",function()
|
-- multi:newSystemThread("Thread_Test_4",function()
|
||||||
local multi, thread = require("multi"):init()
|
-- local multi, thread = require("multi"):init()
|
||||||
local conn = GLOBAL["conn"]:init()
|
-- local conn = GLOBAL["conn"]:init()
|
||||||
local conn2 = multi:newConnection()
|
-- local conn2 = multi:newConnection()
|
||||||
local console = THREAD.getConsole()
|
-- local console = THREAD.getConsole()
|
||||||
multi:newAlarm(2):OnRing(function()
|
-- multi:newAlarm(2):OnRing(function()
|
||||||
conn2:Fire()
|
-- conn2:Fire()
|
||||||
end)
|
-- end)
|
||||||
multi:newThread(function()
|
-- multi:newThread(function()
|
||||||
console.print("Conn Test!")
|
-- console.print("Conn Test!")
|
||||||
thread.hold(conn + conn2)
|
-- thread.hold(conn + conn2)
|
||||||
console.print("It held!")
|
-- console.print("It held!")
|
||||||
end)
|
-- end)
|
||||||
multi:mainloop()
|
-- multi:mainloop()
|
||||||
end)
|
-- end)
|
||||||
|
|
||||||
multi:mainloop()
|
-- multi:mainloop()
|
||||||
Loading…
x
Reference in New Issue
Block a user