From 0f89c15ea2c7be879df48069ecaeb12965bd12d6 Mon Sep 17 00:00:00 2001 From: uartnet <140632163+uartnet@users.noreply.github.com> Date: Wed, 28 Oct 2026 15:57:00 +0100 Subject: [PATCH] chore: sync protocol 1.4.7 datagram channel negotiation --- proto/rstream.proto | 7 +++++- src/rstream/_proto/rstream_pb2.py | 34 +++++++++++++++--------------- src/rstream/_proto/rstream_pb2.pyi | 12 +++++++---- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/proto/rstream.proto b/proto/rstream.proto index 0e098cf..7d2e249 100644 --- a/proto/rstream.proto +++ b/proto/rstream.proto @@ -14,7 +14,7 @@ extend google.protobuf.FieldOptions { string access = 51234; } -option (protocol_version) = "1.4.6"; +option (protocol_version) = "1.4.7"; package rstream.io_rstrm.protobuf; @@ -259,11 +259,16 @@ message StreamReq { string tunnel_id_name = 2; google.protobuf.BoolValue zero_rtt = 3; google.protobuf.BoolValue datagram_channel = 4; + // Opt in to a separate dialer routing ID; the owner still uses stream_id. + bool independent_datagram_channel = 5; } // Server's response to a 'StreamReq'. Skipped if zero_rtt option is enabled. message StreamRsp { + // Exactly 12 bytes when independent_datagram_channel was negotiated. + // The datagram prefix uses this ID; lifecycle messages keep stream_id. + bytes datagram_channel_id = 3; oneof payload { string stream_id = 1; Error error = 2; diff --git a/src/rstream/_proto/rstream_pb2.py b/src/rstream/_proto/rstream_pb2.py index eb9a6be..4c069e2 100644 --- a/src/rstream/_proto/rstream_pb2.py +++ b/src/rstream/_proto/rstream_pb2.py @@ -27,14 +27,14 @@ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rrstream.proto\x12\x19rstream.io_rstrm.protobuf\x1a google/protobuf/descriptor.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"/\n\tIpAddress\x12\x0c\n\x02v4\x18\x01 \x01(\x07H\x00\x12\x0c\n\x02v6\x18\x02 \x01(\x0cH\x00\x42\x06\n\x04\x61\x64\x64r\"j\n\x05\x45rror\x12\x32\n\x04\x63ode\x18\x01 \x01(\x0e\x32$.rstream.io_rstrm.protobuf.ErrorCode\x12-\n\x07message\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xd5\x02\n\rClientDetails\x12+\n\x05\x61gent\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x07version\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12(\n\x02os\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04\x61rch\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12+\n\x05token\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12\x36\n\x10protocol_version\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xd2\x02\n\rServerDetails\x12+\n\x05\x61gent\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x07version\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04plan\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12.\n\x08provider\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12,\n\x06region\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12,\n\x06update\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\x9a\x01\n\x08HttpCors\x12\x17\n\x0f\x61llowed_origins\x18\x01 \x03(\t\x12\x17\n\x0f\x61llowed_methods\x18\x02 \x03(\t\x12\x17\n\x0f\x61llowed_headers\x18\x03 \x03(\t\x12\x17\n\x0f\x65xposed_headers\x18\x04 \x03(\t\x12\x19\n\x11\x61llow_credentials\x18\x05 \x01(\x08\x12\x0f\n\x07max_age\x18\x06 \x01(\x03\"\xd8\r\n\x10TunnelProperties\x12\x37\n\x02id\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\r\x92\x82\x19\tread-only\x12@\n\rcreation_date\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\r\x92\x82\x19\tread-only\x12:\n\x04name\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12:\n\x04type\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12;\n\x07publish\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12>\n\x08protocol\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12W\n\x06labels\x18\x07 \x03(\x0b\x32\x37.rstream.io_rstrm.protobuf.TunnelProperties.LabelsEntryB\x0e\x92\x82\x19\nread-write\x12\x1d\n\x05geoip\x18\x08 \x03(\tB\x0e\x92\x82\x19\nread-write\x12#\n\x0btrusted_ips\x18\t \x03(\tB\x0e\x92\x82\x19\nread-write\x12;\n\x04host\x18\n \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0f\x18\x01\x92\x82\x19\tread-only\x12>\n\x08tls_mode\x18\x0b \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12!\n\ttls_alpns\x18\x0c \x03(\tB\x0e\x92\x82\x19\nread-write\x12\x45\n\x0ftls_min_version\x18\r \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12#\n\x0btls_ciphers\x18\x0e \x03(\tB\x0e\x92\x82\x19\nread-write\x12=\n\tmtls_auth\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12G\n\x0fmtls_cacert_pem\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x10\x18\x01\x92\x82\x19\nread-write\x12\x42\n\x0chttp_version\x18\x11 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12\x42\n\x0chttp_use_tls\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x10\x18\x01\x92\x82\x19\nread-write\x12>\n\ntoken_auth\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12@\n\x0crstream_auth\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12\x42\n\x0e\x63hallenge_mode\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12>\n\x08hostname\x18\x16 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12:\n\x04port\x18\x17 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0e\x92\x82\x19\nread-write\x12@\n\x0cupstream_tls\x18\x18 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12P\n\x1c\x64\x61tagram_guaranteed_delivery\x18\x19 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12N\n\x1a\x61llow_cross_region_routing\x18\x1a \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12\x46\n\thttp_cors\x18\x1b \x01(\x0b\x32#.rstream.io_rstrm.protobuf.HttpCorsB\x0e\x92\x82\x19\nread-write\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x9e\x01\n\x15OpenControlChannelReq\x12@\n\x0e\x63lient_details\x18\x01 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ClientDetails\x12\x43\n\x08liveness\x18\x02 \x01(\x0b\x32\x31.rstream.io_rstrm.protobuf.ControlChannelLiveness\"\xb9\x02\n\x15OpenControlChannelRsp\x12\x41\n\x02ok\x18\x01 \x01(\x0b\x32\x33.rstream.io_rstrm.protobuf.OpenControlChannelRsp.OkH\x00\x12\x31\n\x05\x65rror\x18\x02 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.ErrorH\x00\x1a\x9e\x01\n\x02Ok\x12\x11\n\tclient_id\x18\x01 \x01(\t\x12@\n\x0eserver_details\x18\x02 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ServerDetails\x12\x43\n\x08liveness\x18\x03 \x01(\x0b\x32\x31.rstream.io_rstrm.protobuf.ControlChannelLivenessB\t\n\x07payload\"\x18\n\x16\x43loseControlChannelReq\"\x18\n\x16\x43loseControlChannelRsp\"k\n\rOpenTunnelReq\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x46\n\x11tunnel_properties\x18\x02 \x01(\x0b\x32+.rstream.io_rstrm.protobuf.TunnelProperties\"\xab\x01\n\rOpenTunnelRsp\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12H\n\x11tunnel_properties\x18\x02 \x01(\x0b\x32+.rstream.io_rstrm.protobuf.TunnelPropertiesH\x00\x12\x31\n\x05\x65rror\x18\x03 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.ErrorH\x00\x42\t\n\x07payload\"#\n\x0e\x43loseTunnelReq\x12\x11\n\ttunnel_id\x18\x01 \x01(\t\"#\n\x0e\x43loseTunnelRsp\x12\x11\n\ttunnel_id\x18\x01 \x01(\t\"\xd1\x01\n\x0cProxyConnReq\x12\x11\n\ttunnel_id\x18\x01 \x01(\t\x12\x11\n\tstream_id\x18\x02 \x01(\t\x12,\n\x06secret\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12\x37\n\tsource_ip\x18\x04 \x01(\x0b\x32$.rstream.io_rstrm.protobuf.IpAddress\x12\x34\n\x0eproxy_endpoint\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"R\n\x0cProxyConnRsp\x12\x11\n\tstream_id\x18\x01 \x01(\t\x12/\n\x05\x65rror\x18\x02 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.Error\"\x8d\x01\n\x08ProxyReq\x12@\n\x0e\x63lient_details\x18\x01 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ClientDetails\x12\x11\n\tstream_id\x18\x02 \x01(\t\x12,\n\x08zero_rtt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\";\n\x08ProxyRsp\x12/\n\x05\x65rror\x18\x01 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.Error\"\xc9\x01\n\tStreamReq\x12@\n\x0e\x63lient_details\x18\x01 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ClientDetails\x12\x16\n\x0etunnel_id_name\x18\x02 \x01(\t\x12,\n\x08zero_rtt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x34\n\x10\x64\x61tagram_channel\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"^\n\tStreamRsp\x12\x13\n\tstream_id\x18\x01 \x01(\tH\x00\x12\x31\n\x05\x65rror\x18\x02 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.ErrorH\x00\x42\t\n\x07payload\"Z\n\x14\x44\x61tagramChannelClose\x12\x11\n\tstream_id\x18\x01 \x01(\t\x12/\n\x05\x65rror\x18\x02 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.Error\"U\n\x16\x43ontrolChannelLiveness\x12\x1d\n\x15heartbeat_interval_ms\x18\x01 \x01(\r\x12\x1c\n\x14heartbeat_timeout_ms\x18\x02 \x01(\r\"6\n\tHeartbeat\x12\x10\n\x08sequence\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x63knowledgement\x18\x02 \x01(\x04\" \n\rServerMessage\x12\x0f\n\x07message\x18\x01 \x01(\t\"\xcc\t\n\x07Message\x12T\n\x18open_control_channel_req\x18\x01 \x01(\x0b\x32\x30.rstream.io_rstrm.protobuf.OpenControlChannelReqH\x00\x12T\n\x18open_control_channel_rsp\x18\x02 \x01(\x0b\x32\x30.rstream.io_rstrm.protobuf.OpenControlChannelRspH\x00\x12V\n\x19\x63lose_control_channel_req\x18\x03 \x01(\x0b\x32\x31.rstream.io_rstrm.protobuf.CloseControlChannelReqH\x00\x12V\n\x19\x63lose_control_channel_rsp\x18\x04 \x01(\x0b\x32\x31.rstream.io_rstrm.protobuf.CloseControlChannelRspH\x00\x12\x43\n\x0fopen_tunnel_req\x18\x05 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.OpenTunnelReqH\x00\x12\x43\n\x0fopen_tunnel_rsp\x18\x06 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.OpenTunnelRspH\x00\x12\x45\n\x10\x63lose_tunnel_req\x18\x07 \x01(\x0b\x32).rstream.io_rstrm.protobuf.CloseTunnelReqH\x00\x12\x45\n\x10\x63lose_tunnel_rsp\x18\x08 \x01(\x0b\x32).rstream.io_rstrm.protobuf.CloseTunnelRspH\x00\x12\x41\n\x0eproxy_conn_req\x18\t \x01(\x0b\x32\'.rstream.io_rstrm.protobuf.ProxyConnReqH\x00\x12\x41\n\x0eproxy_conn_rsp\x18\n \x01(\x0b\x32\'.rstream.io_rstrm.protobuf.ProxyConnRspH\x00\x12\x38\n\tproxy_req\x18\x0b \x01(\x0b\x32#.rstream.io_rstrm.protobuf.ProxyReqH\x00\x12\x38\n\tproxy_rsp\x18\x0c \x01(\x0b\x32#.rstream.io_rstrm.protobuf.ProxyRspH\x00\x12:\n\nstream_req\x18\r \x01(\x0b\x32$.rstream.io_rstrm.protobuf.StreamReqH\x00\x12:\n\nstream_rsp\x18\x0e \x01(\x0b\x32$.rstream.io_rstrm.protobuf.StreamRspH\x00\x12\x39\n\theartbeat\x18\x0f \x01(\x0b\x32$.rstream.io_rstrm.protobuf.HeartbeatH\x00\x12\x42\n\x0eserver_message\x18\x10 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ServerMessageH\x00\x12Q\n\x16\x64\x61tagram_channel_close\x18\x11 \x01(\x0b\x32/.rstream.io_rstrm.protobuf.DatagramChannelCloseH\x00\x42\t\n\x07payload*\xd8\x03\n\tErrorCode\x12\x1a\n\x16\x45RROR_CODE_UNSPECIFIED\x10\x00\x12\x1c\n\x17\x45RROR_CODE_UNAUTHORIZED\x10\xe8\x07\x12\x1f\n\x1a\x45RROR_CODE_INVALID_REQUEST\x10\xd0\x0f\x12(\n#ERROR_CODE_PROTOCOL_VERSION_MISSING\x10\xda\x0f\x12(\n#ERROR_CODE_PROTOCOL_VERSION_INVALID\x10\xe4\x0f\x12-\n(ERROR_CODE_PROTOCOL_VERSION_INCOMPATIBLE\x10\xee\x0f\x12 \n\x1b\x45RROR_CODE_TUNNEL_NOT_FOUND\x10\xb8\x17\x12\x1e\n\x19\x45RROR_CODE_INVALID_STREAM\x10\xa0\x1f\x12%\n ERROR_CODE_FEATURE_NOT_AVAILABLE\x10\x88\'\x12#\n\x1e\x45RROR_CODE_SERVICE_UNAVAILABLE\x10\xf0.\x12\"\n\x1d\x45RROR_CODE_CAPACITY_EXHAUSTED\x10\xd8\x36\x12!\n\x1c\x45RROR_CODE_RESOURCE_CONFLICT\x10\xc0>\x12\x18\n\x13\x45RROR_CODE_INTERNAL\x10\xa8\x46:8\n\x10protocol_version\x12\x1c.google.protobuf.FileOptions\x18\xb8\x8e\x03 \x01(\t:/\n\x06\x61\x63\x63\x65ss\x12\x1d.google.protobuf.FieldOptions\x18\xa2\x90\x03 \x01(\tB\x0fZ\x04./pb\xc2\xf3\x18\x05\x31.4.6b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rrstream.proto\x12\x19rstream.io_rstrm.protobuf\x1a google/protobuf/descriptor.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"/\n\tIpAddress\x12\x0c\n\x02v4\x18\x01 \x01(\x07H\x00\x12\x0c\n\x02v6\x18\x02 \x01(\x0cH\x00\x42\x06\n\x04\x61\x64\x64r\"j\n\x05\x45rror\x12\x32\n\x04\x63ode\x18\x01 \x01(\x0e\x32$.rstream.io_rstrm.protobuf.ErrorCode\x12-\n\x07message\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xd5\x02\n\rClientDetails\x12+\n\x05\x61gent\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x07version\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12(\n\x02os\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04\x61rch\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12+\n\x05token\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12\x36\n\x10protocol_version\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\xd2\x02\n\rServerDetails\x12+\n\x05\x61gent\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12-\n\x07version\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12*\n\x04plan\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12.\n\x08provider\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12,\n\x06region\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12,\n\x06update\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"\x9a\x01\n\x08HttpCors\x12\x17\n\x0f\x61llowed_origins\x18\x01 \x03(\t\x12\x17\n\x0f\x61llowed_methods\x18\x02 \x03(\t\x12\x17\n\x0f\x61llowed_headers\x18\x03 \x03(\t\x12\x17\n\x0f\x65xposed_headers\x18\x04 \x03(\t\x12\x19\n\x11\x61llow_credentials\x18\x05 \x01(\x08\x12\x0f\n\x07max_age\x18\x06 \x01(\x03\"\xd8\r\n\x10TunnelProperties\x12\x37\n\x02id\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\r\x92\x82\x19\tread-only\x12@\n\rcreation_date\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\r\x92\x82\x19\tread-only\x12:\n\x04name\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12:\n\x04type\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12;\n\x07publish\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12>\n\x08protocol\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12W\n\x06labels\x18\x07 \x03(\x0b\x32\x37.rstream.io_rstrm.protobuf.TunnelProperties.LabelsEntryB\x0e\x92\x82\x19\nread-write\x12\x1d\n\x05geoip\x18\x08 \x03(\tB\x0e\x92\x82\x19\nread-write\x12#\n\x0btrusted_ips\x18\t \x03(\tB\x0e\x92\x82\x19\nread-write\x12;\n\x04host\x18\n \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0f\x18\x01\x92\x82\x19\tread-only\x12>\n\x08tls_mode\x18\x0b \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12!\n\ttls_alpns\x18\x0c \x03(\tB\x0e\x92\x82\x19\nread-write\x12\x45\n\x0ftls_min_version\x18\r \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12#\n\x0btls_ciphers\x18\x0e \x03(\tB\x0e\x92\x82\x19\nread-write\x12=\n\tmtls_auth\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12G\n\x0fmtls_cacert_pem\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x10\x18\x01\x92\x82\x19\nread-write\x12\x42\n\x0chttp_version\x18\x11 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12\x42\n\x0chttp_use_tls\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x10\x18\x01\x92\x82\x19\nread-write\x12>\n\ntoken_auth\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12@\n\x0crstream_auth\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12\x42\n\x0e\x63hallenge_mode\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12>\n\x08hostname\x18\x16 \x01(\x0b\x32\x1c.google.protobuf.StringValueB\x0e\x92\x82\x19\nread-write\x12:\n\x04port\x18\x17 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0e\x92\x82\x19\nread-write\x12@\n\x0cupstream_tls\x18\x18 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12P\n\x1c\x64\x61tagram_guaranteed_delivery\x18\x19 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12N\n\x1a\x61llow_cross_region_routing\x18\x1a \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0e\x92\x82\x19\nread-write\x12\x46\n\thttp_cors\x18\x1b \x01(\x0b\x32#.rstream.io_rstrm.protobuf.HttpCorsB\x0e\x92\x82\x19\nread-write\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x9e\x01\n\x15OpenControlChannelReq\x12@\n\x0e\x63lient_details\x18\x01 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ClientDetails\x12\x43\n\x08liveness\x18\x02 \x01(\x0b\x32\x31.rstream.io_rstrm.protobuf.ControlChannelLiveness\"\xb9\x02\n\x15OpenControlChannelRsp\x12\x41\n\x02ok\x18\x01 \x01(\x0b\x32\x33.rstream.io_rstrm.protobuf.OpenControlChannelRsp.OkH\x00\x12\x31\n\x05\x65rror\x18\x02 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.ErrorH\x00\x1a\x9e\x01\n\x02Ok\x12\x11\n\tclient_id\x18\x01 \x01(\t\x12@\n\x0eserver_details\x18\x02 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ServerDetails\x12\x43\n\x08liveness\x18\x03 \x01(\x0b\x32\x31.rstream.io_rstrm.protobuf.ControlChannelLivenessB\t\n\x07payload\"\x18\n\x16\x43loseControlChannelReq\"\x18\n\x16\x43loseControlChannelRsp\"k\n\rOpenTunnelReq\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x46\n\x11tunnel_properties\x18\x02 \x01(\x0b\x32+.rstream.io_rstrm.protobuf.TunnelProperties\"\xab\x01\n\rOpenTunnelRsp\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12H\n\x11tunnel_properties\x18\x02 \x01(\x0b\x32+.rstream.io_rstrm.protobuf.TunnelPropertiesH\x00\x12\x31\n\x05\x65rror\x18\x03 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.ErrorH\x00\x42\t\n\x07payload\"#\n\x0e\x43loseTunnelReq\x12\x11\n\ttunnel_id\x18\x01 \x01(\t\"#\n\x0e\x43loseTunnelRsp\x12\x11\n\ttunnel_id\x18\x01 \x01(\t\"\xd1\x01\n\x0cProxyConnReq\x12\x11\n\ttunnel_id\x18\x01 \x01(\t\x12\x11\n\tstream_id\x18\x02 \x01(\t\x12,\n\x06secret\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12\x37\n\tsource_ip\x18\x04 \x01(\x0b\x32$.rstream.io_rstrm.protobuf.IpAddress\x12\x34\n\x0eproxy_endpoint\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValue\"R\n\x0cProxyConnRsp\x12\x11\n\tstream_id\x18\x01 \x01(\t\x12/\n\x05\x65rror\x18\x02 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.Error\"\x8d\x01\n\x08ProxyReq\x12@\n\x0e\x63lient_details\x18\x01 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ClientDetails\x12\x11\n\tstream_id\x18\x02 \x01(\t\x12,\n\x08zero_rtt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\";\n\x08ProxyRsp\x12/\n\x05\x65rror\x18\x01 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.Error\"\xef\x01\n\tStreamReq\x12@\n\x0e\x63lient_details\x18\x01 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ClientDetails\x12\x16\n\x0etunnel_id_name\x18\x02 \x01(\t\x12,\n\x08zero_rtt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x34\n\x10\x64\x61tagram_channel\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12$\n\x1cindependent_datagram_channel\x18\x05 \x01(\x08\"{\n\tStreamRsp\x12\x1b\n\x13\x64\x61tagram_channel_id\x18\x03 \x01(\x0c\x12\x13\n\tstream_id\x18\x01 \x01(\tH\x00\x12\x31\n\x05\x65rror\x18\x02 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.ErrorH\x00\x42\t\n\x07payload\"Z\n\x14\x44\x61tagramChannelClose\x12\x11\n\tstream_id\x18\x01 \x01(\t\x12/\n\x05\x65rror\x18\x02 \x01(\x0b\x32 .rstream.io_rstrm.protobuf.Error\"U\n\x16\x43ontrolChannelLiveness\x12\x1d\n\x15heartbeat_interval_ms\x18\x01 \x01(\r\x12\x1c\n\x14heartbeat_timeout_ms\x18\x02 \x01(\r\"6\n\tHeartbeat\x12\x10\n\x08sequence\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x63knowledgement\x18\x02 \x01(\x04\" \n\rServerMessage\x12\x0f\n\x07message\x18\x01 \x01(\t\"\xcc\t\n\x07Message\x12T\n\x18open_control_channel_req\x18\x01 \x01(\x0b\x32\x30.rstream.io_rstrm.protobuf.OpenControlChannelReqH\x00\x12T\n\x18open_control_channel_rsp\x18\x02 \x01(\x0b\x32\x30.rstream.io_rstrm.protobuf.OpenControlChannelRspH\x00\x12V\n\x19\x63lose_control_channel_req\x18\x03 \x01(\x0b\x32\x31.rstream.io_rstrm.protobuf.CloseControlChannelReqH\x00\x12V\n\x19\x63lose_control_channel_rsp\x18\x04 \x01(\x0b\x32\x31.rstream.io_rstrm.protobuf.CloseControlChannelRspH\x00\x12\x43\n\x0fopen_tunnel_req\x18\x05 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.OpenTunnelReqH\x00\x12\x43\n\x0fopen_tunnel_rsp\x18\x06 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.OpenTunnelRspH\x00\x12\x45\n\x10\x63lose_tunnel_req\x18\x07 \x01(\x0b\x32).rstream.io_rstrm.protobuf.CloseTunnelReqH\x00\x12\x45\n\x10\x63lose_tunnel_rsp\x18\x08 \x01(\x0b\x32).rstream.io_rstrm.protobuf.CloseTunnelRspH\x00\x12\x41\n\x0eproxy_conn_req\x18\t \x01(\x0b\x32\'.rstream.io_rstrm.protobuf.ProxyConnReqH\x00\x12\x41\n\x0eproxy_conn_rsp\x18\n \x01(\x0b\x32\'.rstream.io_rstrm.protobuf.ProxyConnRspH\x00\x12\x38\n\tproxy_req\x18\x0b \x01(\x0b\x32#.rstream.io_rstrm.protobuf.ProxyReqH\x00\x12\x38\n\tproxy_rsp\x18\x0c \x01(\x0b\x32#.rstream.io_rstrm.protobuf.ProxyRspH\x00\x12:\n\nstream_req\x18\r \x01(\x0b\x32$.rstream.io_rstrm.protobuf.StreamReqH\x00\x12:\n\nstream_rsp\x18\x0e \x01(\x0b\x32$.rstream.io_rstrm.protobuf.StreamRspH\x00\x12\x39\n\theartbeat\x18\x0f \x01(\x0b\x32$.rstream.io_rstrm.protobuf.HeartbeatH\x00\x12\x42\n\x0eserver_message\x18\x10 \x01(\x0b\x32(.rstream.io_rstrm.protobuf.ServerMessageH\x00\x12Q\n\x16\x64\x61tagram_channel_close\x18\x11 \x01(\x0b\x32/.rstream.io_rstrm.protobuf.DatagramChannelCloseH\x00\x42\t\n\x07payload*\xd8\x03\n\tErrorCode\x12\x1a\n\x16\x45RROR_CODE_UNSPECIFIED\x10\x00\x12\x1c\n\x17\x45RROR_CODE_UNAUTHORIZED\x10\xe8\x07\x12\x1f\n\x1a\x45RROR_CODE_INVALID_REQUEST\x10\xd0\x0f\x12(\n#ERROR_CODE_PROTOCOL_VERSION_MISSING\x10\xda\x0f\x12(\n#ERROR_CODE_PROTOCOL_VERSION_INVALID\x10\xe4\x0f\x12-\n(ERROR_CODE_PROTOCOL_VERSION_INCOMPATIBLE\x10\xee\x0f\x12 \n\x1b\x45RROR_CODE_TUNNEL_NOT_FOUND\x10\xb8\x17\x12\x1e\n\x19\x45RROR_CODE_INVALID_STREAM\x10\xa0\x1f\x12%\n ERROR_CODE_FEATURE_NOT_AVAILABLE\x10\x88\'\x12#\n\x1e\x45RROR_CODE_SERVICE_UNAVAILABLE\x10\xf0.\x12\"\n\x1d\x45RROR_CODE_CAPACITY_EXHAUSTED\x10\xd8\x36\x12!\n\x1c\x45RROR_CODE_RESOURCE_CONFLICT\x10\xc0>\x12\x18\n\x13\x45RROR_CODE_INTERNAL\x10\xa8\x46:8\n\x10protocol_version\x12\x1c.google.protobuf.FileOptions\x18\xb8\x8e\x03 \x01(\t:/\n\x06\x61\x63\x63\x65ss\x12\x1d.google.protobuf.FieldOptions\x18\xa2\x90\x03 \x01(\tB\x0fZ\x04./pb\xc2\xf3\x18\x05\x31.4.7b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rstream_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'Z\004./pb\302\363\030\0051.4.6' + _globals['DESCRIPTOR']._serialized_options = b'Z\004./pb\302\363\030\0051.4.7' _globals['_TUNNELPROPERTIES_LABELSENTRY']._loaded_options = None _globals['_TUNNELPROPERTIES_LABELSENTRY']._serialized_options = b'8\001' _globals['_TUNNELPROPERTIES'].fields_by_name['id']._loaded_options = None @@ -91,8 +91,8 @@ _globals['_TUNNELPROPERTIES'].fields_by_name['allow_cross_region_routing']._serialized_options = b'\222\202\031\nread-write' _globals['_TUNNELPROPERTIES'].fields_by_name['http_cors']._loaded_options = None _globals['_TUNNELPROPERTIES'].fields_by_name['http_cors']._serialized_options = b'\222\202\031\nread-write' - _globals['_ERRORCODE']._serialized_start=6085 - _globals['_ERRORCODE']._serialized_end=6557 + _globals['_ERRORCODE']._serialized_start=6152 + _globals['_ERRORCODE']._serialized_end=6624 _globals['_IPADDRESS']._serialized_start=143 _globals['_IPADDRESS']._serialized_end=190 _globals['_ERROR']._serialized_start=192 @@ -134,17 +134,17 @@ _globals['_PROXYRSP']._serialized_start=4223 _globals['_PROXYRSP']._serialized_end=4282 _globals['_STREAMREQ']._serialized_start=4285 - _globals['_STREAMREQ']._serialized_end=4486 - _globals['_STREAMRSP']._serialized_start=4488 - _globals['_STREAMRSP']._serialized_end=4582 - _globals['_DATAGRAMCHANNELCLOSE']._serialized_start=4584 - _globals['_DATAGRAMCHANNELCLOSE']._serialized_end=4674 - _globals['_CONTROLCHANNELLIVENESS']._serialized_start=4676 - _globals['_CONTROLCHANNELLIVENESS']._serialized_end=4761 - _globals['_HEARTBEAT']._serialized_start=4763 - _globals['_HEARTBEAT']._serialized_end=4817 - _globals['_SERVERMESSAGE']._serialized_start=4819 - _globals['_SERVERMESSAGE']._serialized_end=4851 - _globals['_MESSAGE']._serialized_start=4854 - _globals['_MESSAGE']._serialized_end=6082 + _globals['_STREAMREQ']._serialized_end=4524 + _globals['_STREAMRSP']._serialized_start=4526 + _globals['_STREAMRSP']._serialized_end=4649 + _globals['_DATAGRAMCHANNELCLOSE']._serialized_start=4651 + _globals['_DATAGRAMCHANNELCLOSE']._serialized_end=4741 + _globals['_CONTROLCHANNELLIVENESS']._serialized_start=4743 + _globals['_CONTROLCHANNELLIVENESS']._serialized_end=4828 + _globals['_HEARTBEAT']._serialized_start=4830 + _globals['_HEARTBEAT']._serialized_end=4884 + _globals['_SERVERMESSAGE']._serialized_start=4886 + _globals['_SERVERMESSAGE']._serialized_end=4918 + _globals['_MESSAGE']._serialized_start=4921 + _globals['_MESSAGE']._serialized_end=6149 # @@protoc_insertion_point(module_scope) diff --git a/src/rstream/_proto/rstream_pb2.pyi b/src/rstream/_proto/rstream_pb2.pyi index cc114d7..68a0a40 100644 --- a/src/rstream/_proto/rstream_pb2.pyi +++ b/src/rstream/_proto/rstream_pb2.pyi @@ -280,24 +280,28 @@ class ProxyRsp(_message.Message): def __init__(self, error: _Optional[_Union[Error, _Mapping]] = ...) -> None: ... class StreamReq(_message.Message): - __slots__ = ("client_details", "tunnel_id_name", "zero_rtt", "datagram_channel") + __slots__ = ("client_details", "tunnel_id_name", "zero_rtt", "datagram_channel", "independent_datagram_channel") CLIENT_DETAILS_FIELD_NUMBER: _ClassVar[int] TUNNEL_ID_NAME_FIELD_NUMBER: _ClassVar[int] ZERO_RTT_FIELD_NUMBER: _ClassVar[int] DATAGRAM_CHANNEL_FIELD_NUMBER: _ClassVar[int] + INDEPENDENT_DATAGRAM_CHANNEL_FIELD_NUMBER: _ClassVar[int] client_details: ClientDetails tunnel_id_name: str zero_rtt: _wrappers_pb2.BoolValue datagram_channel: _wrappers_pb2.BoolValue - def __init__(self, client_details: _Optional[_Union[ClientDetails, _Mapping]] = ..., tunnel_id_name: _Optional[str] = ..., zero_rtt: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., datagram_channel: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ...) -> None: ... + independent_datagram_channel: bool + def __init__(self, client_details: _Optional[_Union[ClientDetails, _Mapping]] = ..., tunnel_id_name: _Optional[str] = ..., zero_rtt: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., datagram_channel: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ..., independent_datagram_channel: _Optional[bool] = ...) -> None: ... class StreamRsp(_message.Message): - __slots__ = ("stream_id", "error") + __slots__ = ("datagram_channel_id", "stream_id", "error") + DATAGRAM_CHANNEL_ID_FIELD_NUMBER: _ClassVar[int] STREAM_ID_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] + datagram_channel_id: bytes stream_id: str error: Error - def __init__(self, stream_id: _Optional[str] = ..., error: _Optional[_Union[Error, _Mapping]] = ...) -> None: ... + def __init__(self, datagram_channel_id: _Optional[bytes] = ..., stream_id: _Optional[str] = ..., error: _Optional[_Union[Error, _Mapping]] = ...) -> None: ... class DatagramChannelClose(_message.Message): __slots__ = ("stream_id", "error")