/// <summary> /// Creates a new instance which handles the Mobile Transport Protocol. /// </summary> /// <param name="AuthInfo">A reference to the Authorization information. Pass a null reference to have this generated for you</param> public MTProtoSender(ref MTProtoHelper Helper) { // If the Helper was a reference to a null value, create // a new Helper. This will update the original as well if (Helper == null) { Helper = new MTProtoHelper(null); } // Save the reference to the Helper _State = Helper; // Create a new Thread Safe packer for all the requests SendQueue = new MessagePacker(ref _State); }
/// <summary> /// Deserilizes a Session object from a stream /// </summary> /// <param name="reader">The stream containing the raw Session data</param> public static Session Deserialize(string FileName, BinaryReader reader) { Network.MTProtoHelper Helper = null; if (BoolUtil.Deserialize(reader)) { Helper = MTProtoHelper.Deserialize(BytesUtil.Deserialize(reader)); } TLObject TLUser = null; if (BoolUtil.Deserialize(reader)) { TLUser = TLObject.Deserialize(reader); } var SessionExpires = IntegerUtil.Deserialize(reader); DataCenter DataCenter = null; if (BoolUtil.Deserialize(reader)) { DataCenter = DataCenter.Deserialize(BytesUtil.Deserialize(reader)); } var session = new Session(FileName) { Helper = Helper, TLUser = TLUser, SessionExpires = SessionExpires, DataCenter = DataCenter }; PeerManager.Deserialize(reader).ToList().ForEach(x => session.KnownPeers.AddOrUpdatePeer(x.AsTLObject())); return(session); }