public async Task StartAsync(CancellationToken cancellationToken) { switch (_store.Options.Events.Daemon.Mode) { case DaemonMode.Disabled: return; case DaemonMode.Solo: Coordinator = new SoloCoordinator(); break; case DaemonMode.HotCold: Coordinator = new HotColdCoordinator(_store, (DaemonSettings)_store.Options.Events.Daemon, _logger); break; } try { Agent = _store.BuildProjectionDaemon(_logger); await Coordinator.Start(Agent, cancellationToken); } catch (Exception e) { _logger.LogError(e, "Unable to start the asynchronous projection agent"); throw; } }
public ServerNode(INetProvider externalNetProvider, INetProvider internalNetProvider, INodeCoordinator coordinator, IMessageFactory factory, IOperationDispatcher protocol, IActorRepository repository, Func <S2CPeer> clientPeerFactory) { _coordinator = coordinator; Repository = repository; Dispatcher = protocol; DefaultActorCoordinator = typeof(IsisActorCoordinator); ExternalNet = new NetNode <S2CPeer>(externalNetProvider, factory, protocol, peerFactory: () => { S2CPeer peer = clientPeerFactory(); peer.Node = this; return(peer); }); InternalNet = new NetNode <S2SPeer>(internalNetProvider, factory, protocol, peerFactory: () => new S2SPeer { Node = this }); foreach (ActorDescription actorDesc in repository.ActorDescriptions) { Type coordinatorType = actorDesc.Attribute.Coordinator ?? DefaultActorCoordinator; var actorCoord = (IActorCoordinator)Activator.CreateInstance(coordinatorType); actorCoord.Init(this, actorDesc.PrimaryContract.TypeId); _actorCoordinatorsByPrimaryContractId.Add(actorDesc.PrimaryContract.TypeId, actorCoord); } Fiber = new ServerFiber(); }
public AsyncProjectionHostedService(INodeAgent agent, INodeCoordinator coordinator, ILogger <AsyncProjectionHostedService> logger) { _agent = agent; _coordinator = coordinator; _logger = logger; }
public async Task RegisterCoordinator(INodeCoordinator coordinator) { await coordinator.Start(this, _cancellation.Token); _coordinator = coordinator; }