/// <summary> /// TBD /// </summary> /// <param name="manager">TBD</param> /// <param name="associationHandler">TBD</param> /// <param name="originalHandle">TBD</param> /// <param name="inbound">TBD</param> public ThrottledAssociation(IActorRef manager, IAssociationEventListener associationHandler, AssociationHandle originalHandle, bool inbound) { _codec = new AkkaPduProtobuffCodec(Context.System); Manager = manager; AssociationHandler = associationHandler; OriginalHandle = originalHandle; Inbound = inbound; InitializeFSM(); }
protected void Init(IChannel channel, IPEndPoint remoteSocketAddress, Address remoteAddress, object msg, out AssociationHandle op) { var localAddress = DotNettyTransport.MapSocketToAddress((IPEndPoint)channel.LocalAddress, Transport.SchemeIdentifier, Transport.System.Name, Transport.Settings.Hostname); if (localAddress != null) { var handle = CreateHandle(channel, localAddress, remoteAddress); handle.ReadHandlerSource.Task.ContinueWith(s => { var listener = s.Result; RegisterListener(channel, listener, msg, remoteSocketAddress); channel.Configuration.AutoRead = true; // turn reads back on }, TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.NotOnCanceled | TaskContinuationOptions.NotOnFaulted); op = handle; } else { op = null; channel.CloseAsync(); } }
protected void Init(IConnection channel, INode remoteSocketAddress, Address remoteAddress, NetworkData msg, out AssociationHandle op) { var localAddress = HeliosTransport.NodeToAddress(channel.Local, WrappedTransport.SchemeIdentifier, WrappedTransport.System.Name, WrappedTransport.Settings.Hostname); if (localAddress != null) { var handle = CreateHandle(channel, localAddress, remoteAddress); handle.ReadHandlerSource.Task.ContinueWith(s => { var listener = s.Result; RegisterListener(channel, listener, msg, remoteSocketAddress); }, TaskContinuationOptions.AttachedToParent & TaskContinuationOptions.ExecuteSynchronously & TaskContinuationOptions.NotOnCanceled & TaskContinuationOptions.NotOnFaulted); op = handle; } else { op = null; channel.Close(); } }
protected void Init(IChannel channel, IPEndPoint remoteSocketAddress, Address remoteAddress, object msg, out AssociationHandle op) { var localAddress = HeliosTransport.MapSocketToAddress((IPEndPoint)channel.LocalAddress, WrappedTransport.SchemeIdentifier, WrappedTransport.System.Name, WrappedTransport.Settings.Hostname); if (localAddress != null) { var handle = CreateHandle(channel, localAddress, remoteAddress); handle.ReadHandlerSource.Task.ContinueWith(s => { var listener = s.Result; RegisterListener(channel, listener, msg, remoteSocketAddress); channel.Configuration.AutoRead = true; // turn reads back on }, TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.NotOnCanceled | TaskContinuationOptions.NotOnFaulted); op = handle; } else { op = null; channel.CloseAsync(); } }
/// <summary> /// TBD /// </summary> /// <param name="wrappedHandle">TBD</param> /// <param name="throttlerActor">TBD</param> public ThrottlerHandle(AssociationHandle wrappedHandle, IActorRef throttlerActor) : base(wrappedHandle, ThrottleTransportAdapter.Scheme) { ThrottlerActor = throttlerActor; }
protected virtual void Initialize(IChannel channel, IPEndPoint remoteSocketAddress, Address remoteAddress, object msg, out AssociationHandle handle) { var localAddress = Helpers.MapSocketToAddress(channel.LocalAddress as IPEndPoint, this.Transport.SchemeIdentifier, this.Transport.System.Name, this.Transport.Settings.Host); if (localAddress != null) { handle = new TcpAssociationHandle(localAddress, remoteAddress, channel); handle.ReadHandlerSource.Task.ContinueWith(task => { this.listener = task.Result; channel.Configuration.AutoRead = true; }, ReaderHandlerSourceContinuationOptions); } else { handle = null; channel.CloseAsync(); } }