ReadInt64() public method

public ReadInt64 ( ) : long
return long
Esempio n. 1
1
 public IDictionary<byte[], IList<long>> Read(BinaryReader reader, int keyWidth)
 {
     var indexWidth = reader.ReadInt64();
     var buckets = new Dictionary<byte[], IList<long>>(new ByteArrayComparer());
     while (reader.BaseStream.Position < reader.BaseStream.Length)
     {
         var bucket = new List<long>();
         var index = reader.ReadBytes(keyWidth);
         for (int i = 0; i < indexWidth - keyWidth; i += sizeof (long))
         {
             var value = reader.ReadInt64();
             if (value != long.MaxValue)
             {
                 bucket.Add(value);
             }
             else
             {
                 reader.BaseStream.Seek(indexWidth - keyWidth - i - sizeof (long), SeekOrigin.Current);
                 break;
             }
         }
         buckets[index] = bucket;
     }
     return buckets;
 }
Esempio n. 2
0
 public Chests(BinaryReader inStream)
 {
     Id = inStream.ReadInt32();
     Flag0 = inStream.ReadBoolean();
     Unknown0 = inStream.ReadInt32();
     Name = inStream.ReadInt32();
     AnimatedObject = inStream.ReadInt32();
     Flag1 = inStream.ReadBoolean();
     Flag2 = inStream.ReadBoolean();
     Unknown1 = inStream.ReadInt32();
     Flag3 = inStream.ReadBoolean();
     Flag4 = inStream.ReadBoolean();
     Unknown2 = inStream.ReadInt32();
     Data0Length = inStream.ReadInt32();
     Data0 = inStream.ReadInt32();
     Data1Length = inStream.ReadInt32();
     Data1 = inStream.ReadInt32();
     ItemKey = inStream.ReadInt64();
     Flag5 = inStream.ReadBoolean();
     Data2Length = inStream.ReadInt32();
     Data2 = inStream.ReadInt32();
     Flag6 = inStream.ReadBoolean();
     Data3Length = inStream.ReadInt32();
     Data3 = inStream.ReadInt32();
     Unknown3 = inStream.ReadInt64();
     Unknown4 = inStream.ReadInt32();
     Flag7 = inStream.ReadBoolean();
     Data4Length = inStream.ReadInt32();
     Data4 = inStream.ReadInt32();
     Unknown23 = inStream.ReadInt32();
 }
Esempio n. 3
0
 public override void DeserializeBody(BinaryReader br)
 {
     dc_id = br.ReadInt32();
     volume_id = br.ReadInt64();
     local_id = br.ReadInt32();
     secret = br.ReadInt64();
 }
        public void Open()
        {
            if(!File.Exists(attributionFileName))
            {
                throw new FileNotFoundException("The specified attribution file is not found");
            }

            attributionFileStreamReader = new BinaryReader(File.Open(attributionFileName, FileMode.Open));
            attributionFileStreamReader.BaseStream.Seek(0, SeekOrigin.Begin);

            recordsCount = attributionFileStreamReader.ReadInt32();

            dataOffset = attributionFileStreamReader.ReadInt64();

            for (int i = 0; i < recordsCount; i++)
            {
                if (indexOffsets == null)
                {
                    indexOffsets = new Dictionary<int, long>();
                }

                indexOffsets.Add(i, attributionFileStreamReader.ReadInt64());
            }

            isOpened = true;
        }
Esempio n. 5
0
 public override void DeserializeBody(BinaryReader br)
 {
     id = br.ReadInt64();
     access_hash = br.ReadInt64();
     date = br.ReadInt32();
     sizes = (TLVector<TLAbsPhotoSize>)ObjectUtils.DeserializeVector<TLAbsPhotoSize>(br);
 }
Esempio n. 6
0
        public IEnumerable<FileEntry> ListFiles(Stream strm, Callbacks callbacks)
        {
            byte[] buf = new byte[4];
            BinaryReader rd = new BinaryReader(strm);
            int numFiles;
            List<FileEntry> results = new List<FileEntry>();

            rd.Read(buf, 0, 4);
            if (Encoding.ASCII.GetString(buf, 0, 4) != "TGP0")
                return results;

            if (rd.ReadInt32() != 1)  // version check
                return results;

            if (rd.ReadInt32() != 0)  // should be zero
                return results;

            numFiles = rd.ReadInt32();
            buf = new byte[0x60];
            for (int i = 0; i < numFiles; i++)
            {
                FileEntry ent = new FileEntry();

                rd.Read(buf, 0, 0x60);
                ent.Filename = Encoding.ASCII.GetString(buf);
                ent.Filename = ent.Filename.Substring(0, ent.Filename.IndexOf('\0'));
                ent.Offset = rd.ReadInt64();
                ent.UncompressedSize = rd.ReadInt64();

                results.Add(ent);
            }

            return results;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ContentArchiveNode"/> class from an archive stream.
        /// </summary>
        /// <param name="parent">The node's parent node.</param>
        /// <param name="reader">A <see cref="BinaryReader"/> on the stream containing the archive data.</param>
        private ContentArchiveNode(ContentArchiveNode parent, BinaryReader reader)
        {
            this.parent      = parent;
            this.name        = reader.ReadString();
            this.path        = BuildPath(parent, name);
            this.isFile      = reader.ReadBoolean();
            this.isDirectory = !this.isFile;

            if (this.isFile)
            {
                this.position    = reader.ReadInt64();
                this.sizeInBytes = reader.ReadInt64();
            }
            else
            {
                var childList = new List<ContentArchiveNode>();
                var childCount = reader.ReadInt32();

                for (int i = 0; i < childCount; i++)
                {
                    var node = new ContentArchiveNode(this, reader);
                    childList.Add(node);
                }

                this.children = childList;
            }
        }
Esempio n. 8
0
        public IndexedFS(Filesystem msys)
        {
            _msys = msys;
            if (!msys.EnumFiles().GetEnumerator().MoveNext())
            {
            //Create index
                msys.AllocSpace(0,512);
                Stream mstream = new ObservableStream(0, msys);
                BinaryWriter mwriter = new BinaryWriter(mstream);

                mwriter.Write(filemappings.Count);
                cval++;
            }
            ObservableStream fstr = new ObservableStream(0, msys);
            BinaryReader mreader = new BinaryReader(fstr);
            int count = mreader.ReadInt32();

            for (int i = 0; i < count; i++)
            {

                if (mreader.ReadBoolean())
                {
                    filemappings.Add(mreader.ReadString(), mreader.ReadInt64());
                }
                else
                {
                    dirmappings.Add(mreader.ReadString(), mreader.ReadInt64());

                }

                cval++;
            }
        }
Esempio n. 9
0
        public void TestWrite()
        {
            MemoryStream stream = new MemoryStream();

            // FileIndex should support a stream starting at any point
            stream.Seek(10, SeekOrigin.Begin);

            PostingListEncoder decoder = new PostingListEncoder();
            PerformWrite(stream);

            BinaryReader reader = new BinaryReader(stream);

            // Term count
            Assert.AreEqual(2, reader.ReadInt64());

            long ptr1 = reader.ReadInt64();
            long ptr2 = reader.ReadInt64();

            Assert.AreEqual(stream.Position, ptr1);
            Assert.AreEqual("aTerm", reader.ReadString());
            IList<Posting> postings = decoder.read(reader);
            Assert.AreEqual(2, postings.Count);
            Assert.AreEqual(new Posting(DocA, 1), postings[0]);
            Assert.AreEqual(new Posting(DocB, 1), postings[1]);

            Assert.AreEqual(stream.Position, ptr2);
            Assert.AreEqual("bTerm", reader.ReadString());
            postings = decoder.read(reader);
            Assert.AreEqual(3, postings.Count);
            Assert.AreEqual(new Posting(DocA, 1), postings[0]);
            Assert.AreEqual(new Posting(DocZ, 1), postings[1]);
            Assert.AreEqual(new Posting(DocT, 1), postings[2]);
        }
Esempio n. 10
0
File: Cell.cs Progetto: pszmyd/SHS
        internal Partition part; // the partition containing this cell

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Load a cell from disk into memory.
        /// </summary>
        /// <param name="part">The partition where this cell belongs</param>
        /// <param name="fileName">The name of the file holding the persisted cell</param>
        /// <exception cref="FileFormatException">The cell file is malformed</exception>
        /// <exception cref="EndOfStreamException">The cell file is too short</exception>
        internal Cell(Partition part, string fileName, bool partial)
        {
            this.part = part;
              this.fileName = fileName;
              var fileLength = new FileInfo(fileName).Length;
              using (var br = new BinaryReader(new BufferedStream(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)))) {
            this.baseUID   = br.ReadInt64();
            this.epoch     = br.ReadInt32();
            this.numUrls   = br.ReadInt64();
            this.supraUID  = this.baseUID + this.numUrls;

            this.urlCell = new UrlCell(this, br);
            this.linkCell = new LinkCell[2];
            this.linkCell[0] = new LinkCell(this, br);
            this.linkCell[1] = new LinkCell(this, br);

            long numHdrBytes = br.BaseStream.Position;
            this.urlCell.startPos = numHdrBytes;
            this.linkCell[0].startPos = this.urlCell.startPos + this.urlCell.numBytes;
            this.linkCell[1].startPos = this.linkCell[0].startPos + this.linkCell[0].numBytes;
            var expectedSize = numHdrBytes + this.urlCell.numBytes +
              (partial ? 0L : this.linkCell[0].numBytes + this.linkCell[1].numBytes);
            if (fileLength != expectedSize) {
              throw new FileFormatException(fileName + " is wrong size");
            }
              }
        }
Esempio n. 11
0
 public void readHeader(BinaryReader reader)
 {
     this.operation = reader.ReadByte();
         int blockId = reader.ReadInt32();
         int threadId = IPAddress.NetworkToHostOrder(reader.ReadInt32());
         byte booleans = reader.ReadByte();
         if (isTrue(booleans, 1))
         {
             timeout = IPAddress.NetworkToHostOrder(reader.ReadInt64());
         }
         if (isTrue(booleans, 2))
         {
             ttl = IPAddress.NetworkToHostOrder(reader.ReadInt64());
         }
         if (isTrue(booleans, 4))
         {
             longValue = IPAddress.NetworkToHostOrder(reader.ReadInt64());
         }
         this.callId = IPAddress.NetworkToHostOrder(reader.ReadInt64());
         this.responseType = reader.ReadByte();
         int nameLength = IPAddress.NetworkToHostOrder(reader.ReadInt32());
         if (nameLength > 0)
         {
             byte[] b = new byte[nameLength];
             reader.Read(b, 0, nameLength);
             this.name = System.Text.Encoding.ASCII.GetString(b);
         }
         byte indexCount = reader.ReadByte();
         int keyPartitionHash = IPAddress.NetworkToHostOrder(reader.ReadInt32());
         int valuePartitionHash = IPAddress.NetworkToHostOrder(reader.ReadInt32());
 }
 protected override void ParseMessage(byte[] messageBody)
 {
     // Read double from the stream
     BinaryReader br = new BinaryReader(new MemoryStream(messageBody), Encoding.UTF8);
     X = BitConverter.Int64BitsToDouble(IPAddress.NetworkToHostOrder(br.ReadInt64()));
     Y = BitConverter.Int64BitsToDouble(IPAddress.NetworkToHostOrder(br.ReadInt64()));
 }
Esempio n. 13
0
        public void TestWrite()
        {
            Stream stream = new MemoryStream();
            PerformWrite(stream);

            BinaryReader reader = new BinaryReader(stream);
            stream.Seek(0, SeekOrigin.Begin);
            Assert.AreEqual(2, reader.ReadInt64());

            // term ptr, frequency
            reader.ReadInt64();
            Assert.AreEqual(2, reader.ReadInt32());

            // term ptr, frequency
            reader.ReadInt64();
            Assert.AreEqual(3, reader.ReadInt32());

            string[] strings = new string[] {
                "aTerm", "aDoc", "bDoc", "bTerm", "aDoc", "zDoc", "tDoc"
            };

            foreach (string str in strings)
            {
                Assert.AreEqual(str, reader.ReadString());
            }
        }
Esempio n. 14
0
 public override void DeserializeBody(BinaryReader br)
 {
     perm_auth_key_id = br.ReadInt64();
     nonce = br.ReadInt64();
     expires_at = br.ReadInt32();
     encrypted_message = BytesUtil.Deserialize(br);
 }
Esempio n. 15
0
 public override object Read(BinaryReader reader, byte version)
 {
     if (version == 0)
         return new Bid(new DateTime(reader.ReadInt64()), reader.ReadByte(), reader.ReadInt32(), reader.ReadDouble(), reader.ReadInt32());
     else
         return new Bid(new DateTime(reader.ReadInt64()), new DateTime(reader.ReadInt64()), reader.ReadByte(), reader.ReadInt32(), reader.ReadDouble(), reader.ReadInt32());
 }
Esempio n. 16
0
        public ProgramHeader(BinaryReader reader, bool Is64Bit)
        {
            this.Type = (HeaderType)reader.ReadUInt32();

            // 64-bit reads flags here
            if (Is64Bit) { this.SegmentFlags = (SegmentFlags)reader.ReadUInt32(); }

            this.SegmentOffset  = Is64Bit ? reader.ReadInt64()  : reader.ReadUInt32();
            this.VirtualAddress = Is64Bit ? reader.ReadUInt64() : reader.ReadUInt32();

            // Skip physical address - reserved
            if (Is64Bit) reader.ReadUInt64(); else reader.ReadUInt32();

            this.SegmentFileSize   = Is64Bit ? reader.ReadInt64() : reader.ReadUInt32();
            this.SegmentLoadedSize = Is64Bit ? reader.ReadInt64() : reader.ReadUInt32();

            // 32-bit reads flags here
            if (!Is64Bit) { this.SegmentFlags = (SegmentFlags)reader.ReadUInt32(); }

            this.Alignment = Is64Bit ? reader.ReadInt64() : reader.ReadUInt32();

            if (this.SegmentOffset < 0 || this.SegmentFileSize < 0 ||
                this.SegmentLoadedSize < 0 || this.Alignment < 0)
            {
                throw new BadImageFormatException("Program header values are too large to be " +
                    "supported by this implementation");
            }
        }
Esempio n. 17
0
 public ShrineBuffs(BinaryReader inStream)
 {
     Id = inStream.ReadInt32();
     Data0Length = inStream.ReadInt32();
     Data0 = inStream.ReadInt32();
     Unknown3 = inStream.ReadInt64();
     Unknown4 = inStream.ReadInt64();
 }
Esempio n. 18
0
 public override void DeserializeBody(BinaryReader br)
 {
     id = br.ReadInt64();
     access_hash = br.ReadInt64();
     size = br.ReadInt32();
     dc_id = br.ReadInt32();
     key_fingerprint = br.ReadInt32();
 }
Esempio n. 19
0
 /// <summary>
 /// Reads back custom data from a raw representation of the data message.
 /// </summary>
 /// <param name="reader">The binary reader used to read from the raw representation of the original data message.</param>
 protected override void ReadData(BinaryReader reader)
 {
     var dateTimeTicks = reader.ReadInt64();
     var offsetTicks = reader.ReadInt64();
     var offset = TimeSpan.FromTicks(offsetTicks);
     Timestamp = new DateTimeOffset(dateTimeTicks, offset);
     Delta = new Vector2(reader.ReadSingle(), reader.ReadSingle());
 }
Esempio n. 20
0
		public override object Read(BinaryReader reader)
		{
			if (reader.ReadByte() == 0)
			{
				return new Ask(new DateTime(reader.ReadInt64()), reader.ReadByte(), reader.ReadInt32(), reader.ReadDouble(), reader.ReadInt32());
			}
			return new Ask(new DateTime(reader.ReadInt64()), new DateTime(reader.ReadInt64()), reader.ReadByte(), reader.ReadInt32(), reader.ReadDouble(), reader.ReadInt32());
		}
Esempio n. 21
0
 /// <summary>
 /// Load the structure from a binary reader
 /// </summary>
 /// <param name="reader">   Binary reader</param>
 public void LoadFromStream(System.IO.BinaryReader reader)
 {
     m_lVal1 = reader.ReadInt64();
     m_lVal2 = reader.ReadInt64();
     m_lVal3 = reader.ReadInt64();
     m_lVal4 = reader.ReadInt64();
     m_eInfo = (ChessBoard.BoardStateMaskE)reader.ReadInt32();
 }
Esempio n. 22
0
		public void Read(BinaryReader reader)
		{
			Seed = reader.ReadInt32();
			Name = reader.ReadLongString();
			X = reader.ReadInt64();
			Y = reader.ReadInt64();
			Z = reader.ReadInt64();
		}
Esempio n. 23
0
 public MonsterPackEntries(BinaryReader inStream)
 {
     Index0 = inStream.ReadInt32();
     Unknown0 = inStream.ReadInt64();
     Flag0 = inStream.ReadBoolean();
     Unknown1 = inStream.ReadInt32();
     Unknown2 = inStream.ReadInt64();
 }
Esempio n. 24
0
 public DescentExiles(BinaryReader inStream)
 {
     Id = inStream.ReadInt32();
     AreaKey = inStream.ReadInt64();
     Unknown3 = inStream.ReadInt64();
     VarietyKey = inStream.ReadInt64();
     Unknown7 = inStream.ReadInt32();
 }
Esempio n. 25
0
 public DescentStarterChest(BinaryReader inStream)
 {
     Id = inStream.ReadInt32();
     Unknown1 = inStream.ReadInt64();
     Unknown2 = inStream.ReadInt64();
     Unknown3 = inStream.ReadInt32();
     Unknown4 = inStream.ReadInt64();
 }
Esempio n. 26
0
        public AccountInfo(BinaryReader reader)
        {
            Index = reader.ReadInt32();

            AccountID = reader.ReadString();
            Password = reader.ReadString();

            UserName = reader.ReadString();
            BirthDate = DateTime.FromBinary(reader.ReadInt64());
            SecretQuestion = reader.ReadString();
            SecretAnswer = reader.ReadString();
            EMailAddress = reader.ReadString();

            CreationIP = reader.ReadString();
            CreationDate = DateTime.FromBinary(reader.ReadInt64());

            Banned = reader.ReadBoolean();
            BanReason = reader.ReadString();
            ExpiryDate = DateTime.FromBinary(reader.ReadInt64());

            LastIP = reader.ReadString();
            LastDate = DateTime.FromBinary(reader.ReadInt64());

            int count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                Characters.Add(new CharacterInfo(reader) { AccountInfo = this });
                
            }


            Gold = reader.ReadUInt32();
            if (Envir.LoadVersion >= 63) Credit = reader.ReadUInt32();

            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                if (!reader.ReadBoolean()) continue;
                UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion);
                if (SMain.Envir.BindItem(item) && i < Storage.Length)
                    Storage[i] = item;
            }
            if (Envir.LoadVersion >= 10) AdminAccount = reader.ReadBoolean();
            if (!AdminAccount)
            {
                for (int i = 0; i < Characters.Count; i++)
                {
                    if (Characters[i] == null) continue;
                    if (Characters[i].Deleted) continue;
                    if ((DateTime.Now - Characters[i].LastDate).TotalDays > 13) continue;
                    if ((Characters[i].Level >= SMain.Envir.RankBottomLevel[0]) || (Characters[i].Level >= SMain.Envir.RankBottomLevel[(byte)Characters[i].Class + 1]))
                    {
                        SMain.Envir.CheckRankUpdate(Characters[i]);
                    }
                }
            }
        }
Esempio n. 27
0
 public BuffVisuals(BinaryReader inStream)
 {
     Id = inStream.ReadInt32();
     BuffIcon = inStream.ReadInt32();
     EffectA = inStream.ReadInt32();
     EffectB = inStream.ReadInt32();
     Unknown4 = inStream.ReadInt64();
     Unknown5 = inStream.ReadInt64();
 }
Esempio n. 28
0
 public QuestStaticRewards(BinaryReader inStream)
 {
     Unknown0 = inStream.ReadInt32();
     Unknown1 = inStream.ReadInt32();
     Unknown2 = inStream.ReadInt64();
     Unknown3 = inStream.ReadInt32();
     Unknown4 = inStream.ReadInt64();
     Unknown5 = inStream.ReadInt64();
 }
Esempio n. 29
0
 public void Read(BinaryReader br)
 {
     offsetWaveInfo = br.ReadInt64();
     offsetUnknownTable = br.ReadInt64();
     
     numBlocks = br.ReadInt32();
     numUnknownTableEntries = br.ReadInt32();
     headerSize = br.ReadInt32();
 }
Esempio n. 30
0
 public override void DeserializeBody(BinaryReader br)
 {
     id = br.ReadInt32();
     access_hash = br.ReadInt64();
     date = br.ReadInt32();
     admin_id = br.ReadInt32();
     participant_id = br.ReadInt32();
     g_a_or_b = BytesUtil.Deserialize(br);
     key_fingerprint = br.ReadInt64();
 }
Esempio n. 31
0
 public PlainMessage(byte[] raw, string type)
 {
     using (var br = new BinaryReader(new MemoryStream(raw)))
     {
         AuthKeyId = br.ReadInt64();
         MessageId = br.ReadInt64();
         int length = br.ReadInt32();
         Combinator = new Combinator(br.ReadBytes(length), type);
     }
 }
Esempio n. 32
0
        public Log(string directory)
        {
            LF = new IO.FileStream(directory + "log", IO.FileMode.OpenOrCreate);
            if (LF.Length != 0) // Read the log file, applying the changes to the specified files.
            {
                byte [] b     = new byte[0x1000];
                var     files = new G.Dictionary <long, IO.Stream>();

                LF.Position = 0;
                var fr = new IO.BinaryReader(LF);
                while (LF.Position < LF.Length)
                {
                    long      fileId     = fr.ReadInt64();
                    long      fileOffset = fr.ReadInt64();
                    int       size       = fr.ReadInt32();
                    IO.Stream f;
                    if (!files.TryGetValue(fileId, out f))
                    {
                        f             = new IO.FileStream(directory + fileId, IO.FileMode.OpenOrCreate);
                        files[fileId] = f;
                    }
                    if (size > 0)
                    {
                        if (size > b.Length)
                        {
                            b = new byte[size];
                        }
                        LF.Read(b, 0, size);
                        f.Position = fileOffset;
                        f.Write(b, 0, size);
                    }
                    else
                    {
                        f.SetLength(fileOffset);
                    }
                }
                foreach (G.KeyValuePair <long, IO.Stream> p in files)
                {
                    IO.Stream f      = p.Value;
                    long      length = f.Length;
                    f.Close();
                    if (length == 0)
                    {
                        var fi = new IO.FileInfo(directory + p.Key);
                        fi.Delete();
                    }
                }
                Reset();
            }
            LFW = new IO.BinaryWriter(LF);
        }
Esempio n. 33
0
        internal HTTPCacheFileInfo(Uri uri, System.IO.BinaryReader reader, int version)
        {
            this.Uri        = uri;
            this.LastAccess = DateTime.FromBinary(reader.ReadInt64());
            this.BodyLength = reader.ReadInt32();

            switch (version)
            {
            case 3:
                this.NoCache = reader.ReadBoolean();
                this.StaleWhileRevalidate = reader.ReadInt64();
                this.StaleIfError         = reader.ReadInt64();
                goto case 2;

            case 2:
                this.MappedNameIDX = reader.ReadUInt64();
                goto case 1;

            case 1:
            {
                this.ETag           = reader.ReadString();
                this.LastModified   = reader.ReadString();
                this.Expires        = DateTime.FromBinary(reader.ReadInt64());
                this.Age            = reader.ReadInt64();
                this.MaxAge         = reader.ReadInt64();
                this.Date           = DateTime.FromBinary(reader.ReadInt64());
                this.MustRevalidate = reader.ReadBoolean();
                this.Received       = DateTime.FromBinary(reader.ReadInt64());
                break;
            }
            }
        }
Esempio n. 34
0
        //充填媒体帧
        public void SetBytes(Stream stream)
        {
            var br = new System.IO.BinaryReader(stream);

            MediaFrameVersion = br.ReadByte();
            nEx         = br.ReadByte();
            nIsKeyFrame = br.ReadByte();
            nTimetick   = br.ReadInt64();
            nIsAudio    = br.ReadByte();
            nSize       = br.ReadInt32();
            nOffset     = br.ReadInt32();
            if (MediaFrameVersion == 1)
            {
                nEncoder = br.ReadInt32();
                if (nIsAudio == 0)
                {
                    nSPSLen = br.ReadInt16();
                    nPPSLen = br.ReadInt16();
                    nWidth  = br.ReadInt32();
                    nHeight = br.ReadInt32();
                }
                else
                {
                    nFrequency   = br.ReadInt32();
                    nChannel     = br.ReadInt32();
                    nAudioFormat = br.ReadInt16();
                    nSamples     = br.ReadInt16();
                }
            }
            Data = br.ReadBytes(nSize + nOffset);
        }
Esempio n. 35
0
            public override long ReadScalarValue(System.IO.BinaryReader br)
            {
                Int64 temp = br.ReadInt64();

                var tmp = (temp /= 10000);

                return(tmp);
            }
Esempio n. 36
0
        private File GetFile(IO.BinaryReader br)
        {
            long     size     = br.ReadInt64();
            DateTime created  = new DateTime(br.ReadInt64());
            DateTime modified = new DateTime(br.ReadInt64());
            string   name     = ReadText(br);
            Dictionary <string, string> data = ReadData(br);

            return(new File()
            {
                Name = name,
                FileSize = size,
                CreatedDateUtc = created,
                ModifiedDateUtc = modified,
                Data = data
            });
        }
Esempio n. 37
0
        /// <summary>
        /// 分析网络数据包并进行转换为信息对象
        /// </summary>
        /// <param name="packs">接收到的封包对象</param>
        /// <returns></returns>
        /// <remarks>
        /// 对于分包消息,如果收到的只是片段并且尚未接收完全,则不会进行解析
        /// </remarks>
        public static Msg ParseToMessage(params PacketNetWorkMsg[] packs)
        {
            if (packs.Length == 0 || (packs[0].PackageCount > 1 && packs.Length != packs[0].PackageCount))
            {
                return(null);
            }


            var ms = DecompressMessagePacks(packs);

            if (ms == null)
            {
                //事件
                OnDecompressFailed(new PackageEventArgs(packs));
                return(null);
            }
            //构造读取流
            System.IO.BinaryReader br = new System.IO.BinaryReader(ms, System.Text.Encoding.Unicode);
            //开始读出数据
            Msg m = new Msg(packs[0].RemoteIP);

            m.PackageNo = br.ReadInt64();          //包编号

            m.UserName = br.ReadString();          //用户名
            m.HostName = br.ReadString();          //主机名
            m.Command  = (Commands)br.ReadInt64(); //命令
            m.Type     = (Consts)br.ReadInt64();   //数据类型
            int length = br.ReadInt32();           //数据长度

            m.NormalMsgBytes = new byte[length];
            br.Read(m.NormalMsgBytes, 0, length);     //读取内容

            length = br.ReadInt32();                  //附加数据长度
            m.ExtendMessageBytes = new byte[length];
            br.Read(m.ExtendMessageBytes, 0, length); //读取附加数据

            if (m.Type == Consts.MESSAGE_TEXT)
            {
                m.NormalMsg          = System.Text.Encoding.Unicode.GetString(m.NormalMsgBytes, 0, m.NormalMsgBytes.Length);         //正文
                m.ExtendMessage      = System.Text.Encoding.Unicode.GetString(m.ExtendMessageBytes, 0, m.ExtendMessageBytes.Length); //扩展消息
                m.ExtendMessageBytes = null;
                m.NormalMsgBytes     = null;
            }
            return(m);
        }
Esempio n. 38
0
        //把字节流转为manifest对象
        public static ManifestInfo GetManifestFromBytes(byte[] bytes)
        {
            ManifestInfo manifestInfo = null;

            try
            {
                //System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes.Uncompress());
                System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes);
                System.IO.BinaryReader br = new System.IO.BinaryReader(ms);
                br.BaseStream.Position = 0;
                manifestInfo           = new ManifestInfo();
                manifestInfo.version   = br.ReadString();
                uint      num = br.ReadUInt32();
                AssetInfo assetInfo;
                while (num-- > 0)
                {
                    List <string> fileNameList = new List <string>();

                    string subPath     = br.ReadString();
                    long   length      = br.ReadInt64();
                    long   createDate  = br.ReadInt64();
                    string md5         = br.ReadString();
                    string suffix      = br.ReadString();
                    uint   fileNameNum = br.ReadUInt32();
                    while (fileNameNum-- > 0)
                    {
                        fileNameList.Add(br.ReadString());
                    }
                    assetInfo = new AssetInfo(subPath, length, createDate, md5, suffix, fileNameList);
                    manifestInfo.assetDic.Add(assetInfo.SubPath, assetInfo);
                }
                br.Close();
                ms.Close();
                ms.Dispose();
                return(manifestInfo);
            }
            catch (Exception e)
            {
                Debugger.LogError("GetManifestFromBytes:" + e);
            }
            finally
            {
            }
            return(null);
        }
Esempio n. 39
0
        public static DDCaps Read(System.IO.BinaryReader r)
        {
            DDCaps caps = new DDCaps();

            caps.caps1 = r.ReadInt32();
            caps.caps2 = r.ReadInt32();
            r.ReadInt64(); // reserved[2]

            return(caps);
        }
Esempio n. 40
0
        private Folder GetFolder(IO.BinaryReader br)
        {
            DateTime created = new DateTime(br.ReadInt64());
            string   name    = ReadText(br);

            return(new Folder()
            {
                Name = name,
                CreatedDateUtc = created
            });
        }
Esempio n. 41
0
        public static object LoadKey(this DbColumnType keyType, io.BinaryReader reader)
        {
            switch (keyType)
            {
            case DbColumnType.Char:
                //
                return(reader.ReadChar());

            case DbColumnType.Byte:
                //
                return(reader.ReadByte());

            case DbColumnType.Int16:
                //
                return(reader.ReadInt16());

            case DbColumnType.Int32:
                //
                return(reader.ReadInt32());

            case DbColumnType.Int64:
                //
                return(reader.ReadInt64());

            case DbColumnType.Single:
                //
                return(reader.ReadSingle());

            case DbColumnType.Double:
                //
                return(reader.ReadDouble());

            case DbColumnType.Decimal:
                //
                return(reader.ReadDecimal());

            case DbColumnType.String:
                //
                var length = reader.ReadByte();
                var chars  = reader.ReadChars(length);
                return(new string(chars));

            default:
                return(null);
            }
        }
Esempio n. 42
0
        public static Queue <Tuple <int, byte[]> > GetBuffByFileLong(string file)
        {
            var r  = new Queue <Tuple <int, byte[]> >();
            var fs = new System.IO.FileStream(file, System.IO.FileMode.Open);
            var br = new System.IO.BinaryReader(fs);

            while (fs.Length > fs.Position + 4)
            {
                var len = br.ReadInt64();
                //var buff = br.ReadBytes(len);
                //var t = new Tuple<int, byte[]>(len, buff);
                //if (len == buff.Length)
                //    r.Enqueue(t);
            }
            fs.Close();
            return(r);
        }
Esempio n. 43
0
        VariableReference ReadVariableReference(System.IO.BinaryReader br)
        {
            VariableReference res = null;

            if (br.ReadBoolean())
            {
                res         = new Debugger.VariableReference();
                res.Address = br.ReadInt64();
                res.Type    = (VariableTypes)br.ReadByte();
                res.Offset  = br.ReadInt32();
                res.Name    = br.ReadString();
                res.Parent  = ReadVariableReference(br);
                int cnt = br.ReadInt32();
                res.Parameters = new VariableReference[cnt];
                for (int i = 0; i < cnt; i++)
                {
                    res.Parameters[i] = ReadVariableReference(br);
                }
            }
            return(res);
        }
        /// <summary>
        /// Deserialize from a binary stream
        /// </summary>
        /// <param name="reader">The binary reader to deserialize from</param>
        /// <returns>The deserialized instance (always the current object)</returns>
        public object Deserialize(System.IO.BinaryReader reader)
        {
            this.TimeStamp = DateTime.FromBinary(reader.ReadInt64());
            this.Width     = reader.ReadInt32();
            this.Height    = reader.ReadInt32();
            this.Stride    = reader.ReadInt32();

            var present = reader.ReadByte();

            if (present == DefinedElement)
            {
                var length = reader.ReadInt32();
                this.Data = reader.ReadBytes(length);
            }
            else
            {
                this.Data = null;
            }

            return(this);
        }
Esempio n. 45
0
        internal override void Read(System.IO.BinaryReader reader, BinaryReadInfo readInfo)
        {
            uint length = reader.ReadUInt32();

            ID = reader.ReadUInt32();
            uint numSections = reader.ReadUInt32();

            string componentName = null;
            bool   canResize     = false;
            bool   canFlip       = false;
            double minSize       = ComponentHelper.GridSize;
            List <ComponentProperty>          properties          = new List <ComponentProperty>();
            List <ConnectionGroup>            connections         = new List <ConnectionGroup>();
            List <RenderDescription>          renderDescriptions  = new List <RenderDescription>();
            List <Conditional <FlagOptions> > flagOptions         = new List <Conditional <FlagOptions> >();
            ComponentDescriptionMetadata      descriptionMetadata = new ComponentDescriptionMetadata();
            uint?iconResourceId = null;

            for (uint sectionCounter = 0; sectionCounter < numSections; sectionCounter++)
            {
                ushort sectionType   = reader.ReadUInt16();
                uint   sectionLength = reader.ReadUInt32();

                #region Metadata
                if (sectionType == (uint)BinaryConstants.ComponentSectionType.Metadata)
                {
                    componentName              = reader.ReadString();
                    canResize                  = reader.ReadBoolean();
                    canFlip                    = reader.ReadBoolean();
                    minSize                    = reader.ReadDouble();
                    descriptionMetadata.Type   = String.Format("Binary r{0} (*.cdcom)", readInfo.FormatVersion);
                    descriptionMetadata.GUID   = new Guid(reader.ReadBytes(16));
                    descriptionMetadata.Author = reader.ReadString();
                    if (readInfo.IsSignatureValid && readInfo.Certificate != null && readInfo.IsCertificateTrusted)
                    {
                        descriptionMetadata.Author = readInfo.Certificate.GetNameInfo(X509NameType.EmailName, false);
                    }
                    descriptionMetadata.Version = new Version(reader.ReadUInt16(), reader.ReadUInt16());
                    descriptionMetadata.AdditionalInformation          = reader.ReadString();
                    descriptionMetadata.ImplementSet                   = reader.ReadString();
                    descriptionMetadata.ImplementItem                  = reader.ReadString();
                    descriptionMetadata.Signature.IsHashValid          = readInfo.IsSignatureValid;
                    descriptionMetadata.Signature.Certificate          = readInfo.Certificate;
                    descriptionMetadata.Signature.IsCertificateTrusted = readInfo.IsCertificateTrusted;
                    int iconResource = reader.ReadInt32();
                    if (iconResource != -1)
                    {
                        iconResourceId = (uint)iconResource;
                    }
                    long created = reader.ReadInt64();
                }
                #endregion
                #region Flags
                else if (sectionType == (uint)BinaryConstants.ComponentSectionType.Flags)
                {
                    uint numFlagGroups = reader.ReadUInt32();
                    for (uint j = 0; j < numFlagGroups; j++)
                    {
                        IConditionTreeItem conditions;
                        if (readInfo.FormatVersion > 1)
                        {
                            conditions = reader.ReadConditionTree();
                        }
                        else
                        {
                            conditions = reader.ReadConditionCollection();
                        }

                        FlagOptions value = (FlagOptions)reader.ReadUInt32();
                        flagOptions.Add(new Conditional <FlagOptions>(value, conditions));
                    }
                }
                #endregion
                #region Properties
                else if (sectionType == (uint)BinaryConstants.ComponentSectionType.Properties)
                {
                    uint numProperties = reader.ReadUInt32();
                    for (uint j = 0; j < numProperties; j++)
                    {
                        string        propertyName   = reader.ReadString();
                        string        serializedName = reader.ReadString();
                        string        displayName    = reader.ReadString();
                        BinaryType    propType;
                        object        rawDefaultValue = reader.ReadType(out propType);
                        PropertyUnion defaultValue    = propType.ToPropertyUnion(rawDefaultValue);
                        string[]      enumOptions     = null;
                        if (propType == BinaryType.Enum)
                        {
                            enumOptions = new string[reader.ReadInt32()];
                            for (int k = 0; k < enumOptions.Length; k++)
                            {
                                enumOptions[k] = reader.ReadString();
                            }
                        }

                        // Format rules
                        List <ComponentPropertyFormat> formatRules = new List <ComponentPropertyFormat>();
                        uint numFormatRules = reader.ReadUInt32();
                        for (uint k = 0; k < numFormatRules; k++)
                        {
                            IConditionTreeItem conditions;
                            if (readInfo.FormatVersion > 1)
                            {
                                conditions = reader.ReadConditionTree();
                            }
                            else
                            {
                                conditions = reader.ReadConditionCollection();
                            }
                            string formatRule = reader.ReadString();
                            formatRules.Add(new ComponentPropertyFormat(formatRule, conditions));
                        }

                        // Other conditions
                        uint numOtherConditions = reader.ReadUInt32();
                        Dictionary <PropertyOtherConditionType, IConditionTreeItem> otherConditions = new Dictionary <PropertyOtherConditionType, IConditionTreeItem>((int)numOtherConditions);
                        for (uint k = 0; k < numOtherConditions; k++)
                        {
                            uint uintConditionType = reader.ReadUInt32();
                            IConditionTreeItem conditions;
                            if (readInfo.FormatVersion > 1)
                            {
                                conditions = reader.ReadConditionTree();
                            }
                            else
                            {
                                conditions = reader.ReadConditionCollection();
                            }
                            PropertyOtherConditionType conditionType = (PropertyOtherConditionType)uintConditionType;
                            otherConditions.Add(conditionType, conditions);
                        }

                        properties.Add(new ComponentProperty(propertyName, serializedName, displayName, BinaryIOExtentions.BinaryTypeToPropertyType(propType), defaultValue, formatRules.ToArray(), otherConditions, enumOptions));
                    }
                }
                #endregion
                #region Configurations
                else if (sectionType == (uint)BinaryConstants.ComponentSectionType.Configurations)
                {
                    uint numConfigurations = reader.ReadUInt32();
                    for (int j = 0; j < numConfigurations; j++)
                    {
                        string configurationName  = reader.ReadString();
                        string implementationName = reader.ReadString();

                        int numSetters = reader.ReadInt32();
                        var setters    = new Dictionary <string, PropertyUnion>(numSetters);
                        for (int k = 0; k < numSetters; k++)
                        {
                            BinaryType tempType;
                            string     name        = reader.ReadString();
                            var        setterValue = reader.ReadType(out tempType);
                            setters.Add(name, tempType.ToPropertyUnion(setterValue));
                        }

                        int iconID = reader.ReadInt32();

                        var configuration = new ComponentConfiguration(implementationName, configurationName, setters);
                        descriptionMetadata.Configurations.Add(configuration);

                        if (iconID != -1)
                        {
                            iconResources.Add(configuration, (uint)iconID);
                        }
                    }
                }
                #endregion
                #region Connections
                else if (sectionType == (uint)BinaryConstants.ComponentSectionType.Connections)
                {
                    uint numConnectionGroups = reader.ReadUInt32();
                    List <ConnectionGroup> connectionGroups = new List <ConnectionGroup>();
                    for (int j = 0; j < numConnectionGroups; j++)
                    {
                        IConditionTreeItem conditions;
                        if (readInfo.FormatVersion > 1)
                        {
                            conditions = reader.ReadConditionTree();
                        }
                        else
                        {
                            conditions = reader.ReadConditionCollection();
                        }

                        List <ConnectionDescription> tConnections = new List <ConnectionDescription>();
                        uint numConnections = reader.ReadUInt32();
                        for (uint k = 0; k < numConnections; k++)
                        {
                            tConnections.Add(new ConnectionDescription(reader.ReadComponentPoint(), reader.ReadComponentPoint(), (ConnectionEdge)reader.ReadInt32(), reader.ReadString()));
                        }

                        connections.Add(new ConnectionGroup(conditions, tConnections.ToArray()));
                    }
                }
                #endregion
                #region Render
                else if (sectionType == (uint)BinaryConstants.ComponentSectionType.Render)
                {
                    uint numRenderGroups = reader.ReadUInt32();
                    for (uint j = 0; j < numRenderGroups; j++)
                    {
                        IConditionTreeItem conditions;
                        if (readInfo.FormatVersion > 1)
                        {
                            conditions = reader.ReadConditionTree();
                        }
                        else
                        {
                            conditions = reader.ReadConditionCollection();
                        }

                        int numRenderCommands = (int)reader.ReadUInt32();
                        List <IRenderCommand> renderCommands = new List <IRenderCommand>(numRenderCommands);
                        for (int k = 0; k < numRenderCommands; k++)
                        {
                            RenderCommandType commandType = (RenderCommandType)reader.ReadUInt32();
                            switch (commandType)
                            {
                            case RenderCommandType.Line:
                            {
                                ComponentPoint start     = reader.ReadComponentPoint();
                                ComponentPoint end       = reader.ReadComponentPoint();
                                double         thickness = reader.ReadDouble();
                                renderCommands.Add(new Line(start, end, thickness));
                            }
                                continue;

                            case RenderCommandType.Rect:
                            {
                                ComponentPoint location  = reader.ReadComponentPoint();
                                double         width     = reader.ReadDouble();
                                double         height    = reader.ReadDouble();
                                double         thickness = reader.ReadDouble();
                                bool           fill      = (reader.ReadUInt32() == 0 ? false : true);
                                renderCommands.Add(new Rectangle(location, width, height, thickness, fill));
                            }
                                continue;

                            case RenderCommandType.Ellipse:
                            {
                                ComponentPoint centre    = reader.ReadComponentPoint();
                                double         radiusX   = reader.ReadDouble();
                                double         radiusY   = reader.ReadDouble();
                                double         thickness = reader.ReadDouble();
                                bool           fill      = (reader.ReadUInt32() == 0 ? false : true);
                                renderCommands.Add(new Ellipse(centre, radiusX, radiusY, thickness, fill));
                            }
                                continue;

                            case RenderCommandType.Path:
                            {
                                ComponentPoint start     = reader.ReadComponentPoint();
                                double         thickness = reader.ReadDouble();
                                bool           fill      = (reader.ReadUInt32() == 0 ? false : true);

                                int numCommands = reader.ReadInt32();
                                List <IPathCommand> pathCommands = new List <IPathCommand>(numCommands);
                                for (int l = 0; l < numCommands; l++)
                                {
                                    CommandType  pType      = (CommandType)reader.ReadInt32();
                                    IPathCommand theCommand = null;
                                    switch (pType)
                                    {
                                    case CommandType.MoveTo:
                                        theCommand = new MoveTo();
                                        break;

                                    case CommandType.LineTo:
                                        theCommand = new LineTo();
                                        break;

                                    case CommandType.CurveTo:
                                        theCommand = new CurveTo();
                                        break;

                                    case CommandType.EllipticalArcTo:
                                        theCommand = new EllipticalArcTo();
                                        break;

                                    case CommandType.QuadraticBeizerCurveTo:
                                        theCommand = new QuadraticBeizerCurveTo();
                                        break;

                                    case CommandType.SmoothCurveTo:
                                        theCommand = new SmoothCurveTo();
                                        break;

                                    case CommandType.SmoothQuadraticBeizerCurveTo:
                                        theCommand = new SmoothQuadraticBeizerCurveTo();
                                        break;

                                    default:
                                        theCommand = new ClosePath();
                                        break;
                                    }
                                    theCommand.Read(reader);
                                    pathCommands.Add(theCommand);
                                }

                                renderCommands.Add(new RenderPath(start, thickness, fill, pathCommands));
                            }
                                continue;

                            case RenderCommandType.Text:
                            {
                                byte           formattedTextVersion = reader.ReadByte();
                                ComponentPoint location             = reader.ReadComponentPoint();
                                TextAlignment  alignment            = (TextAlignment)reader.ReadUInt32();

                                uint           numTextRuns = reader.ReadUInt32();
                                List <TextRun> textRuns    = new List <TextRun>((int)numTextRuns);
                                for (uint l = 0; l < numTextRuns; l++)
                                {
                                    TextRunFormattingType formattingType = (TextRunFormattingType)reader.ReadUInt32();
                                    double runSize = reader.ReadDouble();
                                    string runText = reader.ReadString();
                                    textRuns.Add(new TextRun(runText, new TextRunFormatting(formattingType, runSize)));
                                }

                                renderCommands.Add(new Text(location, alignment, textRuns));
                            }
                                continue;
                            }
                        }

                        renderDescriptions.Add(new RenderDescription(conditions, renderCommands.ToArray()));
                    }
                }
                #endregion
                #region Skip
                else
                {
                    // Unknown type - skip
                    reader.BaseStream.Seek(sectionLength, SeekOrigin.Current);
                }
                #endregion
            }

            ComponentDescription = new ComponentDescription(ID.ToString(), componentName, canResize, canFlip, minSize, properties.ToArray(), connections.ToArray(), renderDescriptions.ToArray(), flagOptions.ToArray(), descriptionMetadata);

            if (iconResourceId.HasValue)
            {
                mainIconResource = iconResourceId.Value;
            }
        }
Esempio n. 46
0
        public static SteamGameServer GetServerInfo(IPEndPoint gameServerQueryEndpoint)
        {
            byte[] startBytes  = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF };
            byte   Header      = 0x54;
            string qryAsString = "Source Engine Query";

            List <byte> qry = new List <byte>();

            qry.AddRange(startBytes);
            qry.Add(Header);
            qry.AddRange(Encoding.Default.GetBytes(qryAsString));
            qry.Add(0x00);

            ServerQueryResponse item = null;
            var sw     = new System.Diagnostics.Stopwatch();
            var buffer = new byte[2048];

            using (System.Net.Sockets.UdpClient udp = new System.Net.Sockets.UdpClient())
            {
                try
                {
                    udp.Connect(gameServerQueryEndpoint);

                    udp.AllowNatTraversal(true);
                    udp.Client.ReceiveTimeout = 300;

                    sw.Start();
                    udp.Send(qry.ToArray(), qry.Count);

                    System.Net.Sockets.SocketError errorCode;
                    var receivedLenght = udp.Client.Receive(buffer, 0, 2048, System.Net.Sockets.SocketFlags.None,
                                                            out errorCode);
                    sw.Stop();
                    if (errorCode != System.Net.Sockets.SocketError.Success)
                    {
                        return(null);
                    }
                    if (receivedLenght == buffer.Length)
                    {
                        throw new Exception("Buffer zu klein");
                    }


                    var receivedBytes = new byte[receivedLenght];
                    Buffer.BlockCopy(buffer, 0, receivedBytes, 0, receivedLenght);
                    //var receivedBytes = udp.Receive(ref endp);

                    var enconding = System.Text.Encoding.UTF8; // System.Text.Encoding.ASCII;

                    using (var mem = new System.IO.MemoryStream(receivedBytes))
                        using (var br = new System.IO.BinaryReader(mem, CharEncoding))
                        {
                            br.ReadInt32();
                            br.ReadByte();

                            item                 = new ServerQueryResponse();
                            item.IpAdresse       = gameServerQueryEndpoint.Address.ToString();
                            item.ProtocolVersion = br.ReadByte();

                            item.Ping = (int)sw.ElapsedMilliseconds;

                            var count = Array.FindIndex(receivedBytes, (int)mem.Position, IsNULL) - (int)mem.Position;
                            item.GameServerName = enconding.GetString(br.ReadBytes(count));
                            br.ReadByte(); // null-byte

                            count    = Array.FindIndex(receivedBytes, (int)mem.Position, IsNULL) - (int)mem.Position;
                            item.Map = enconding.GetString(br.ReadBytes(count));
                            br.ReadByte(); // null-byte
                            //item.Map = ReadStringNullTerminated(br, enconding);

                            count       = Array.FindIndex(receivedBytes, (int)mem.Position, IsNULL) - (int)mem.Position;
                            item.Folder = enconding.GetString(br.ReadBytes(count));
                            br.ReadByte(); // null-byte

                            count     = Array.FindIndex(receivedBytes, (int)mem.Position, IsNULL) - (int)mem.Position;
                            item.Game = enconding.GetString(br.ReadBytes(count));
                            br.ReadByte(); // null-byte

                            item.ID = br.ReadInt16();

                            item.CurrentPlayerCount = br.ReadByte();

                            item.MaxPlayerCount = br.ReadByte();

                            item.CurrentBotsCount = br.ReadByte();

                            item.ServerType = (ServerQueryRequestType)br.ReadByte();

                            item.Password = br.ReadByte() == 1;

                            item.VAC = br.ReadByte() == 1;

                            item.Mode = br.ReadByte() == 1;

                            count        = Array.FindIndex(receivedBytes, (int)mem.Position, IsNULL) - (int)mem.Position;
                            item.Version = enconding.GetString(br.ReadBytes(count));
                            br.ReadByte(); // null-byte

                            var edfCode = br.ReadByte();

                            item.Data = receivedBytes;

                            if ((edfCode & 0x80) == 0x80)
                            {
                                item.GamePort = br.ReadUInt16();
                            }



                            if ((edfCode & 0x10) == 0x10)
                            {
                                item.ServerSteamId = br.ReadInt64();
                            }

                            //if ((edfCode & 0x40) == 0x40)
                            //    Console.WriteLine("spectator server");

                            if ((edfCode & 0x20) == 0x20)
                            {
                                count         = Array.FindIndex(receivedBytes, (int)mem.Position, IsNULL) - (int)mem.Position;
                                item.Keywords = enconding.GetString(br.ReadBytes(count));
                                br.ReadByte(); // null-byte
                            }

                            if ((edfCode & 0x01) == 0x01)
                            {
                                item.GameID = br.ReadInt64();
                            }

                            // https://community.bistudio.com/wiki/STEAMWORKSquery
                            // https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol
                        }

                    RequestRules(item, udp);

                    if (item.CurrentPlayerCount > 0)
                    {
                        udp.Client.ReceiveTimeout = Math.Max(300, Convert.ToInt32((6d * item.CurrentPlayerCount)));
                        RequestPlayers(item, udp);
                    }
                }
                catch
                {
                    sw.Stop();
                }
            }
            return(item != null
                ? new SteamGameServer
            {
                Host = gameServerQueryEndpoint.Address,
                QueryPort = gameServerQueryEndpoint.Port,
                Name = item.GameServerName,
                //Gamename = SteamGameNameFilter,
                Map = item.Map,
                Mission = item.Game,
                MaxPlayers = item.MaxPlayerCount,
                CurrentPlayerCount = item.CurrentPlayerCount,
                Passworded = item.Password,
                Port = item.GamePort,
                Version = item.Version,
                Keywords = item.Keywords,
                CurrentPlayers = new string[0],
                Ping = item.Ping,
                Players = item.Players?.Cast <ISteamGameServerPlayer>().ToArray(),
                Mods = GetValue("modNames", item.KeyValues),
                Modhashs = GetValue("modHashes", item.KeyValues),
                Signatures = GetValue("sigNames", item.KeyValues),
                VerifySignatures = item.Keywords.Contains(",vt,")
            }
                : null);
        }
Esempio n. 47
0
        /// <summary>
        /// DeSerialize
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="reader"></param>
        public override void Unpack(IInternalPersistent parent,
                                    BinaryReader reader)
        {
            System.IO.BinaryReader binaryReader = reader;
            long l = binaryReader.ReadInt64();

            if (l >= 0)
            {
                DiskBuffer.DataAddress = l;
            }
            long cnt = binaryReader.ReadInt64();
            long saa = binaryReader.ReadInt64();

            if ((Count > 0 && cnt == 0) ||
                StartAllocatableAddress > 0 && saa == 0)
            {
                binaryReader.ReadInt64();
                binaryReader.ReadInt64();
                binaryReader.ReadInt64();
                binaryReader.ReadInt64();
                if (reader.ReadBoolean())
                {
                    var rs = new DeletedBlockInfo();
                    rs.Unpack(parent, reader);
                }
                return;
            }
            Count = cnt;                   //BinaryReader.ReadInt32();
            StartAllocatableAddress = saa; // BinaryReader.ReadInt64();
            EndAllocatableAddress   = binaryReader.ReadInt64();
            NextAllocatableAddress  = binaryReader.ReadInt64();
            long          obh = binaryReader.ReadInt64();
            long          obt = binaryReader.ReadInt64();
            DataBlockSize dataBlockSize;

            if (parent != null)
            {
                File.File f = (File.File)InternalPersistent.GetParent(parent, typeof(File.File), true);
                dataBlockSize = f.DataBlockSize;
            }
            else
            {
                dataBlockSize = (DataBlockSize)DiskBuffer.Length;
            }
            if (obh >= 0)
            {
                OccupiedBlocksHead             = new Sop.DataBlock(dataBlockSize);
                OccupiedBlocksHead.DataAddress = obh;
            }
            else if (OccupiedBlocksHead != null)
            {
                OccupiedBlocksHead = null;
            }
            if (obt >= 0)
            {
                OccupiedBlocksTail             = new Sop.DataBlock(dataBlockSize);
                OccupiedBlocksTail.DataAddress = obt;
            }
            else if (OccupiedBlocksTail != null)
            {
                OccupiedBlocksTail = null;
            }

            if (reader.ReadBoolean())
            {
                RecycledSegment = new DeletedBlockInfo();
                RecycledSegment.Unpack(parent, reader);
                RecycledSegmentBeforeTransaction = (DeletedBlockInfo)RecycledSegment.Clone();
            }
        }
Esempio n. 48
0
            public override void Read(System.IO.BinaryReader br)
            {
                Int64 tmp = br.ReadInt64();

                propertyValue = DateTime.FromFileTime(tmp);
            }
Esempio n. 49
0
        public override object[] ReadDbRecord(int offset)
        {
            var mainMask = Table.RowMask;
            var bytes    = Table.RowMaskLength;

            //point to record offset
            reader.BaseStream.Position = offset;

            //read record
            var buffer = new byte[sizeof(UInt64)];

            reader.Read(buffer, 0, bytes);
            var recordMask = BitConverter.ToUInt64(buffer, 0);
            //copy main
            var bitMask     = mainMask;
            var columnCount = Table.Count;

            //create record according to table columns
            var dbRecord = new object[columnCount];

            for (var i = 0; i < columnCount; i++)
            {
                var colType = Table.ColumnTypes[i];

                if ((recordMask & bitMask) == 0)
                {
                    //not null value
                    object value = null;

                    switch (colType)
                    {
                    case DbColumnType.Char:
                        value = reader.ReadChar();
                        break;

                    case DbColumnType.Byte:
                        value = reader.ReadByte();
                        break;

                    case DbColumnType.Int16:
                        value = reader.ReadInt16();
                        break;

                    case DbColumnType.Int32:
                        value = reader.ReadInt32();
                        break;

                    case DbColumnType.Int64:
                        value = reader.ReadInt64();
                        break;

                    case DbColumnType.Single:
                        value = reader.ReadSingle();
                        break;

                    case DbColumnType.Double:
                        value = reader.ReadDouble();
                        break;

                    case DbColumnType.Decimal:
                        value = reader.ReadDecimal();
                        break;

                    case DbColumnType.String:
                        value = reader.ReadString();
                        break;

                    default:
                        throw new ArgumentException($"invalid column type: {colType}");
                    }
                    //store value in right spot
                    dbRecord[i] = value;
                }
                bitMask >>= 1;
            }
            //
            return(dbRecord);
        }
Esempio n. 50
0
 public long ReadLong()
 {
     return(IPAddress.NetworkToHostOrder(br.ReadInt64()));
 }
Esempio n. 51
0
 public long getLong()
 {
     return(reader.ReadInt64());
 }
Esempio n. 52
0
            public override void Read(System.IO.BinaryReader br)
            {
                Int64 temp = br.ReadInt64();

                this.propertyValue = (double)(temp /= 10000);
            }
Esempio n. 53
0
            public override long ReadScalarValue(System.IO.BinaryReader br)
            {
                var r = br.ReadInt64();

                return(r);
            }
Esempio n. 54
0
            public override DateTime ReadScalarValue(System.IO.BinaryReader br)
            {
                Int64 tmp = br.ReadInt64();

                return(DateTime.FromFileTime(tmp));
            }