From 2671033b073d380cddd81493e907c507857f907f Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 1 Dec 2023 15:03:32 +0100 Subject: [PATCH] Allow booting an actor into an existing ActorSpace --- packages/core/src/runtime/actor.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/core/src/runtime/actor.ts b/packages/core/src/runtime/actor.ts index 0e89056..1e2a018 100644 --- a/packages/core/src/runtime/actor.ts +++ b/packages/core/src/runtime/actor.ts @@ -101,8 +101,16 @@ export class Actor { exitReason: ExitReason = null; readonly exitHooks: Array = []; - static boot(bootProc: LocalAction, initialAssertions: OutboundMap = new Map()): Actor { - const newActor = new Actor(new ActorSpace(), initialAssertions); + static boot(bootProc: LocalAction, space: ActorSpace, initialAssertions?: OutboundMap): Actor; + static boot(bootProc: LocalAction, initialAssertions?: OutboundMap): Actor; + static boot(bootProc: LocalAction, spaceOrInitialAssertions?: ActorSpace | OutboundMap, initialAssertions0?: OutboundMap): Actor { + const space: ActorSpace = (spaceOrInitialAssertions && !Map.isMap(spaceOrInitialAssertions)) + ? spaceOrInitialAssertions + : new ActorSpace(); + const initialAssertions: OutboundMap | undefined = (spaceOrInitialAssertions && Map.isMap(spaceOrInitialAssertions)) + ? spaceOrInitialAssertions + : (spaceOrInitialAssertions ? initialAssertions0 : void 0); + const newActor = new Actor(space, initialAssertions); newActor._boot(bootProc); return newActor; }