void ProcessChannel(IMqttChannel <byte[]> binaryChannel)
        {
            _tracer.Verbose(ServerProperties.Server_NewSocketAccepted);

            IMqttChannel <IPacket> packetChannel  = _channelFactory.Create(binaryChannel);
            ServerPacketListener   packetListener = new ServerPacketListener(packetChannel, _connectionProvider, _flowProvider, _configuration);

            packetListener.Listen();
            packetListener
            .PacketStream
            .Subscribe(_ => { }, ex =>
            {
                _tracer.Error(ex, ServerProperties.Server_PacketsObservableError);
                packetChannel.Dispose();
                packetListener.Dispose();
            }, () =>
            {
                _tracer.Warn(ServerProperties.Server_PacketsObservableCompleted);
                packetChannel.Dispose();
                packetListener.Dispose();
            }
                       );

            _channels.Add(packetChannel);
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                _channel.Dispose();
                _syncRoot.Dispose();
            }

            base.Dispose(disposing);
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                _channel?.Dispose();
                _writerSemaphore?.Dispose();
            }

            base.Dispose(disposing);
        }
Exemple #4
0
        public void Dispose()
        {
            if (_disposed)
            {
                return;
            }

            _tracer.Info(ClientProperties.Mqtt_Disposing(GetType().FullName));

            _subscription.Dispose();
            _receiver.OnCompleted();
            _innerChannel.Dispose();
            _disposed = true;
        }
Exemple #5
0
        void Close(DisconnectedReason reason, string message = null)
        {
            tracer.Info(Properties.Resources.Client_Disposing, Id, reason);

            receiver?.OnCompleted();
            packetsSubscription?.Dispose();
            packetListener?.Dispose();
            packetChannel?.Dispose();
            (clientSender as IDisposable)?.Dispose();
            IsConnected = false;
            Id          = null;

            Disconnected(this, new MqttEndpointDisconnected(reason, message));
        }
        protected virtual void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            if (disposing)
            {
                tracer.Info(Properties.Resources.Mqtt_Disposing, GetType().FullName);

                subscription.Dispose();
                receiver.OnCompleted();
                innerChannel.Dispose();
                disposed = true;
            }
        }
Exemple #7
0
        public void Dispose()
        {
            _isDisposed = true;

            _channel?.Dispose();
        }
Exemple #8
0
 public void Dispose()
 {
     _isDisposed = true;
     _semaphore?.Dispose();
     _channel?.Dispose();
 }