Skip to content

Commit 5b9632c

Browse files
committed
Cleanup private methods and only have one templated actor
1 parent 3a25ec7 commit 5b9632c

7 files changed

Lines changed: 30 additions & 105 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Read more about Parallel Luau here: [Parallel Luau](https://create.roblox.com/do
1313
2. Add the dependency to your project's `wally.toml` file
1414
```toml
1515
[dependencies]
16-
Parallel = "dig/parallel@1.0.1"
16+
Parallel = "dig/parallel@1.0.2"
1717
```
1818
3. Run `wally install`
1919

src/ServerActor/Worker.lua

Lines changed: 0 additions & 69 deletions
This file was deleted.

src/ServerActor/init.meta.json

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/init.luau

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ local ServerStorage = game:GetService("ServerStorage")
44

55
local Promise = require(script.Parent.Promise)
66

7-
local ClientActor = script.ClientActor
8-
local ServerActor = script.ServerActor
7+
local Actor = script.Actor
98

109
export type Promise = typeof(Promise)
1110
export type PreparedParallel = {
@@ -16,24 +15,34 @@ export type PreparedParallel = {
1615
destroy: () -> (),
1716
}
1817

19-
type ActorStateMap = {
20-
[Actor]: ActorState,
21-
}
22-
2318
type ActorState = {
2419
count: number,
2520
running: { [Promise]: boolean },
2621
}
2722

28-
-- Set correct worker folder depending on
29-
-- client or server context
30-
local workersFolder = nil
31-
if RunService:IsServer() then
32-
workersFolder = ServerStorage:FindFirstChild("ParallelWorkers") or Instance.new("Folder")
33-
workersFolder.Name = "ParallelWorkers"
34-
workersFolder.Parent = ServerStorage
35-
elseif RunService:IsClient() then
36-
workersFolder = script
23+
type ActorStateMap = {
24+
[Actor]: ActorState,
25+
}
26+
27+
local workersFolder: Instance? = nil
28+
local function getOrFindWorkerFolder(): Instance
29+
if workersFolder == nil then
30+
if RunService:IsServer() then
31+
workersFolder = ServerStorage:FindFirstChild("ParallelWorkers") or Instance.new("Folder")
32+
workersFolder.Name = "ParallelWorkers"
33+
workersFolder.Parent = ServerStorage
34+
elseif RunService:IsClient() then
35+
workersFolder = script
36+
end
37+
end
38+
39+
return workersFolder
40+
end
41+
42+
local function createTemplatedActor(): Actor
43+
local actor = Actor:Clone()
44+
require(actor.Worker)
45+
return actor
3746
end
3847

3948
-- Parallel class
@@ -60,8 +69,7 @@ function Parallel.of(runnable: (...any?) -> any?): PreparedParallel
6069
self._connection = self._bindableEvent.Event:Connect(function(uuid: string, ...: any)
6170
self._results[uuid] = {...}
6271
end)
63-
64-
self._folder.Parent = workersFolder
72+
self._folder.Parent = getOrFindWorkerFolder()
6573
self:_createActors()
6674
return self
6775
end
@@ -99,7 +107,7 @@ function Parallel:submit(...: any?): Promise
99107
local actor = self:_findAvailableActor()
100108
local uuid = HttpService:GenerateGUID(false)
101109

102-
local promise
110+
local promise = nil
103111
local function cleanup(status: string)
104112
if status == "Cancelled" or status == "Rejected" then
105113
actor:SendMessage("Parallel:CancelTask", uuid)
@@ -169,7 +177,7 @@ end
169177

170178
function Parallel:_createActors()
171179
for _ = 1, self._actorCount - #self._actors do
172-
local actor = Parallel._createTemplatedActor()
180+
local actor = createTemplatedActor()
173181
actor.Parent = self._folder
174182
actor:SendMessage("Parallel:Init", self._bindableEvent, self._runnable)
175183

@@ -181,17 +189,6 @@ function Parallel:_createActors()
181189
end
182190
end
183191

184-
function Parallel._createTemplatedActor(): Actor
185-
local actor = nil
186-
if RunService:IsServer() then
187-
actor = ServerActor:Clone()
188-
else
189-
actor = ClientActor:Clone()
190-
end
191-
require(actor.Worker)
192-
return actor
193-
end
194-
195192
function Parallel:__tostring()
196193
return string.format("Parallel<%s>", self._name)
197194
end

wally.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
[package]
22
name = "dig/parallel"
33
description = "Parallel execution library for Roblox lua"
4-
version = "1.0.1"
4+
version = "1.0.2"
55
license = "MIT"
66
registry = "https://github.com/UpliftGames/wally-index"
77
realm = "shared"
8-
include = ["src", "default.project.json"]
8+
include = ["src", "default.project.json", "LICENSE"]
99

1010
[dependencies]
1111
Promise = "evaera/promise@4.0.0"

0 commit comments

Comments
 (0)