public MTProtoClientConnection( [NotNull] IClientTransportConfig clientTransportConfig, [NotNull] IClientTransportFactory clientTransportFactory, [NotNull] TLRig tlRig, [NotNull] IMessageIdGenerator messageIdGenerator, [NotNull] IMessageCodec messageCodec) { Argument.IsNotNull(() => clientTransportConfig); Argument.IsNotNull(() => clientTransportFactory); Argument.IsNotNull(() => tlRig); Argument.IsNotNull(() => messageIdGenerator); Argument.IsNotNull(() => messageCodec); _tlRig = tlRig; _messageIdGenerator = messageIdGenerator; _messageCodec = messageCodec; DefaultRpcTimeout = Defaults.RpcTimeout; DefaultConnectTimeout = Defaults.ConnectTimeout; _methods = new MTProtoAsyncMethods(this); InitResponseDispatcher(_responseDispatcher); // Init transport. _clientTransport = clientTransportFactory.CreateTransport(clientTransportConfig); // Connector in/out. _clientTransport.ObserveOn(DefaultScheduler.Instance).Do(bytes => LogMessageInOut(bytes, "IN")).Subscribe(ProcessIncomingMessageBytes); }
public MTProtoClientConnection( [NotNull] IClientTransportConfig clientTransportConfig, [NotNull] IClientTransportFactory clientTransportFactory, [NotNull] TLRig tlRig, [NotNull] IMessageIdGenerator messageIdGenerator, [NotNull] IMessageCodec messageCodec) { _tlRig = tlRig; _messageIdGenerator = messageIdGenerator; _messageCodec = messageCodec; DefaultRpcTimeout = Defaults.RpcTimeout; DefaultConnectTimeout = Defaults.ConnectTimeout; _methods = new MTProtoAsyncMethods(this); _updatesHandler = new UpdatesHandler(_tlRig); InitResponseDispatcher(_responseDispatcher); // Init transport. _clientTransport = clientTransportFactory.CreateTransport(clientTransportConfig); // Connector in/out. _clientTransport.ObserveOn(DefaultScheduler.Instance).Do(bytes => LogMessageInOut(bytes, "IN")).Subscribe(ProcessIncomingMessageBytes); _clientTransport.RegisterOnDisconnectInternally(() => { Console.WriteLine("Client has been closed internally."); if (_onClosedInternally != null) { _onClosedInternally(this, null); } if (_state == MTProtoConnectionState.Disconnected) { return; } _state = MTProtoConnectionState.Disconnected; if (_connectionCts != null) { _connectionCts.Cancel(); _connectionCts.Dispose(); _connectionCts = null; } }); }