From 563af05c62ef76efe91a18ab26549434d8a2dab8 Mon Sep 17 00:00:00 2001 From: EternityDev Date: Wed, 13 Mar 2024 08:01:27 +0700 Subject: [PATCH] v1.0.7 --- Warp.rbxm | Bin 10946 -> 11933 bytes src/Index/Server/Index.luau | 7 ++- src/Index/Signal/Dedicated.luau | 1 + src/Index/Signal/init.luau | 1 + src/Index/Util/Buffer/Dedicated.luau | 64 +++++++++++++++++++++++++++ src/Index/Util/Buffer/init.luau | 24 ++++++++++ src/Index/Util/Serdes.luau | 3 +- src/Index/Util/Spawn.luau | 5 ++- wally.toml | 2 +- 9 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 src/Index/Util/Buffer/Dedicated.luau create mode 100644 src/Index/Util/Buffer/init.luau diff --git a/Warp.rbxm b/Warp.rbxm index 42a59e0ac5fa358af9b6ec5f56839c3bb89030f7..9e7c5aa51e6027f9ee070146819eb4bb4a6f4a8c 100644 GIT binary patch delta 7537 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 delta 6548 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 diff --git a/src/Index/Server/Index.luau b/src/Index/Server/Index.luau index cbe6171..4811d1f 100644 --- a/src/Index/Server/Index.luau +++ b/src/Index/Server/Index.luau @@ -1,5 +1,6 @@ --!strict --!native +--!optimize 2 local Server = {} Server.__index = Server @@ -11,12 +12,16 @@ local ServerProcess = require(script.Parent.ServerProcess) local Assert = require(Util.Assert) local Key = require(Util.Key) local Serdes = require(Util.Serdes) +local Buffer = require(Util.Buffer) function Server.new(Identifier: string, rateLimit: Type.rateLimitArg?) local self = setmetatable({}, Server) - self.id = Serdes(Identifier) + self._buffer = Buffer.new() + self._buffer:writeu8(Serdes(Identifier)) + self.id = Buffer.convert(self._buffer:build()) self.fn = {} ServerProcess.add(self.id, Identifier, rateLimit or { maxEntrance = 200, interval = 2 }) + self._buffer:remove() return self end diff --git a/src/Index/Signal/Dedicated.luau b/src/Index/Signal/Dedicated.luau index 02ca819..a4df234 100644 --- a/src/Index/Signal/Dedicated.luau +++ b/src/Index/Signal/Dedicated.luau @@ -1,5 +1,6 @@ --!strict --!native +--!optimize 2 local Dedicated = {} Dedicated.__index = Dedicated diff --git a/src/Index/Signal/init.luau b/src/Index/Signal/init.luau index 0951252..2e946e9 100644 --- a/src/Index/Signal/init.luau +++ b/src/Index/Signal/init.luau @@ -1,5 +1,6 @@ --!strict --!native +--!optimize 2 local Signal = {} Signal.__index = Signal diff --git a/src/Index/Util/Buffer/Dedicated.luau b/src/Index/Util/Buffer/Dedicated.luau new file mode 100644 index 0000000..b81b4ec --- /dev/null +++ b/src/Index/Util/Buffer/Dedicated.luau @@ -0,0 +1,64 @@ +--!strict +--!native +--!optimize 2 +local DedicatedBuffer = {} +DedicatedBuffer.__index = DedicatedBuffer + +local create = buffer.create +local copy = buffer.copy +local writeu8 = buffer.writeu8 +local tostring = buffer.tostring + +local default = { + point = 0, + size = 256, +} + +function DedicatedBuffer.alloc(self: any, byte: number) + local size: number = self.size + local b: buffer = self.buffer + + while self.point + byte >= size do + size = math.floor(size * 1.5) + end + + local newBuffer: buffer = create(size) + copy(newBuffer, 0, b) + + b = newBuffer +end + +function DedicatedBuffer.build(self: any): buffer + local p: number = self.point + local build: buffer = create(p) + + copy(build, 0, self.buffer, 0, p) + return build +end + +function DedicatedBuffer.writeu8(self: any, val: number) + DedicatedBuffer.alloc(self, 1) + writeu8(self.buffer, self.point, val) + self.point += 1 +end + +function DedicatedBuffer.flush(self: any) + self.point = default.point + self.size = default.size + self.buffer = create(256) +end + +function DedicatedBuffer.new() + return setmetatable({ + point = default.point, + size = default.size, + buffer = create(256) + }, DedicatedBuffer) +end + +function DedicatedBuffer.remove(self: any) + self:flush() + setmetatable(self, nil) +end + +return DedicatedBuffer.new :: typeof(DedicatedBuffer.new) \ No newline at end of file diff --git a/src/Index/Util/Buffer/init.luau b/src/Index/Util/Buffer/init.luau new file mode 100644 index 0000000..f8ced60 --- /dev/null +++ b/src/Index/Util/Buffer/init.luau @@ -0,0 +1,24 @@ +--!strict +--!native +--!optimize 2 +local Buffer = {} +Buffer.__index = Buffer + +local Dedicated = require(script.Dedicated) + +local tostring = buffer.tostring +local fromstring = buffer.fromstring + +function Buffer.new() + return Dedicated() +end + +function Buffer.convert(b: buffer): string + return tostring(b) +end + +function Buffer.revert(s: string): buffer + return fromstring(s) +end + +return Buffer :: typeof(Buffer) \ No newline at end of file diff --git a/src/Index/Util/Serdes.luau b/src/Index/Util/Serdes.luau index 2664c3d..2b5db61 100644 --- a/src/Index/Util/Serdes.luau +++ b/src/Index/Util/Serdes.luau @@ -11,7 +11,8 @@ return function(Identifier: string): string if RunService:IsServer() then if not Event:GetAttribute(Identifier) then SerInt += 1 - Event:SetAttribute(Identifier, string.pack("I1", SerInt)) -- I1 -> 255 max, I2 -> ~ 6.5e4 max. (SerInt) + Event:SetAttribute(Identifier, SerInt) + --Event:SetAttribute(Identifier, string.pack("I1", SerInt)) -- I1 -> 255 max, I2 -> ~ 6.5e4 max. (SerInt) end else while not Event:GetAttribute(Identifier) do diff --git a/src/Index/Util/Spawn.luau b/src/Index/Util/Spawn.luau index a6701b1..9281b82 100644 --- a/src/Index/Util/Spawn.luau +++ b/src/Index/Util/Spawn.luau @@ -1,5 +1,6 @@ --!native --!strict +--!optimize 2 local thread: thread? = nil local function passer(fn, ...): () @@ -20,10 +21,10 @@ if not thread then coroutine.resume(thread :: any, thread) end -return function(fn: (...any) -> (), ...: any): () +return function(fn: (...any) -> (...any?), ...: any): () if not thread then thread = coroutine.create(yield) coroutine.resume(thread :: any, thread) end task.spawn(thread :: thread, fn, ...) -end +end \ No newline at end of file diff --git a/wally.toml b/wally.toml index 5a23841..fda93f9 100644 --- a/wally.toml +++ b/wally.toml @@ -1,6 +1,6 @@ [package] name = "imezx/warp" -version = "1.0.5" +version = "1.0.7" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" license = "MIT"