public static Session Deserialize(BinaryReader br) { var version = TgMarshal.ReadInt(br); if (version != Version) { throw new TgInternalException($"Invalid session file version, got {version}, expected {Version}.", None); } var apiId = TgMarshal.ReadInt(br); var id = TgMarshal.ReadLong(br); var sequence = TgMarshal.ReadInt(br); var salt = TgMarshal.ReadLong(br); var lastMessageId = TgMarshal.ReadLong(br); var timeOffset = TgMarshal.ReadInt(br); var serverAddress = TgMarshal.ReadBytes(br).ToArrayUnsafe().Apply(bts => new IPAddress(bts)); var port = TgMarshal.ReadInt(br); var ep = new IPEndPoint(serverAddress, port); var authData = TgMarshal.ReadBytes(br); var isAuthorized = TgMarshal.ReadBool(br); return(new Session( apiId: apiId, id: id, salt: salt, sequence: sequence, lastMessageId: lastMessageId, timeOffset: timeOffset, endpoint: ep, authKey: AuthKey.Deserialize(authData), isAuthorized: isAuthorized )); }
public void Serialize(BinaryWriter bw) { TgMarshal.WriteInt(bw, Version); TgMarshal.WriteInt(bw, ApiId); TgMarshal.WriteLong(bw, Id); TgMarshal.WriteInt(bw, Sequence); TgMarshal.WriteLong(bw, Salt); TgMarshal.WriteLong(bw, LastMessageId); TgMarshal.WriteInt(bw, TimeOffset); TgMarshal.WriteBytes(bw, Endpoint.Address.GetAddressBytes().ToBytesUnsafe()); TgMarshal.WriteInt(bw, Endpoint.Port); TgMarshal.WriteBytes(bw, AuthKey.Key); TgMarshal.WriteBool(bw, IsAuthorized); }