cmvr-es/protos/cmvr/config/quic_edge_config/quic_edge_config.proto
xtkuang 428ee328de feat: complete QUIC edge integration
Vendor MsQuic with build and install support, add DeviceManager status to configurable heartbeats, and report only enabled devices.

Add the local QUIC gateway, protocol coverage, real MsQuic E2E tests, process smoke tests, and updated integration documentation.
2026-07-24 12:35:04 +08:00

91 lines
2.8 KiB
Protocol Buffer

syntax = "proto3";
package cmvr.config;
message QuicEdgeTlsConfig {
string ca_file = 1;
string certificate_file = 2;
string private_key_file = 3;
string server_name = 4;
// Development-only escape hatch. Production configurations should keep
// this false and provide ca_file plus server_name.
bool allow_insecure = 5;
}
message QuicEdgeReconnectConfig {
uint32 initial_delay_ms = 1;
uint32 maximum_delay_ms = 2;
double multiplier = 3;
uint32 jitter_percent = 4;
uint32 connect_timeout_ms = 5;
}
message QuicEdgeTrackConfig {
enum SourceKind {
SOURCE_KIND_UNSPECIFIED = 0;
SOURCE_KIND_CAMERA = 1;
SOURCE_KIND_MICROPHONE = 2;
}
uint32 track_id = 1;
SourceKind source_kind = 2;
string device_id = 3;
bool enable = 4;
// Zero uses QuicEdgeConfig.maximum_frame_bytes.
uint32 max_frame_bytes = 5;
// Protocol-neutral MediaSourceHub track ID. When empty, the service derives
// the default ID from source_kind and device_id (for example
// "right_hand_cam/video/color"). The Hub's descriptor is the authority for
// codec metadata and descriptor generation.
string source_track_id = 6;
}
message QuicEdgeConfig {
string id = 1;
bool enable = 2;
string server_host = 3;
uint32 server_port = 4;
string alpn = 5;
string node_id = 6;
QuicEdgeTlsConfig tls = 7;
QuicEdgeReconnectConfig reconnect = 8;
// Local safety limits. The effective DATAGRAM size is the minimum of this
// value and the peer/path value reported by the QUIC implementation.
uint32 maximum_datagram_bytes = 9;
uint32 maximum_control_frame_bytes = 10;
uint32 maximum_frame_bytes = 11;
uint32 datagram_send_queue_depth = 12;
uint32 media_poll_interval_ms = 13;
// Node-presence fields migrated from the former gRPC edge agent. node_id may
// be "auto" when the implementation supports hostname-based resolution.
string software_version = 14;
// Existing edge gRPC server endpoint advertised to the gateway. Empty or
// "auto" host selects a usable address from the current interface snapshot.
string grpc_endpoint_host = 15;
uint32 grpc_endpoint_port = 16;
bool grpc_endpoint_tls = 17;
// Local heartbeat frequency in milliseconds. A zero
// NodeRegisterResponse.heartbeat_interval_ms keeps this value; a non-zero
// response is the platform's negotiated override.
// control_response_timeout_ms applies while waiting for registration and
// heartbeat acknowledgements on the reliable stream.
uint32 heartbeat_interval_ms = 18;
uint32 control_response_timeout_ms = 19;
// An empty list, or a list with no enabled entry, is valid: node registration,
// IP reporting and heartbeat continue without a camera or microphone.
repeated QuicEdgeTrackConfig tracks = 20;
bool include_loopback_interfaces = 21;
}
message QuicEdgeRootConfig {
QuicEdgeConfig quic_edge = 1;
}