diff --git a/src/Index/Client/ClientProcess.luau b/src/Index/Client/ClientProcess.luau index cb227d1..43228d9 100644 --- a/src/Index/Client/ClientProcess.luau +++ b/src/Index/Client/ClientProcess.luau @@ -1,5 +1,6 @@ --!native --!strict +--!optimize 2 local ClientProcess = {} local RunService = game:GetService("RunService") @@ -10,6 +11,7 @@ local Event = require(script.Parent.Parent.Event) local Spawn = require(Util.Spawn) local Key = require(Util.Key) local RateLimit = require(Util.RateLimit) +local Buffer = require(Util.Buffer) local clientRatelimit: Type.StoredRatelimit = {} local clientQueue: Type.QueueMap = {} @@ -99,7 +101,7 @@ function ClientProcess.start() for Identifier: string, data: any in unreliableClientQueue do if #data > 0 then if clientRatelimit[Identifier](#data) then - UnreliableEvent:FireServer(Identifier, data) + UnreliableEvent:FireServer(Buffer.revert(Identifier), data) end table.clear(data) end @@ -107,7 +109,7 @@ function ClientProcess.start() for Identifier: string, data: any in clientQueue do if #data > 0 then if clientRatelimit[Identifier](#data) then - ReliableEvent:FireServer(Identifier, data) + ReliableEvent:FireServer(Buffer.revert(Identifier), data) end table.clear(data) end @@ -170,17 +172,18 @@ function ClientProcess.start() end for Identifier: string, requestsData in queueOutRequest[1] do if #requestsData == 0 then continue end - RequestEvent:FireServer(Identifier, "\1", requestsData) + RequestEvent:FireServer(Buffer.revert(Identifier), "\1", requestsData) table.clear(queueOutRequest[1][Identifier]) end for Identifier: string, requestsData in queueOutRequest[2] do if #requestsData == 0 then continue end - RequestEvent:FireServer(Identifier, "\0", requestsData) + RequestEvent:FireServer(Buffer.revert(Identifier), "\0", requestsData) table.clear(queueOutRequest[2][Identifier]) end end) - local function onClientNetworkReceive(Identifier: string, data: any) + local function onClientNetworkReceive(Identifier: any, data: any) if not Identifier or not data then return end + Identifier = Buffer.convert(Identifier) if not queueIn[Identifier] then queueIn[Identifier] = {} end @@ -195,8 +198,9 @@ function ClientProcess.start() end ReliableEvent.OnClientEvent:Connect(onClientNetworkReceive) UnreliableEvent.OnClientEvent:Connect(onClientNetworkReceive) - RequestEvent.OnClientEvent:Connect(function(Identifier: string, action: string, returnDatas) + RequestEvent.OnClientEvent:Connect(function(Identifier: any, action: string, returnDatas) if not Identifier or not returnDatas then return end + Identifier = Buffer.convert(Identifier) if action == "\1" then table.insert(queueInRequest[1][Identifier], returnDatas) else diff --git a/src/Index/Server/ServerProcess.luau b/src/Index/Server/ServerProcess.luau index 599dba1..2b85e38 100644 --- a/src/Index/Server/ServerProcess.luau +++ b/src/Index/Server/ServerProcess.luau @@ -1,5 +1,6 @@ --!native --!strict +--!optimize 2 local ServerProcess = {} local RunService = game:GetService("RunService") @@ -11,6 +12,7 @@ local Event = require(script.Parent.Parent.Event) local Spawn = require(Util.Spawn) local Key = require(Util.Key) local RateLimit = require(Util.RateLimit) +local Buffer = require(Util.Buffer) local serverQueue: Type.QueueMap = {} local unreliableServerQueue: Type.QueueMap = {} @@ -130,6 +132,7 @@ function ServerProcess.add(Identifier: string, originId: string, ratelimit: Type end function ServerProcess.addCallback(Identifier: string, key: string, callback) + print(serverCallback, Identifier) serverCallback[Identifier][key] = callback end @@ -142,7 +145,7 @@ function ServerProcess.start() for Identifier: string, players in unreliableServerQueue do for player: Player, data: any in players do if #data == 0 then continue end - UnreliableEvent:FireClient(player, Identifier, data) + UnreliableEvent:FireClient(player, Buffer.revert(Identifier), data) table.clear(data) end end @@ -150,7 +153,7 @@ function ServerProcess.start() if not queueOut[player] then continue end for Identifier: string, data: any in queueOut[player] do if #data == 0 then continue end - ReliableEvent:FireClient(player, Identifier, data) + ReliableEvent:FireClient(player, Buffer.revert(Identifier), data) table.clear(data) end end @@ -210,20 +213,21 @@ function ServerProcess.start() end for player: Player, requestsData: any in queueOutRequest[1][Identifier] do if #requestsData == 0 then continue end - RequestEvent:FireClient(player, Identifier, "\1", requestsData) + RequestEvent:FireClient(player, Buffer.revert(Identifier), "\1", requestsData) table.clear(requestsData) end for player: Player, toReturnDatas: any in queueOutRequest[2][Identifier] do if #toReturnDatas == 0 then continue end - RequestEvent:FireClient(player, Identifier, "\0", toReturnDatas) + RequestEvent:FireClient(player, Buffer.revert(Identifier), "\0", toReturnDatas) table.clear(toReturnDatas) end end end end end) - local function onServerNetworkReceive(player: Player, Identifier: string, data: any) + local function onServerNetworkReceive(player: Player, Identifier: any, data: any) if not Identifier or not data then return end + Identifier = Buffer.convert(Identifier) if not serverQueue[Identifier] then serverQueue[Identifier] = {} end @@ -237,8 +241,9 @@ function ServerProcess.start() end ReliableEvent.OnServerEvent:Connect(onServerNetworkReceive) UnreliableEvent.OnServerEvent:Connect(onServerNetworkReceive) - RequestEvent.OnServerEvent:Connect(function(player: Player, Identifier: string, action: string, data: any) + RequestEvent.OnServerEvent:Connect(function(player: Player, Identifier: any, action: string, data: any) if not Identifier or not data then return end + Identifier = Buffer.convert(Identifier) if not queueInRequest[1][Identifier][player] then queueInRequest[1][Identifier][player] = {} queueInRequest[2][Identifier][player] = {}