예제 #1
0
 public void Dispose()
 {
     _appChannel.Dispose();
     _opChannel.Dispose();
     _appReader.Close();
     _opReader.Close();
 }
예제 #2
0
        //=========================================
        // Stoppable
        //=========================================

        public override void Stop()
        {
            if (_cancellable != null)
            {
                _cancellable.Cancel();
                _cancellable = null;
            }

            _reader?.Close();

            base.Stop();
        }
예제 #3
0
        //=========================================
        // Startable
        //=========================================

        public override void Start()
        {
            if (IsStopped)
            {
                return;
            }

            Logger.Debug($"Inbound stream listening: for '{_reader.Name}'");

            try
            {
                _reader.OpenFor(this);
            }
            catch (Exception e)
            {
                _reader.Close();
                Logger.Error("OpenFor failed", e);
                throw new InvalidOperationException(e.Message, e);
            }

            _cancellable = Stage.Scheduler.Schedule(SelfAs <IScheduled <object?> >(), null, TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(_probeInterval));
        }
 public void Dispose()
 {
     _channelWriter.Close();
     _channelReader.Close();
 }