Skip to content

Commit

Permalink
Merge pull request #198 from Sleitnick/mem-categories
Browse files Browse the repository at this point in the history
Memory and profile tracking
  • Loading branch information
Sleitnick committed Mar 7, 2022
2 parents 172eb82 + b2f3a75 commit 024a892
Show file tree
Hide file tree
Showing 8 changed files with 188 additions and 95 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 1.4.4
- Add memory categories per service and controller to help track memory usage
- Add profile labels for KnitInit as well as per-service/controller KnitInit usage
- Update dependencies

## 1.4.3

- Update Component dependency
Expand Down
5 changes: 5 additions & 0 deletions future.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[[debug.setmemorycategory.args]]
type = "string"

[debug.resetmemorycategory]
args = []
220 changes: 147 additions & 73 deletions roblox.toml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion selene.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
std = "roblox+remodel+testez"
std = "roblox+remodel+testez+future"

[rules]
multiple_statements = "allow"
Expand Down
23 changes: 14 additions & 9 deletions src/KnitClient.lua
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,13 @@ type Service = {
type KnitOptions = {
ServicePromises: boolean,
Middleware: Middleware?,
PerServiceMiddleware: PerServiceMiddleware?
PerServiceMiddleware: PerServiceMiddleware?,
}

local defaultOptions: KnitOptions = {
ServicePromises = true;
Middleware = nil;
PerServiceMiddleware = {};
ServicePromises = true,
Middleware = nil,
PerServiceMiddleware = {},
}

local selectedOptions = nil
Expand Down Expand Up @@ -232,11 +232,11 @@ end
```lua
-- Server-side service creation:
local MyService = Knit.CreateService {
Name = "MyService";
Name = "MyService",
Client = {
MySignal = Knit.CreateSignal();
MyProperty = Knit.CreateProperty("Hello");
};
MySignal = Knit.CreateSignal(),
MyProperty = Knit.CreateProperty("Hello"),
},
}
function MyService:AddOne(player, number)
return number + 1
Expand Down Expand Up @@ -341,9 +341,11 @@ function KnitClient.Start(options: KnitOptions?)

-- Init:
local promisesStartControllers = {}

for _,controller in pairs(controllers) do
if type(controller.KnitInit) == "function" then
table.insert(promisesStartControllers, Promise.new(function(r)
debug.setmemorycategory(controller.Name)
controller:KnitInit()
r()
end))
Expand All @@ -357,7 +359,10 @@ function KnitClient.Start(options: KnitOptions?)
-- Start:
for _,controller in pairs(controllers) do
if type(controller.KnitStart) == "function" then
task.spawn(controller.KnitStart, controller)
task.spawn(function()
debug.setmemorycategory(controller.Name)
controller:KnitStart()
end)
end
end

Expand Down
24 changes: 14 additions & 10 deletions src/KnitServer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ type KnitOptions = {
}

local defaultOptions: KnitOptions = {
Middleware = nil;
Middleware = nil,
}

local selectedOptions = nil
Expand Down Expand Up @@ -246,12 +246,12 @@ end
documentation for more info.
```lua
local MyService = Knit.CreateService {
Name = "MyService";
Name = "MyService",
Client = {
-- Create the signal marker, which will turn into a
-- RemoteSignal when Knit.Start() is called:
MySignal = Knit.CreateSignal()
}
MySignal = Knit.CreateSignal(),
},
}
function MyService:KnitInit()
Expand Down Expand Up @@ -280,12 +280,12 @@ end
```lua
local MyService = Knit.CreateService {
Name = "MyService";
Name = "MyService",
Client = {
-- Create the property marker, which will turn into a
-- RemoteProperty when Knit.Start() is called:
MyProperty = Knit.CreateProperty("HelloWorld")
}
MyProperty = Knit.CreateProperty("HelloWorld"),
},
}
function MyService:KnitInit()
Expand Down Expand Up @@ -326,8 +326,8 @@ end
print("Player is giving following args to server:", args)
return true
end
}
}
},
},
}):andThen(function()
print("Knit started!")
end):catch(warn)
Expand Down Expand Up @@ -379,6 +379,7 @@ function KnitServer.Start(options: KnitOptions?)
for _,service in pairs(services) do
if type(service.KnitInit) == "function" then
table.insert(promisesInitServices, Promise.new(function(r)
debug.setmemorycategory(service.Name)
service:KnitInit()
r()
end))
Expand All @@ -392,7 +393,10 @@ function KnitServer.Start(options: KnitOptions?)
-- Start:
for _,service in pairs(services) do
if type(service.KnitStart) == "function" then
task.spawn(service.KnitStart, service)
task.spawn(function()
debug.setmemorycategory(service.Name)
service:KnitStart()
end)
end
end

Expand Down
2 changes: 1 addition & 1 deletion src/wally.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "sleitnick/knit"
description = "Knit is a lightweight game framework"
version = "1.4.3"
version = "1.4.4"
license = "MIT"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
Expand Down
2 changes: 1 addition & 1 deletion src/wally_bundle.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ Signal = "sleitnick/signal@^1"
Streamable = "sleitnick/streamable@^1"
TableUtil = "sleitnick/table-util@^1"
Timer = "sleitnick/timer@^1"
Trove = "sleitnick/trove@^0.2"
Trove = "sleitnick/trove@^0.3"
Promise = "evaera/promise@^3"

0 comments on commit 024a892

Please sign in to comment.