public void WriteHeartbeat(BinaryWriter writer, AgentOperationMode mode, ushort sendBufferSize) { writer.Write(MessageTypes.Heartbeat); switch (mode) { case AgentOperationMode.Initializing: writer.Write((byte)73); break; case AgentOperationMode.Paused: writer.Write((byte)80); break; case AgentOperationMode.Suspended: writer.Write((byte)83); break; case AgentOperationMode.Tracing: writer.Write((byte)84); break; case AgentOperationMode.Shutdown: writer.Write((byte)88); break; default: throw new InvalidOperationException($"Unable to write heatbeat for unknown AgentOperationMode: {mode}."); } writer.WriteBigEndian(sendBufferSize); }
private void TriggerModeChange(AgentOperationMode newMode) { if (CurrentMode == AgentOperationMode.Shutdown) { return; } var oldMode = CurrentMode; CurrentMode = newMode; lock (_listeners) { foreach (var listener in _listeners) { listener.OnModeChange(oldMode, newMode); } } }