148 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
| syntax = "proto3";
 | |
| 
 | |
| package go.micro.router;
 | |
| 
 | |
| // Router service is used by the proxy to lookup routes
 | |
| service Router {
 | |
| 	rpc Lookup(LookupRequest) returns (LookupResponse) {};
 | |
|         rpc Watch(WatchRequest) returns (stream Event) {};
 | |
|         rpc Advertise(Request) returns (stream Advert) {};
 | |
|         rpc Solicit(Request) returns (Response) {};
 | |
|         rpc Process(Advert) returns (ProcessResponse) {};
 | |
| 	rpc Status(Request) returns (StatusResponse) {};
 | |
| }
 | |
| 
 | |
| service Table {
 | |
| 	rpc Create(Route) returns (CreateResponse) {};
 | |
|         rpc Delete(Route) returns (DeleteResponse) {};
 | |
|         rpc Update(Route) returns (UpdateResponse) {};
 | |
|         rpc List(Request) returns (ListResponse) {};
 | |
| 	rpc Query(QueryRequest) returns (QueryResponse) {};
 | |
| }
 | |
| 
 | |
| // Empty request
 | |
| message Request {}
 | |
| 
 | |
| // Empty response
 | |
| message Response {}
 | |
| 
 | |
| // ListResponse is returned by List
 | |
| message ListResponse {
 | |
| 	repeated Route routes = 1;
 | |
| }
 | |
| 
 | |
| // LookupRequest is made to Lookup
 | |
| message LookupRequest {
 | |
| 	Query query = 1;
 | |
| }
 | |
| 
 | |
| // LookupResponse is returned by Lookup
 | |
| message LookupResponse {
 | |
| 	repeated Route routes = 1;
 | |
| }
 | |
| 
 | |
| // QueryRequest queries Table for Routes
 | |
| message QueryRequest{
 | |
| 	Query query = 1;
 | |
| }
 | |
| 
 | |
| // QueryResponse is returned by Query
 | |
| message QueryResponse {
 | |
| 	repeated Route routes = 1;
 | |
| }
 | |
| 
 | |
| // WatchRequest is made to Watch Router
 | |
| message WatchRequest {}
 | |
| 
 | |
| // 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;
 | |
| }
 | |
| 
 | |
| // Solicit solicits routes
 | |
| message Solicit {
 | |
|         // id of the soliciting router
 | |
|         string id = 1;
 | |
| }
 | |
| 
 | |
| // ProcessResponse is returned by Process
 | |
| message ProcessResponse {}
 | |
| 
 | |
| // CreateResponse is returned by Create
 | |
| message CreateResponse {}
 | |
| 
 | |
| // DeleteResponse is returned by Delete
 | |
| message DeleteResponse {}
 | |
| 
 | |
| // UpdateResponse is returned by Update
 | |
| message UpdateResponse {}
 | |
| 
 | |
| // EventType defines the type of event
 | |
| enum EventType {
 | |
|         Create = 0;
 | |
|         Delete = 1;
 | |
|         Update = 2;
 | |
| }
 | |
| 
 | |
| // Event is routing table event
 | |
| message Event {
 | |
|         // type of event
 | |
|         EventType type = 1;
 | |
|         // unix timestamp of event
 | |
|         int64 timestamp = 2;
 | |
|         // service route
 | |
| 	Route route = 3;
 | |
| }
 | |
| 
 | |
| // Query is passed in a LookupRequest
 | |
| message Query {
 | |
| 	// service to lookup
 | |
| 	string service = 1;
 | |
|         // gateway to lookup
 | |
|         string gateway = 2;
 | |
|         // network to lookup
 | |
|         string network = 3;
 | |
| }
 | |
| 
 | |
| // 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;
 | |
| }
 | |
| 
 | |
| message Status {
 | |
| 	string code = 1;
 | |
| 	string error = 2;
 | |
| }
 | |
| 
 | |
| message StatusResponse {
 | |
| 	Status status = 1;
 | |
| }
 |