Ejemplo n.º 1
0
        public async Task <object> Fire(object message)
        {
            Requires.NotNull(message, nameof(message));

            if (TimerService.IsExecuting() || mocked)
            {
                RequestOrigin.Store(Current);
                return(await actor.Self.Ask <object>(message));
            }

            return(await HandleReceive(message, new RequestOrigin(Current)));
        }
Ejemplo n.º 2
0
        public Task <object> HandleReceive(Actor actor, object message, RequestOrigin origin)
        {
            if (IsNull())
            {
                return(onReceiveAny(actor, message));
            }

            var handler = TryFindReceiveHandler(message);

            if (handler != null)
            {
                return(handler.Invoke(actor, message));
            }

            handler = TryFindReceiveAnyHandler();
            return(handler != null
                       ? handler(actor, message)
                       : actor.OnUnhandledReceive(origin, message));
        }
Ejemplo n.º 3
0
        public Task <object> HandleReceive(Actor actor, object message, RequestOrigin origin, Func <Type, object, string, RequestOrigin, Task <object> > fallback)
        {
            if (IsNull())
            {
                return(onReceiveAny(actor, message));
            }

            var handler = TryFindReceiveHandler(message);

            if (handler != null)
            {
                return(handler.Invoke(actor, message));
            }

            handler = TryFindReceiveAnyHandler();
            return(handler != null
                       ? handler(actor, message)
                       : fallback(actor.GetType(), message, Name, origin));
        }
Ejemplo n.º 4
0
 internal Task <object> HandleReceive(object message, RequestOrigin origin) =>
 current.HandleReceive(actor, message, origin, onUnhandledReceive ?? OnUnhandledReceiveDefaultCallback);
Ejemplo n.º 5
0
 internal Task <object> HandleReceive(object message) =>
 HandleReceive(message, RequestOrigin.Restore());
Ejemplo n.º 6
0
 internal Task <object> HandleReceive(object message, RequestOrigin origin) =>
 current.HandleReceive(actor, message, origin);