internal static PID GetGuardianPID(ISupervisorStrategy strategy) { GuardianProcess ValueFactory(ISupervisorStrategy s) => new GuardianProcess(s); var guardian = GuardianStrategies.GetOrAdd(strategy, ValueFactory); return(guardian.Pid); }
internal static PID GetGuardianPID(ISupervisorStrategy strategy) { if (!_guardians.TryGetValue(strategy, out var guardian)) { guardian = new GuardianProcess(strategy); _guardians[strategy] = guardian; } return(guardian.Pid); }
public Context(Func <IActor> producer, ISupervisorStrategy supervisorStrategy, Receive middleware, PID parent) { _producer = producer; _supervisorStrategy = supervisorStrategy; _middleware = middleware; Parent = parent; _behavior = new Stack <Receive>(); _behavior.Push(ActorReceive); IncarnateActor(); }
public Props Copy(Func <IActor> producer = null, IDispatcher dispatcher = null, Func <IMailbox> mailboxProducer = null, ISupervisorStrategy supervisor = null) { return(new Props { Producer = producer ?? Producer, _dispatcher = dispatcher ?? Dispatcher, _mailboxProducer = mailboxProducer ?? _mailboxProducer, _supervisor = supervisor }); }
public ActorProcess( IActorProcessConfiguration configuration, IActorRegistry registry, ISupervisorStrategy supervisionStrategy) { _registry = registry; _supervisionStrategy = supervisionStrategy; _mailbox = new BlockingCollectionMailbox(this, registry); Configuration = configuration; _children = new List <IActorProcess>(); }
public LocalContext(Func <IActor> producer, ISupervisorStrategy supervisorStrategy, Receive receiveMiddleware, Sender senderMiddleware, PID parent) { _producer = producer; _supervisorStrategy = supervisorStrategy; _receiveMiddleware = receiveMiddleware; _senderMiddleware = senderMiddleware; //Parents are implicitly watching the child //The parent is not part of the Watchers set Parent = parent; IncarnateActor(); }
internal GuardianProcess(ISupervisorStrategy strategy) { _supervisorStrategy = strategy; var name = $"Guardian{ProcessRegistry.Instance.NextId()}"; var(pid, absent) = ProcessRegistry.Instance.TryAdd(name, this); if (!absent) { throw new ProcessNameExistException(name, pid); } Pid = pid; }
internal GuardianProcess(ActorSystem system, ISupervisorStrategy strategy) : base(system) { _supervisorStrategy = strategy; var name = $"Guardian{System.ProcessRegistry.NextId()}"; var(pid, ok) = System.ProcessRegistry.TryAdd(name, this); if (!ok) { throw new ProcessNameExistException(name, pid); } Pid = pid; }
public Context(Func <IActor> producer, ISupervisorStrategy supervisorStrategy, Receive receiveMiddleware, Sender senderMiddleware, PID parent) { _producer = producer; _supervisorStrategy = supervisorStrategy; _receiveMiddleware = receiveMiddleware; _senderMiddleware = senderMiddleware; Parent = parent; IncarnateActor(); //fast path if (parent != null) { _watchers = new FastSet <PID>(); _watchers.Add(parent); } }
public Context(Func <IActor> producer, ISupervisorStrategy supervisorStrategy, Receive receiveMiddleware, Sender senderMiddleware, PID parent) { _producer = producer; _supervisorStrategy = supervisorStrategy; _receiveMiddleware = receiveMiddleware; _senderMiddleware = senderMiddleware; Parent = parent; _behavior = new Stack <Receive>(); _behavior.Push(ActorReceive); IncarnateActor(); //fast path if (parent != null) { _watchers = new HashSet <PID> { parent }; } }
public RemoteActorProcess(IActorProcessConfiguration configuration, IActorRegistry registry, ISupervisorStrategy supervisionStrategy, ISerializer serializer) : base(configuration, registry, supervisionStrategy) { _remoteReaderEndpoint = new RemoteReaderEndpoint(this, serializer, registry); }
public Props WithSupervisor(ISupervisorStrategy supervisor) { return(Copy(supervisor: supervisor)); }