public AuthKeyNegotiator(
            [NotNull] IClientTransportConfig clientTransportConfig,
            [NotNull] IMTProtoClientBuilder mtProtoBuilder,
            [NotNull] TLRig tlRig,
            [NotNull] INonceGenerator nonceGenerator,
            [NotNull] IHashServices hashServices,
            [NotNull] IEncryptionServices encryptionServices,
            [NotNull] IKeyChain keyChain)
        {
            Argument.IsNotNull(() => clientTransportConfig);
            Argument.IsNotNull(() => mtProtoBuilder);
            Argument.IsNotNull(() => tlRig);
            Argument.IsNotNull(() => nonceGenerator);
            Argument.IsNotNull(() => hashServices);
            Argument.IsNotNull(() => encryptionServices);
            Argument.IsNotNull(() => keyChain);

            _clientTransportConfig = clientTransportConfig;
            _mtProtoBuilder        = mtProtoBuilder;
            _tlRig              = tlRig;
            _nonceGenerator     = nonceGenerator;
            _hashServices       = hashServices;
            _encryptionServices = encryptionServices;
            _keyChain           = keyChain;
        }
        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);
        }
 IAuthKeyNegotiator IMTProtoClientBuilder.BuildAuthKeyNegotiator(IClientTransportConfig clientTransportConfig)
 {
     return new AuthKeyNegotiator(clientTransportConfig,
         this,
         _tlRig,
         _nonceGenerator,
         _hashServices,
         _encryptionServices,
         _keyChain);
 }
 IAuthKeyNegotiator IMTProtoClientBuilder.BuildAuthKeyNegotiator(IClientTransportConfig clientTransportConfig)
 {
     return new AuthKeyNegotiator(clientTransportConfig,
         this,
         _tlRig,
         _nonceGenerator,
         _hashServices,
         _encryptionServices,
         _keyChain);
 }
        public IClientTransport CreateTransport(IClientTransportConfig clientTransportConfig)
        {
            // TCP.
            var tcpTransportConfig = clientTransportConfig as TcpClientTransportConfig;
            if (tcpTransportConfig != null)
            {
                return new TcpClientTransport(tcpTransportConfig);
            }

            throw new NotSupportedException(string.Format("Transport type '{0}' is not supported.", clientTransportConfig.TransportName));
        }
Example #6
0
        public IClientTransport CreateTransport(IClientTransportConfig clientTransportConfig)
        {
            // TCP.
            var tcpTransportConfig = clientTransportConfig as TcpClientTransportConfig;

            if (tcpTransportConfig != null)
            {
                return(new TcpClientTransport(tcpTransportConfig));
            }

            throw new NotSupportedException(string.Format("Transport type '{0}' is not supported.", clientTransportConfig.TransportName));
        }
Example #7
0
        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;
                }
            });
        }
Example #8
0
        public TelegramClient(IClientTransportConfig transportConfig,
                              ConnectionConfig connectionConfig,
                              TelegramAppInfo appInfo,
                              IMTProtoClientBuilder builder = null)
        {
            if (builder == null)
            {
                builder = MTProtoClientBuilder.Default;
            }

            _transportConfig = transportConfig;
            _appInfo         = appInfo;
            _connection      = builder.BuildConnection(_transportConfig);
            _connection.Configure(connectionConfig);
            _methods = new TelegramAsyncMethods(_connection);
        }
        public TelegramClient(IClientTransportConfig transportConfig,
            ConnectionConfig connectionConfig,
            TelegramAppInfo appInfo,
            IMTProtoClientBuilder builder = null)
        {
            if (builder == null)
            {
                builder = MTProtoClientBuilder.Default;
            }

            _transportConfig = transportConfig;
            _appInfo = appInfo;
            _connection = builder.BuildConnection(_transportConfig);
            _connection.Configure(connectionConfig);
            _methods = new TelegramAsyncMethods(_connection);
        }
 public AuthKeyNegotiator(
     [NotNull] IClientTransportConfig clientTransportConfig,
     [NotNull] IMTProtoClientBuilder mtProtoBuilder,
     [NotNull] TLRig tlRig,
     [NotNull] INonceGenerator nonceGenerator,
     [NotNull] IHashServices hashServices,
     [NotNull] IEncryptionServices encryptionServices,
     [NotNull] IKeyChain keyChain)
 {
     _clientTransportConfig = clientTransportConfig;
     _mtProtoBuilder = mtProtoBuilder;
     _tlRig = tlRig;
     _nonceGenerator = nonceGenerator;
     _hashServices = hashServices;
     _encryptionServices = encryptionServices;
     _keyChain = keyChain;
 }
 IMTProtoClientConnection IMTProtoClientBuilder.BuildConnection(IClientTransportConfig clientTransportConfig)
 {
     return new MTProtoClientConnection(clientTransportConfig, _clientTransportFactory, _tlRig, _messageIdGenerator, _messageCodec);
 }
 IMTProtoClientConnection IMTProtoClientBuilder.BuildConnection(IClientTransportConfig clientTransportConfig)
 {
     return new MTProtoClientConnection(clientTransportConfig, _clientTransportFactory, _tlRig, _messageIdGenerator, _messageCodec);
 }
 public static IMTProtoClientConnection BuildConnection([NotNull] IClientTransportConfig clientTransportConfig)
 {
     return Default.BuildConnection(clientTransportConfig);
 }
 public static IAuthKeyNegotiator BuildAuthKeyNegotiator([NotNull] IClientTransportConfig clientTransportConfig)
 {
     return Default.BuildAuthKeyNegotiator(clientTransportConfig);
 }