* router: add metadata to route * router/registry: set node metadata in route * router/service: pass metadata to/from router service
		
			
				
	
	
		
			136 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
| syntax = "proto3";
 | |
| 
 | |
| package go.micro.router;
 | |
| 
 | |
| option go_package = "github.com/micro/go-micro/v2/router/service/proto;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 Process(Advert) returns (ProcessResponse) {};
 | |
| }
 | |
| 
 | |
| 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;
 | |
| }
 | |
| 
 | |
| // 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 {
 | |
|   // 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;
 | |
| }
 | |
| 
 | |
| // 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;
 | |
|   // metadata for the route
 | |
|   map<string,string> metadata = 8;
 | |
| }
 |