public StreamAssociationHandle(StreamTransportSettings settings, Stream stream, Address localAddress, Address remoteAddress, object state) : base(localAddress, remoteAddress) { _settings = settings; _stream = stream; _state = state; _writeQueue = new AsyncQueue <ByteString>(settings.RemoteDispatcher); _readBuffer = new byte[settings.StreamReadBufferSize]; _writeBuffer = new byte[settings.StreamWriteBufferSize]; _initialized = new TaskCompletionSource <bool>(); _disassociated = new TaskCompletionSource <bool>(); _stopped = Task.Run(() => StopRunner()); _writeLoop = Task.Run(() => WriteLoop()); _readLoop = Task.Run(() => ReadLoop()); }
protected StreamTransport(ActorSystem system, StreamTransportSettings settings) { _cancellation = new CancellationTokenSource(); System = system; Config = settings.Config; Settings = settings; Settings.Log = Logging.GetLogger(System, this); var dispatcherId = System.Settings.Config.GetString("akka.remote.use-dispatcher"); if (dispatcherId == null) { throw new InvalidOperationException("The setting 'akka.remote.use-dispatcher' is missing from config."); } if (!System.Dispatchers.HasDispatcher(dispatcherId)) { throw new InvalidOperationException($"Dispatcher '{dispatcherId}' is missing from config."); } Settings.RemoteDispatcher = System.Dispatchers.Lookup(dispatcherId); Settings.FlushWaitTimeout = System.Settings.Config.GetTimeSpan("akka.remote.flush-wait-on-shutdown"); }