Akka.Interfaced.SlimServer.ActorBoundChannelRef.BindActor C# (CSharp) Method

BindActor() public method

public BindActor ( Akka actor, Akka types, Akka bindingFlags = (Akka.Interfaced.SlimServer.ActorBindingFlags)0 ) : Task
actor Akka
types Akka
bindingFlags Akka
return Task
        public Task<Akka.Interfaced.IRequestTarget> BindActor(Akka.Actor.IActorRef actor, Akka.Interfaced.SlimServer.TaggedType[] types, Akka.Interfaced.SlimServer.ActorBindingFlags bindingFlags = (Akka.Interfaced.SlimServer.ActorBindingFlags)0)
        {
            var requestMessage = new RequestMessage {
                InvokePayload = new IActorBoundChannel_PayloadTable.BindActor_Invoke { actor = actor, types = types, bindingFlags = bindingFlags }
            };
            return SendRequestAndReceive<Akka.Interfaced.IRequestTarget>(requestMessage);
        }

Same methods

ActorBoundChannelRef::BindActor ( Akka actor, Akka bindingFlags = (Akka.Interfaced.SlimServer.ActorBindingFlags)0 ) : Task

Usage Example

コード例 #1
0
 public static async Task <IRequestTarget> BindActorOrOpenChannel(
     this ActorBoundChannelRef channel, IActorRef actor, TaggedType[] types, ActorBindingFlags bindingFlags,
     string gatewayName, object tag, ActorBindingFlags bindingFlagsForOpenChannel)
 {
     if (string.IsNullOrEmpty(gatewayName) || (channel != null && channel.CastToIActorRef().Path.Address == actor.Path.Address))
     {
         // link an actor to channel directly
         return(await channel.BindActor(actor, types, bindingFlags));
     }
     else
     {
         // grant client to access an actor via gateway
         var gatewayRef = ((InternalActorRefBase)actor).Provider.ResolveActorRef(actor.Path.Root / "user" / gatewayName);
         var gateway    = new ActorBoundGatewayRef(new AkkaReceiverTarget(gatewayRef));
         return(await gateway.WithTimeout(TimeSpan.FromSeconds(10)).OpenChannel(actor, types, tag, bindingFlagsForOpenChannel));
     }
 }