void Deserialize(byte[] data)
        {
            using (DataStream ds = new DataStream(data))
            {
                while (ds.SizeRemaining() > 0)
                {
                    uint magic = ds.ReadUInt32();
                    ds.Seek(-4, SeekOrigin.Current);

                    switch (magic)
                    {
                    case Steam3Manifest.MAGIC:
                        Steam3Manifest binaryManifest = new Steam3Manifest(ds);
                        ParseBinaryManifest(binaryManifest);
                        break;

                    // todo: handle protobuf manifest?

                    default:
                        throw new NotImplementedException(string.Format("Unrecognized magic value {0:X} in depot manifest.", magic));
                    }

                    uint marker = ds.ReadUInt32();
                    if (marker != magic)
                    {
                        throw new InvalidDataException("Unable to find end of message marker for depot manifest");
                    }
                }
            }
        }
Example #2
0
        internal Steam2Ticket(byte[] blob)
        {
            Entries = new List <Entry>();

            using (var ds = new DataStream(blob))
            {
                Magic = ds.ReadUInt16();

                Length   = ds.ReadUInt32();
                unknown1 = ds.ReadUInt32();

                while (ds.SizeRemaining() > 0)
                {
                    var entry = new Entry();
                    entry.Deserialize(ds);

                    Entries.Add(entry);
                }
            }
        }