1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
7 namespace Mono.Profiler.Log {
9 public sealed class LogStreamHeader {
11 const int Id = 0x4d505a01;
13 public Version Version { get; }
15 public int FormatVersion { get; }
17 public byte PointerSize { get; }
19 public ulong StartupTime { get; }
21 public int TimerOverhead { get; }
23 public int Flags { get; }
25 public int ProcessId { get; }
27 public int Port { get; }
29 public string Arguments { get; }
31 public string Architecture { get; }
33 public string OperatingSystem { get; }
35 internal LogStreamHeader (LogReader reader)
37 var id = reader.ReadInt32 ();
40 throw new LogException ($"Invalid stream header ID (0x{id:X}).");
42 Version = new Version (reader.ReadByte (), reader.ReadByte ());
43 FormatVersion = reader.ReadByte ();
44 PointerSize = reader.ReadByte ();
45 StartupTime = reader.ReadUInt64 ();
46 TimerOverhead = reader.ReadInt32 ();
47 Flags = reader.ReadInt32 ();
48 ProcessId = reader.ReadInt32 ();
49 Port = reader.ReadUInt16 ();
50 Arguments = reader.ReadHeaderString ();
51 Architecture = reader.ReadHeaderString ();
52 OperatingSystem = reader.ReadHeaderString ();