INTERNAL API A Codec that is able to convert Akka PDUs from and to ByteString
Пример #1
0
 /// <summary>
 /// Constructor for outbound ProtocolStateActors
 /// </summary>
 public ProtocolStateActor(HandshakeInfo handshakeInfo, Address remoteAddress,
                           TaskCompletionSource <AssociationHandle> statusCompletionSource, Transport transport,
                           AkkaProtocolSettings settings, AkkaPduCodec codec, FailureDetector failureDetector, int?refuseUid = null)
     : this(
         new OutboundUnassociated(remoteAddress, statusCompletionSource, transport), handshakeInfo, settings, codec, failureDetector,
         refuseUid)
 {
 }
Пример #2
0
 public AkkaProtocolHandle(Address originalLocalAddress, Address originalRemoteAddress,
                           TaskCompletionSource <IHandleEventListener> readHandlerCompletionSource, AssociationHandle wrappedHandle,
                           HandshakeInfo handshakeInfo, ActorRef stateActor, AkkaPduCodec codec)
     : base(originalLocalAddress, originalRemoteAddress, wrappedHandle, RemoteSettings.AkkaScheme)
 {
     HandshakeInfo     = handshakeInfo;
     StateActor        = stateActor;
     ReadHandlerSource = readHandlerCompletionSource;
     Codec             = codec;
 }
Пример #3
0
 /// <summary>
 /// Common constructor used by both the outbound and the inboud cases
 /// </summary>
 protected ProtocolStateActor(InitialProtocolStateData initialData, HandshakeInfo localHandshakeInfo, AkkaProtocolSettings settings, AkkaPduCodec codec, FailureDetector failureDetector, int?refuseUid)
 {
     _initialData        = initialData;
     _localHandshakeInfo = localHandshakeInfo;
     _settings           = settings;
     _refuseUid          = refuseUid;
     _localAddress       = _localHandshakeInfo.Origin;
     _codec           = codec;
     _failureDetector = failureDetector;
     InitializeFSM();
 }
Пример #4
0
        public EndpointWriter(
            AkkaProtocolHandle handleOrActive, 
            Address localAddress, 
            Address remoteAddress,
            int? refuseUid, 
            AkkaProtocolTransport transport, 
            RemoteSettings settings,
            AkkaPduCodec codec, 
            ConcurrentDictionary<EndpointManager.Link, EndpointManager.ResendState> receiveBuffers,
            IActorRef reliableDeliverySupervisor = null) :
            base(localAddress, remoteAddress, transport, settings)
        {
            _handleOrActive = handleOrActive;
            _refuseUid = refuseUid;
            _codec = codec;
            _reliableDeliverySupervisor = reliableDeliverySupervisor;
            _system = Context.System;
            _provider = RARP.For(Context.System).Provider;
            _msgDispatcher = new DefaultMessageDispatcher(_system, _provider, _log);
            _receiveBuffers = receiveBuffers;
            Inbound = handleOrActive != null;
            _ackDeadline = NewAckDeadline();
            _handle = handleOrActive;

            if (_handle == null)
            {
                Context.Become(Initializing);
            }
            else
            {
                Context.Become(Writing);
            }
        }
Пример #5
0
 public static Props ReliableDeliverySupervisorProps(
     AkkaProtocolHandle handleOrActive, 
     Address localAddress, 
     Address remoteAddress,
     int? refuseUid, 
     AkkaProtocolTransport transport, 
     RemoteSettings settings, 
     AkkaPduCodec codec, 
     ConcurrentDictionary<EndpointManager.Link, EndpointManager.ResendState> receiveBuffers,
     string dispatcher)
 {
     return
         Props.Create(
             () =>
                 new ReliableDeliverySupervisor(handleOrActive, localAddress, remoteAddress, refuseUid, transport,
                     settings, codec, receiveBuffers))
                     .WithDispatcher(dispatcher);
 }
Пример #6
0
 public ReliableDeliverySupervisor(
     AkkaProtocolHandle handleOrActive, 
     Address localAddress, 
     Address remoteAddress,
     int? refuseUid, 
     AkkaProtocolTransport transport, 
     RemoteSettings settings, 
     AkkaPduCodec codec, 
     ConcurrentDictionary<EndpointManager.Link, EndpointManager.ResendState> receiveBuffers)
 {
     this.handleOrActive = handleOrActive;
     _localAddress = localAddress;
     _remoteAddress = remoteAddress;
     _refuseUid = refuseUid;
     _transport = transport;
     _settings = settings;
     this.codec = codec;
     _currentHandle = handleOrActive;
     _receiveBuffers = receiveBuffers;
     Reset();
     _writer = CreateWriter();
     Uid = handleOrActive != null ? (int?)handleOrActive.HandshakeInfo.Uid : null;
     UidConfirmed = Uid.HasValue;
 }
Пример #7
0
 public static Props ReaderProps(
     Address localAddress, 
     Address remoteAddress, 
     AkkaProtocolTransport transport,
     RemoteSettings settings, 
     AkkaPduCodec codec, 
     IInboundMessageDispatcher dispatcher, 
     bool inbound, 
     int uid,
     ConcurrentDictionary<EndpointManager.Link, EndpointManager.ResendState> receiveBuffers,
     IActorRef reliableDeliverySupervisor = null)
 {
     return
         Props.Create(
             () =>
                 new EndpointReader(localAddress, remoteAddress, transport, settings, codec, dispatcher, inbound,
                     uid, receiveBuffers, reliableDeliverySupervisor))
                     .WithDispatcher(settings.Dispatcher);
 }
Пример #8
0
 public EndpointReader(
     Address localAddress, 
     Address remoteAddress, 
     AkkaProtocolTransport transport,
     RemoteSettings settings, 
     AkkaPduCodec codec, 
     IInboundMessageDispatcher msgDispatch, 
     bool inbound,
     int uid, 
     ConcurrentDictionary<EndpointManager.Link, EndpointManager.ResendState> receiveBuffers,
     IActorRef reliableDeliverySupervisor = null) :
     base(localAddress, remoteAddress, transport, settings)
 {
     _receiveBuffers = receiveBuffers;
     _msgDispatch = msgDispatch;
     Inbound = inbound;
     _uid = uid;
     _reliableDeliverySupervisor = reliableDeliverySupervisor;
     _codec = codec;
     _provider = RARP.For(Context.System).Provider;
 }
Пример #9
0
 public static Props EndpointWriterProps(AkkaProtocolHandle handleOrActive, Address localAddress,
     Address remoteAddress, int? refuseUid, AkkaProtocolTransport transport, RemoteSettings settings,
     AkkaPduCodec codec, ConcurrentDictionary<EndpointManager.Link, EndpointManager.ResendState> receiveBuffers, IActorRef reliableDeliverySupervisor = null)
 {
     return Props.Create(
         () =>
             new EndpointWriter(handleOrActive, localAddress, remoteAddress, refuseUid, transport, settings,
                 codec, receiveBuffers, reliableDeliverySupervisor));
 }
Пример #10
0
 public static Props InboundProps(HandshakeInfo handshakeInfo, AssociationHandle wrappedHandle,
                                  IAssociationEventListener associationEventListener, AkkaProtocolSettings settings, AkkaPduCodec codec, FailureDetector failureDetector)
 {
     return
         (Props.Create(
              () =>
              new ProtocolStateActor(handshakeInfo, wrappedHandle, associationEventListener, settings, codec, failureDetector)));
 }
Пример #11
0
 public static Props OutboundProps(HandshakeInfo handshakeInfo, Address remoteAddress,
                                   TaskCompletionSource <AssociationHandle> statusCompletionSource,
                                   Transport transport, AkkaProtocolSettings settings, AkkaPduCodec codec, FailureDetector failureDetector, int?refuseUid = null)
 {
     return(Props.Create(() => new ProtocolStateActor(handshakeInfo, remoteAddress, statusCompletionSource, transport, settings, codec, failureDetector, refuseUid)));
 }
Пример #12
0
 /// <summary>
 /// Constructor for inbound ProtocolStateActors
 /// </summary>
 public ProtocolStateActor(HandshakeInfo handshakeInfo, AssociationHandle wrappedHandle, IAssociationEventListener associationEventListener, AkkaProtocolSettings settings, AkkaPduCodec codec, FailureDetector failureDetector)
     : this(new InboundUnassociated(associationEventListener, wrappedHandle), handshakeInfo, settings, codec, failureDetector, refuseUid : null)
 {
 }
Пример #13
0
 public AkkaProtocolTransport(Transport wrappedTransport, ActorSystem system, AkkaProtocolSettings settings, AkkaPduCodec codec)
     : base(wrappedTransport, system)
 {
     Codec    = codec;
     Settings = settings;
 }
Пример #14
0
 public ReliableDeliverySupervisor(
     AkkaProtocolHandle handleOrActive,
     Address localAddress,
     Address remoteAddress,
     int? refuseUid,
     AkkaProtocolTransport transport,
     RemoteSettings settings,
     AkkaPduCodec codec,
     ConcurrentDictionary<EndpointManager.Link, EndpointManager.ResendState> receiveBuffers)
 {
     _localAddress = localAddress;
     _remoteAddress = remoteAddress;
     _refuseUid = refuseUid;
     _transport = transport;
     _settings = settings;
     _codec = codec;
     _currentHandle = handleOrActive;
     _receiveBuffers = receiveBuffers;
     Reset(); // needs to be called at startup
     _writer = CreateWriter(); // need to create writer at startup
     Uid = handleOrActive != null ? (int?)handleOrActive.HandshakeInfo.Uid : null;
     UidConfirmed = Uid.HasValue;
     Receiving();
     _autoResendTimer = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(_settings.SysResendTimeout, _settings.SysResendTimeout, Self, new AttemptSysMsgRedelivery(),
             Self);
 }