public ActorDirectory(
            ActorDescription centerActor, IActorChannel centerChannel,
            IActorMessageEncoder encoder, IActorMessageDecoder decoder)
        {
            if (centerActor == null)
            {
                throw new ArgumentNullException("centerActor");
            }
            if (centerChannel == null)
            {
                throw new ArgumentNullException("centerChannel");
            }
            if (encoder == null)
            {
                throw new ArgumentNullException("encoder");
            }
            if (decoder == null)
            {
                throw new ArgumentNullException("decoder");
            }

            _centerActor   = centerActor;
            _centerChannel = centerChannel;
            _encoder       = encoder;
            _decoder       = decoder;
        }
        private ConcurrentDictionary <string, string> _actorKeys = new ConcurrentDictionary <string, string>();                        // ActorKey -> SessionKey

        public ActorListenerChannel(
            ActorDescription localActor, ActorTransportListener localListener,
            IActorMessageEncoder encoder, IActorMessageDecoder decoder)
        {
            if (localActor == null)
            {
                throw new ArgumentNullException("localActor");
            }
            if (localListener == null)
            {
                throw new ArgumentNullException("localListener");
            }
            if (encoder == null)
            {
                throw new ArgumentNullException("encoder");
            }
            if (decoder == null)
            {
                throw new ArgumentNullException("decoder");
            }

            _localActor = localActor;
            _listener   = localListener;
            _encoder    = encoder;
            _decoder    = decoder;
        }
예제 #3
0
        public static MessageEnvelope Marshal <T>(this MessageEnvelope <T> envelope, IActorMessageEncoder encoder)
        {
            var message = envelope.ConvertToNonGeneric();

            message.Body = encoder.EncodeMessage(envelope.Message);
            return(message);
        }
예제 #4
0
 public BlockingRouteActor(
     ActorConfiguration configuration,
     IActorMessageEncoder encoder,
     IActorMessageDecoder decoder)
     : base(configuration, encoder, decoder)
 {
 }
        public ActorConnectorChannel(
            ActorDescription localActor, ActorTransportConnector remoteConnector,
            IActorMessageEncoder encoder, IActorMessageDecoder decoder)
        {
            if (localActor == null)
            {
                throw new ArgumentNullException("localActor");
            }
            if (remoteConnector == null)
            {
                throw new ArgumentNullException("remoteConnector");
            }
            if (encoder == null)
            {
                throw new ArgumentNullException("encoder");
            }
            if (decoder == null)
            {
                throw new ArgumentNullException("decoder");
            }

            _localActor = localActor;
            _connector  = remoteConnector;
            _encoder    = encoder;
            _decoder    = decoder;
        }
 public ActorConnectorReconnectableChannel(
     ActorDescription localActor, ActorTransportConnector remoteConnector,
     IActorMessageEncoder encoder, IActorMessageDecoder decoder)
     : base(localActor, remoteConnector, encoder, decoder)
 {
     this.RetryPeriod = TimeSpan.FromSeconds(15);
 }
예제 #7
0
 public RouteActor(
     ActorConfiguration configuration,
     IActorMessageEncoder encoder,
     IActorMessageDecoder decoder)
     : base(configuration)
 {
     _encoder = encoder;
     _decoder = decoder;
 }
        public ActorConfiguration(IActorMessageEncoder encoder, IActorMessageDecoder decoder)
        {
            if (encoder == null)
            {
                throw new ArgumentNullException("encoder");
            }
            if (decoder == null)
            {
                throw new ArgumentNullException("decoder");
            }

            _encoder = encoder;
            _decoder = decoder;
        }
예제 #9
0
파일: RpcActor.cs 프로젝트: kuacci/Redola
        public RpcActor(ActorConfiguration configuration, IActorMessageEncoder encoder, IActorMessageDecoder decoder)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }
            if (encoder == null)
            {
                throw new ArgumentNullException("encoder");
            }
            if (decoder == null)
            {
                throw new ArgumentNullException("decoder");
            }

            _localActor = new BlockingRouteActor(configuration, encoder, decoder);
        }
예제 #10
0
        public ActorChannelFactory(
            ActorDirectory directory,
            IActorMessageEncoder encoder, IActorMessageDecoder decoder)
        {
            if (directory == null)
            {
                throw new ArgumentNullException("directory");
            }
            if (encoder == null)
            {
                throw new ArgumentNullException("encoder");
            }
            if (decoder == null)
            {
                throw new ArgumentNullException("decoder");
            }

            _directory = directory;
            _encoder   = encoder;
            _decoder   = decoder;
        }
예제 #11
0
        public void Bootup(IActorMessageEncoder encoder, IActorMessageDecoder decoder)
        {
            if (encoder == null)
            {
                throw new ArgumentNullException("encoder");
            }
            if (decoder == null)
            {
                throw new ArgumentNullException("decoder");
            }

            if (_localActor != null)
            {
                throw new InvalidOperationException("Already bootup.");
            }

            var configruation = new RpcActorConfiguration();

            configruation.Build();

            _localActor = new BlockingRouteActor(configruation, encoder, decoder);
            _localActor.Bootup();
        }
예제 #12
0
 public static byte[] ToBytes <T>(this ActorMessageEnvelope <T> envelope, IActorMessageEncoder encoder)
 {
     return(ToBytes(Marshal(envelope, encoder), encoder));
 }
예제 #13
0
 public static byte[] ToBytes(this ActorMessageEnvelope envelope, IActorMessageEncoder encoder)
 {
     return(encoder.EncodeMessage(envelope));
 }