namespace ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Ipc;
///
/// Length-prefixed framing constants for the Wonderware historian sidecar TCP protocol.
/// Each frame on the wire is:
/// [4-byte big-endian length][1-byte message kind][MessagePack body].
/// Length is the body size only; the kind byte is not part of the prefixed length.
///
///
/// Mirrors the Galaxy.Shared framing exactly so the same FrameReader/FrameWriter pattern
/// works on both sides. The sidecar's protocol is independent — both the .NET 4.8 server
/// side and the .NET 10 client (PR 3.4) carry their own copies of these constants and
/// stay in sync via the round-trip test matrix.
///
public static class Framing
{
public const int LengthPrefixSize = 4;
public const int KindByteSize = 1;
/// 16 MiB cap protects the receiver from a hostile or buggy peer.
public const int MaxFrameBodyBytes = 16 * 1024 * 1024;
}
///
/// Wire identifier for each historian sidecar message. Values are stable — never reorder;
/// append new contracts at the end. The .NET 10 client and the .NET 4.8 sidecar must
/// agree on every value here.
///
public enum MessageKind : byte
{
Hello = 0x01,
HelloAck = 0x02,
ReadRawRequest = 0x10,
ReadRawReply = 0x11,
ReadProcessedRequest = 0x12,
ReadProcessedReply = 0x13,
ReadAtTimeRequest = 0x14,
ReadAtTimeReply = 0x15,
ReadEventsRequest = 0x16,
ReadEventsReply = 0x17,
WriteAlarmEventsRequest = 0x20,
WriteAlarmEventsReply = 0x21,
}