public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            switch (options.ChannelOptions)
            {
            case MqttClientTcpOptions tcpOptions:
            {
                var endpoint      = new DnsEndPoint(tcpOptions.Server, tcpOptions.GetPort());
                var tcpConnection = new TcpConnection(endpoint);

                var writer    = new SpanBasedMqttPacketWriter();
                var formatter = new MqttPacketFormatterAdapter(options.ProtocolVersion, writer);
                return(new MqttConnectionContext(formatter, tcpConnection));
            }

            default:
            {
                throw new NotSupportedException();
            }
            }
        }
Example #2
0
        public async Task OnConnectedAsync(ConnectionContext connection)
        {
            try
            {
                var writer    = new SpanBasedMqttPacketWriter();
                var formatter = new MqttPacketFormatterAdapter(writer);
                var context   = new MqttConnectionContext(formatter, connection);
                Context.TrySetResult(context);

                await ClientHandler(context);
            }
            catch (Exception ex)
            {
                Context.TrySetException(ex);
            }
        }