phactor
phactor copied to clipboard
Supervision Trees
Work on supervision trees has begun in the supervision-trees branch. The API I currently have in mind looks as follows:
final class Supervisor
{
public const ONE_FOR_ONE = 0;
public function __construct(ActorRef|string $supervisor[, int $strategy]);
// Add a pre-existing actor to the group of supervised workers
public function addWorker(ActorRef|string $worker) : void;
// Creates a new actor, links it to the supervisor, and return its actor reference
// This should be used if the actor's constructor may throw an exception
public function newWorker(string $actorClass[, array $ctorArgs[, string $actorName]]) : ActorRef;
}
To do list:
- [x] Prevent the supervision tree from containing cycles
- [x] Work out what the semantics should be for a crashing supervisor
The basic implementation from the supervision-trees branch has been merged. I'm leaving this issue open because there is still much work to be done on the supervision trees feature.