internal DynamicManifestTraceEventData(Action<TraceEvent> action, ProviderManifest manifest) : base(action, 0xFFFE, 0, "ManifestData", Guid.Empty, 0, null, manifest.Guid, manifest.Name) { this.manifest = manifest; payloadNames = new string[] { "Format", "MajorVersion", "MinorVersion", "Magic", "TotalChunks", "ChunkNumber" }; payloadFetches = new PayloadFetch[] { new PayloadFetch(0, 1, typeof(byte)), new PayloadFetch(1, 1, typeof(byte)), new PayloadFetch(2, 1, typeof(byte)), new PayloadFetch(3, 1, typeof(byte)), new PayloadFetch(4, 2, typeof(ushort)), new PayloadFetch(6, 2, typeof(ushort)), }; Action += action; }
void IFastSerializable.FromStream(Deserializer deserializer) { eventID = (TraceEventID)deserializer.ReadInt(); task = (TraceEventTask)deserializer.ReadInt(); deserializer.Read(out taskName); deserializer.Read(out taskGuid); opcode = (TraceEventOpcode)deserializer.ReadInt(); deserializer.Read(out opcodeName); deserializer.Read(out providerGuid); deserializer.Read(out providerName); deserializer.Read(out MessageFormat); deserializer.Read(out lookupAsWPP); int count; deserializer.Read(out count); payloadNames = new string[count]; for (int i = 0; i < count; i++) deserializer.Read(out payloadNames[i]); deserializer.Read(out count); payloadFetches = new PayloadFetch[count]; for (int i = 0; i < count; i++) { payloadFetches[i].offset = (ushort)deserializer.ReadInt16(); payloadFetches[i].size = (ushort)deserializer.ReadInt16(); var typeName = deserializer.ReadString(); if (typeName != null) payloadFetches[i].type = Type.GetType(typeName); IFastSerializable dummy; deserializer.Read(out dummy); // For map when we use it. } }