Esempio n. 1
0
 /// <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);
 }
Esempio n. 2
0
        /// <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);
        }