Allow access to new Actor handle on spawn (is this safe?)

This commit is contained in:
Tony Garnock-Jones 2021-12-12 23:02:51 +01:00
parent 951598b7d0
commit 33ac308564
1 changed files with 9 additions and 8 deletions

View File

@ -326,12 +326,12 @@ export class Turn {
} }
// Alias for syndicatec code generator to use // Alias for syndicatec code generator to use
_spawn(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): void { _spawn(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): Actor {
this.spawn(bootProc, initialAssertions); return this.spawn(bootProc, initialAssertions);
} }
spawn(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): void { spawn(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): Actor {
this.__spawn(bootProc, initialAssertions); return this.__spawn(bootProc, initialAssertions);
} }
__spawn(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): Actor { __spawn(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): Actor {
@ -348,15 +348,16 @@ export class Turn {
} }
// Alias for syndicatec code generator to use // Alias for syndicatec code generator to use
_spawnLink(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): void { _spawnLink(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): Actor | null {
this.spawnLink(bootProc, initialAssertions); return this.spawnLink(bootProc, initialAssertions);
} }
spawnLink(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): void { spawnLink(bootProc: LocalAction, initialAssertions = new IdentitySet<Handle>()): Actor | null {
if (!this.activeFacet.isLive) return; if (!this.activeFacet.isLive) return null;
const newActor = this.__spawn(bootProc, initialAssertions); const newActor = this.__spawn(bootProc, initialAssertions);
this.activeFacet._halfLink(newActor.root); this.activeFacet._halfLink(newActor.root);
newActor.root._halfLink(this.activeFacet); newActor.root._halfLink(this.activeFacet);
return newActor;
} }
stopActor(): void { stopActor(): void {