public static Session FromBytes(byte[] buffer, ISessionStore store) { using (var stream = new MemoryStream(buffer)) using (var reader = new BinaryReader(stream)) { var id = reader.ReadUInt64(); var sequence = reader.ReadInt32(); var salt = reader.ReadUInt64(); var lastMessageId = reader.ReadInt64(); var timeOffset = reader.ReadInt32(); var serverAddress = Serializers.String.Read(reader); var port = reader.ReadInt32(); var isAuthExsist = reader.ReadInt32() == 1; int sessionExpires = 0; User user = null; if (isAuthExsist) { sessionExpires = reader.ReadInt32(); user = TLObject.Read <User>(reader); } var authData = Serializers.Bytes.Read(reader); return(new Session(store) { authKey = new AuthKey(authData), id = id, salt = salt, sequence = sequence, lastMessageId = lastMessageId, timeOffset = timeOffset, sessionExpires = sessionExpires, user = user, serverAddress = serverAddress, port = port }); } }
private void HandleUpdateMessage(BinaryReader messageReader, uint updateDataCode) { var update = TLObject.Read <Updates>(messageReader, updateDataCode); OnUpdateMessage(update); }
private void ProcessMessage(long messageId, int sequence, BinaryReader messageReader) { // TODO: check salt // TODO: check sessionid // TODO: check seqno //logger.debug("processMessage: msg_id {0}, sequence {1}, data {2}", BitConverter.ToString(((MemoryStream)messageReader.BaseStream).GetBuffer(), (int) messageReader.BaseStream.Position, (int) (messageReader.BaseStream.Length - messageReader.BaseStream.Position)).Replace("-","").ToLower()); needConfirmation.Add(messageId); uint code = messageReader.ReadUInt32(); switch (code) { case 0x73f1f8dc: // messages container //logger.debug("MSG container"); HandleContainer(messageId, sequence, messageReader); break; case 0x347773c5: // pong Debug.WriteLine("Got Pong response from server."); var pong = TLObject.Read <Pong>(messageReader, 0x347773c5); if (runningRequests.ContainsKey(pong.messageId)) { runningRequests[pong.messageId].Item2.TrySetResult(true); } break; case 0xae500895: // future_salts //logger.debug("MSG future_salts"); break; case 0x9ec20908: // new_session_created //logger.debug("MSG new_session_created"); HandleNewSessionCreated(messageReader); break; case 0x62d6b459: // msgs_ack //logger.debug("MSG msds_ack"); break; case 0xedab447b: // bad_server_salt //logger.debug("MSG bad_server_salt"); HandleBadServerSalt(messageId, sequence, messageReader); break; case 0xa7eff811: // bad_msg_notification //logger.debug("MSG bad_msg_notification"); HandleBadMsgNotification(messageId, sequence, messageReader); break; case 0x276d3ec6: // msg_detailed_info //logger.debug("MSG msg_detailed_info"); break; case 0xf35c6d01: // rpc_result //logger.debug("MSG rpc_result"); HandleRpcResult(messageReader); break; case 0x3072cfa1: // gzip_packed //logger.debug("MSG gzip_packed"); HandleGzipPacked(messageId, sequence, messageReader); break; case 0xe317af7e: // updatesTooLong case 0xd3f45784: // updateShortMessage case 0x2b2fbd4e: // updateShortChatMessage case 0x78d4dec1: // updateShort case 0x725b04c3: // updatesCombined case 0x74ae4240: // updates { HandleUpdateMessage(messageReader, code); break; } default: Debug.WriteLine($"Unknown error: {code}"); break; } }
public override void OnResponse(BinaryReader reader) { authorization = TLObject.Read <AuthAuthorization>(reader); }
public override void OnResponse(BinaryReader reader) { sentMessage = TLObject.Read <SentMessage>(reader); }
public override void OnResponse(BinaryReader reader) { file = TLObject.Read <UploadFile>(reader); }
public override void OnResponse(BinaryReader reader) { config = TLObject.Read <Config>(reader); }
public override void OnResponse(BinaryReader reader) { affectedHistory = TLObject.Read <MessagesAffectedHistory>(reader); }
public override void OnResponse(BinaryReader reader) { updatesDifference = TLObject.Read <UpdatesDifference>(reader); }
public override void OnResponse(BinaryReader reader) { isAvailable = TLObject.Read <bool>(reader); }
public override void OnResponse(BinaryReader reader) { userFull = TLObject.Read <UserFull>(reader); }
public override void OnResponse(BinaryReader reader) { eventsOccured = TLObject.Read <Update>(reader); }
public override void OnResponse(BinaryReader reader) { updatesState = TLObject.Read <UpdatesState>(reader); }
public override void OnResponse(BinaryReader reader) { checkedPhone = TLObject.Read <AuthCheckedPhone>(reader); }
public override void OnResponse(BinaryReader reader) { sentCode = TLObject.Read <AuthSentCode>(reader); }
public override void OnResponse(BinaryReader reader) { chatFull = TLObject.Read <ChatFull>(reader); }
public override void OnResponse(BinaryReader reader) { contactsLink = TLObject.Read <ContactsLink>(reader); }
public override void OnResponse(BinaryReader reader) { state = TLObject.Read <bool>(reader); }
public override void OnResponse(BinaryReader reader) { statedMessage = TLObject.Read <MessagesStatedMessage>(reader); }
public override void OnResponse(BinaryReader reader) { importedContacts = TLObject.Read <ContactsImportedContacts>(reader); }
public override void OnResponse(BinaryReader reader) { nearestDc = TLObject.Read <NearestDc>(reader); }
public override void OnResponse(BinaryReader reader) { messagesDialogs = TLObject.Read <MessagesDialogs>(reader); }