116 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
syntax = "proto3";
 | 
						|
 | 
						|
package go.micro.network.mucp;
 | 
						|
 | 
						|
// AdvertType defines the type of advert
 | 
						|
enum AdvertType {
 | 
						|
  AdvertAnnounce = 0;
 | 
						|
  AdvertUpdate = 1;
 | 
						|
}
 | 
						|
 | 
						|
// Advert is router advertsement streamed by Watch
 | 
						|
message Advert {
 | 
						|
  // id of the advertising router
 | 
						|
  string id = 1;
 | 
						|
  // type of advertisement
 | 
						|
  AdvertType type = 2;
 | 
						|
  // unix timestamp of the advertisement
 | 
						|
  int64 timestamp = 3;
 | 
						|
  // TTL of the Advert
 | 
						|
  int64 ttl = 4;
 | 
						|
  // events is a list of advertised events
 | 
						|
  repeated Event events = 5;
 | 
						|
}
 | 
						|
 | 
						|
// EventType defines the type of event
 | 
						|
enum EventType {
 | 
						|
  Create = 0;
 | 
						|
  Delete = 1;
 | 
						|
  Update = 2;
 | 
						|
}
 | 
						|
 | 
						|
// Event is routing table event
 | 
						|
message Event {
 | 
						|
  // the unique event id
 | 
						|
  string id = 1;
 | 
						|
  // type of event
 | 
						|
  EventType type = 2;
 | 
						|
  // unix timestamp of event
 | 
						|
  int64 timestamp = 3;
 | 
						|
  // service route
 | 
						|
  Route route = 4;
 | 
						|
}
 | 
						|
 | 
						|
// Route is a service route
 | 
						|
message Route {
 | 
						|
  // service for the route
 | 
						|
  string service = 1;
 | 
						|
  // the address that advertise this route
 | 
						|
  string address = 2;
 | 
						|
  // gateway as the next hop
 | 
						|
  string gateway = 3;
 | 
						|
  // the network for this destination
 | 
						|
  string network = 4;
 | 
						|
  // router if the router id
 | 
						|
  string router = 5;
 | 
						|
  // the network link
 | 
						|
  string link = 6;
 | 
						|
  // the metric / score of this route
 | 
						|
  int64 metric = 7;
 | 
						|
  // metadata for the route
 | 
						|
  map<string,string> metadata = 8;
 | 
						|
}
 | 
						|
 | 
						|
// 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<string,string> 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 Route routes = 2;
 | 
						|
}
 |