syntax = "proto3"; package caretta_sync; import "caretta_sync/common.proto"; import "tripod_id.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; service RemoteNode { rpc Info(RemoteNodeInfoRequest) returns (RemoteNodeInfoResponse); rpc List(stream RemoteNodeListRequest) returns (stream RemoteNodeListResponse); } message RemoteNodeIdentifier { oneof identifier { tripod_id.Double id = 1; caretta_sync.PublicKey public_key = 2; } } message RemoteNodeInfoRequest { RemoteNodeIdentifier remote_node = 1; } message RemoteNodeListRequest {} message RemoteNodeInfoResponse { RemoteNodeInfo remote_node_info = 1; } message RemoteNodeListResponse { RemoteNodeInfo remote_node_info = 1; } message RemoteNodeInfo { // A messege of iroh::RemoteInfo. message RemoteInfo { message ConnectionType { message Mixed { caretta_sync.SocketAddr socket_addr = 1; caretta_sync.Url relay_url = 2; } oneof conn_type { caretta_sync.SocketAddr direct = 1; caretta_sync.Url relay = 2; Mixed mixed = 3; google.protobuf.Empty none = 4; } } message DirectAddrInfo { message LastControl { enum ControlMsg { PING = 0; PONG = 1; CALL_ME_MAYBE = 2; } google.protobuf.Duration duration = 1; ControlMsg control_msg = 2; } message Source { oneof source { google.protobuf.Empty saved = 1; google.protobuf.Empty udp = 2; google.protobuf.Empty Relay = 3; google.protobuf.Empty App = 4; string discovery = 5; string named_app = 6; }; google.protobuf.Duration duration = 7; } caretta_sync.SocketAddr addr = 1; google.protobuf.Duration latency = 2; LastControl last_control = 3; google.protobuf.Duration last_payload = 4; google.protobuf.Duration last_alive = 5; repeated Source sources = 6; } message RelayUrlInfo { caretta_sync.Url relay_url = 1; google.protobuf.Duration last_alive = 2; google.protobuf.Duration latency = 3; } bool authorized = 2; caretta_sync.PublicKey public_key = 3; RelayUrlInfo relay_url = 4; repeated DirectAddrInfo addrs = 5; ConnectionType conn_type = 6; google.protobuf.Duration latency = 7; google.protobuf.Duration last_used = 8; } tripod_id.Double public_id = 1; RemoteInfo remote_info = 2; }