@startuml class RpcBaseHeader { + RpcBaseHeader(uniqueClientQueueId: cxx::UniqueId&, lastKnownQueueIndex: uint32_t, sequenceId: uint64_t, rpcHeaderVersion: uint8_t) + getRpcHeaderVersion(): uint8_t + getSequenceId(): int64_t + getChunkHeader(): ChunkHeader* + getUserPayload(): void* # m_rpcHeaderVersion: uint8_t # m_lastKnownClientQueueIndex: uint32_t # m_uniqueClientQueueId: cxx::UniqueId # m_sequenceId: int64_t } class RequestHeader { + RequestHeader(uniqueClientQueueId: cxx::UniqueId&, lastKnownQueueIndex: uint32_t) + setSequenceId(sequenceId: int64_t): void {static} fromPayload(payload: void*): RequestHeader* } class ResponseHeader { + ResponseHeader(uniqueClientQueueId: cxx::UniqueId&, lastKnownQueueIndex: uint32_t, sequenceId: uint64_t) + setServerError(): void + hasServerError(): bool {static} fromPayload(payload: void*): RequestHeader* - m_hasServerError: bool } RequestHeader --> RpcBaseHeader ResponseHeader --> RpcBaseHeader @enduml