public void HttpWaitAsync(TLInt maxDelay, TLInt waitAfter, TLInt maxWait, Action callback, Action faultCallback) { PrintCaption("http_wait"); var obj = new TLHttpWait { MaxDelay = maxDelay, WaitAfter = waitAfter, MaxWait = maxWait }; var authKey = _activeTransport.AuthKey; var salt = _activeTransport.Salt; var sessionId = _activeTransport.SessionId; int sequenceNumber; TLLong messageId; lock (_activeTransportRoot) { sequenceNumber = _activeTransport.SequenceNumber * 2; messageId = _activeTransport.GenerateMessageId(true); } var transportMessage = CreateTLTransportMessage(salt, sessionId, new TLInt(sequenceNumber), messageId, obj); var encryptedMessage = CreateTLEncryptedMessage(authKey, transportMessage); lock (_activeTransportRoot) { if (_activeTransport.Closed) { _activeTransport = GetTransport(_activeTransport.Host, _activeTransport.Port, Type, new TransportSettings { DcId = _activeTransport.DCId, Secret = _activeTransport.Secret, AuthKey = _activeTransport.AuthKey, Salt = _activeTransport.Salt, SessionId = _activeTransport.SessionId, MessageIdDict = _activeTransport.MessageIdDict, SequenceNumber = _activeTransport.SequenceNumber, ClientTicksDelta = _activeTransport.ClientTicksDelta, PacketReceivedHandler = OnPacketReceived }); } } SendPacketAsync(_activeTransport, "http_wait " + transportMessage.MessageId, encryptedMessage, result => { //try //{ // ReceiveBytesAsync(result, authKey); //} //catch (Exception e) //{ // TLUtils.WriteException(e); //} //finally //{ // callback(); //} }, error => faultCallback.SafeInvoke()); }
public void HttpWaitAsync(int maxDelay, int waitAfter, int maxWait, Action callback, Action faultCallback) { PrintCaption("http_wait"); var obj = new TLHttpWait { MaxDelay = maxDelay, WaitAfter = waitAfter, MaxWait = maxWait }; var authKey = _activeTransport.AuthKey; var salt = _activeTransport.Salt; var sessionId = _activeTransport.SessionId; int sequenceNumber; long messageId; lock (_activeTransportRoot) { sequenceNumber = _activeTransport.SequenceNumber * 2; messageId = _activeTransport.GenerateMessageId(true); } var transportMessage = CreateTLTransportMessage(salt ?? 0, sessionId ?? 0, sequenceNumber, messageId, obj); var encryptedMessage = CreateTLEncryptedMessage(authKey, transportMessage); lock (_activeTransportRoot) { if (_activeTransport.Closed) { var transportDCId = _activeTransport.DCId; var transportKey = _activeTransport.AuthKey; var transportSalt = _activeTransport.Salt; var transportSessionId = _activeTransport.SessionId; var transportSequenceNumber = _activeTransport.SequenceNumber; var transportClientTicksDelta = _activeTransport.ClientTicksDelta; bool isCreated; _activeTransport = _transportService.GetTransport(_activeTransport.Host, _activeTransport.Port, Type, out isCreated); if (isCreated) { _activeTransport.DCId = transportDCId; _activeTransport.AuthKey = transportKey; _activeTransport.Salt = transportSalt; _activeTransport.SessionId = transportSessionId; _activeTransport.SequenceNumber = transportSequenceNumber; _activeTransport.ClientTicksDelta = transportClientTicksDelta; _activeTransport.PacketReceived += OnPacketReceived; } } } SendPacketAsync(_activeTransport, "http_wait " + transportMessage.MsgId, encryptedMessage, result => { //try //{ // ReceiveBytesAsync(result, authKey); //} //catch (Exception e) //{ // TLUtils.WriteException(e); //} //finally //{ // callback(); //} }, error => faultCallback?.Invoke()); }