コード例 #1
0
        StreamSubscriptionSpecification(Type actor, string provider, Func <string, string> matcher, Func <object, string> selector = null, Func <object, bool> filter = null)
        {
            Requires.NotNullOrWhitespace(provider, nameof(provider));
            Requires.NotNull(matcher, nameof(matcher));

            Interface = ActorGrain.InterfaceOf(actor);
            Provider  = provider;

            this.matcher  = matcher;
            this.selector = selector;

            this.filter = filter ?? (x => true);
        }
コード例 #2
0
            public override Task <object> Receive(ActorGrain actor, object message, Func <object, Task <object> > receiver)
            {
                switch (message)
                {
                case SetText msg:

                    if (msg.Text == "interrupt")
                    {
                        throw new InvalidOperationException();
                    }

                    msg.Text += ".intercepted";
                    break;

                case StreamItem item:
                    item.Text += ".intercepted";
                    break;
                }

                return(Next.Receive(actor, message, receiver));
            }
コード例 #3
0
 internal TimerService(ActorGrain grain)
 {
     this.grain    = grain;
     this.registry = grain.Runtime().TimerRegistry;
 }
コード例 #4
0
 public Supervision(ActorGrain actor, TimeSpan?pingback = null)
 {
     this.actor    = actor;
     this.pingback = pingback ?? TimeSpan.FromMinutes(1);
     reminderName  = $"{actor.GetType().Name}_keepalive";
 }
コード例 #5
0
ファイル: ActorMiddleware.cs プロジェクト: stantoxt/Orleankka
 public Task <object> Receive(ActorGrain actor, object message, Receive receiver) =>
 receiver(message);
コード例 #6
0
 internal BackgroundJobService(ActorGrain host)
 {
     Requires.NotNull(host, nameof(host));
     this.host = host;
 }