syntax = "proto3"; package go.micro.network; import "router/service/proto/router.proto"; // Network service is usesd to gain visibility into networks service Network { // Connect to the network rpc Connect(ConnectRequest) returns (ConnectResponse) {}; // Returns the entire network graph rpc Graph(GraphRequest) returns (GraphResponse) {}; // Returns a list of known nodes in the network rpc Nodes(NodesRequest) returns (NodesResponse) {}; // Returns a list of known routes in the network rpc Routes(RoutesRequest) returns (RoutesResponse) {}; // Returns a list of known services based on routes rpc Services(ServicesRequest) returns (ServicesResponse) {}; // Status returns network status rpc Status(StatusRequest) returns (StatusResponse) {}; } // Query is passed in a LookupRequest message Query { string service = 1; string address = 2; string gateway = 3; string router = 4; string network = 5; } message ConnectRequest { repeated Node nodes = 1; } message ConnectResponse {} // PeerRequest requests list of peers message NodesRequest { // node topology depth uint32 depth = 1; } // PeerResponse is returned by ListPeers message NodesResponse { // return peer topology repeated Node nodes = 1; } message GraphRequest { // node topology depth uint32 depth = 1; } message GraphResponse { Peer root = 1; } message RoutesRequest { // filter based on Query query = 1; } message RoutesResponse { repeated go.micro.router.Route routes = 1; } message ServicesRequest {} message ServicesResponse { repeated string services = 1; } message StatusRequest {} message StatusResponse { Status status = 1; } // Error tracks network errors message Error { uint32 count = 1; string msg = 2; } // Status is node status message Status { Error error = 1; } // Node is network node message Node { // node id string id = 1; // node address string address = 2; // the network string network = 3; // associated metadata map metadata = 4; // node status Status status = 5; } // Connect is sent when the node connects to the network message Connect { // network mode Node node = 1; } // Close is sent when the node disconnects from the network message Close { // network node Node node = 1; } // Peer is used to advertise node peers message Peer { // network node Node node = 1; // node peers repeated Peer peers = 2; } // Sync is network sync message message Sync { // peer origin Peer peer = 1; // node routes repeated go.micro.router.Route routes = 2; }