Exemplo n.º 1
0
        private Task RegisterHandler <TMessage, THandler>(Func <IActorRef, IMessageProcessor> processorCreator) where THandler : IHandler <TMessage>
            where TMessage : class, IHaveProcessId, IHaveId
        {
            var handlerActorType = typeof(MessageHandleActor <TMessage, THandler>);
            var handlerActor     = CreateDIActor(handlerActorType, handlerActorType.BeautyName());

            _handlersCatalog.Add <TMessage>(processorCreator(handlerActor));
            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        public Task RegisterProcess(IProcessDescriptor processDescriptor, string name = null)
        {
            var processHubActorType = typeof(ProcessHubActor <>).MakeGenericType(processDescriptor.StateType);
            var processHubActor     = CreateDIActor(processHubActorType, name ?? processDescriptor.ProcessType.BeautyName() + "_Hub");

            var processStateHubType = typeof(ProcessStateHubActor <>).MakeGenericType(processDescriptor.StateType);
            //will be consumed in ProcessActor
            var processStateHubActor = CreateDIActor(processStateHubType, processDescriptor.StateType.BeautyName() + "_Hub");

            var processor = new ActorAskMessageProcessor <IProcessCompleted>(processHubActor);


            foreach (var acceptMsg in processDescriptor.AcceptMessages)
            {
                _processCatalog.Add(acceptMsg.MessageType, processor);
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 3
0
 public static void Add <TMessage>(this ICompositeMessageProcessor proc, IMessageProcessor messageProcessor)
 {
     proc.Add(typeof(TMessage), messageProcessor);
 }