syntax = "proto3"; // Client -> Server // Request a port to be published or deleted on Discover // port: the port to publish // publish: // true: publish the port // false: delete the port // flags: search flags message PublishRequest { required fixed32 port = 1; required bool publish = 2; repeated string flags = 3; } // Server -> Client // Acknowledge a PublishRequest // status: 0 if successful, anything else is an error message PublishResponse { required uint32 status = 1; } // Client -> Server // Search for peers on Discover // limit: maximum number of peers to search for // flags: flags to search for message DiscoverRequest { required uint32 limit = 1; repeated string flags = 2; } // Server -> Client // Response to a DiscoverRequest with a list of peers // status: 0 if successful, anything else is an error // peers: a list of peers, empty if nothing is found message DiscoverResponse { message DiscoverPeer { required uint32 port = 1; required fixed64 address = 2; repeated string flags = 3; } required uint32 status = 1; repeated DiscoverPeer peers = 2; }