gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/router/proto/router.proto (about)

     1  syntax = "proto3";
     2  
     3  package go.micro.router;
     4  
     5  // Router service is used by the proxy to lookup routes
     6  service Router {
     7  	rpc Lookup(LookupRequest) returns (LookupResponse) {};
     8          rpc Watch(WatchRequest) returns (stream Event) {};
     9          rpc Advertise(Request) returns (stream Advert) {};
    10          rpc Solicit(Request) returns (Response) {};
    11          rpc Process(Advert) returns (ProcessResponse) {};
    12  	rpc Status(Request) returns (StatusResponse) {};
    13  }
    14  
    15  service Table {
    16  	rpc Create(Route) returns (CreateResponse) {};
    17          rpc Delete(Route) returns (DeleteResponse) {};
    18          rpc Update(Route) returns (UpdateResponse) {};
    19          rpc List(Request) returns (ListResponse) {};
    20  	rpc Query(QueryRequest) returns (QueryResponse) {};
    21  }
    22  
    23  // Empty request
    24  message Request {}
    25  
    26  // Empty response
    27  message Response {}
    28  
    29  // ListResponse is returned by List
    30  message ListResponse {
    31  	repeated Route routes = 1;
    32  }
    33  
    34  // LookupRequest is made to Lookup
    35  message LookupRequest {
    36  	Query query = 1;
    37  }
    38  
    39  // LookupResponse is returned by Lookup
    40  message LookupResponse {
    41  	repeated Route routes = 1;
    42  }
    43  
    44  // QueryRequest queries Table for Routes
    45  message QueryRequest{
    46  	Query query = 1;
    47  }
    48  
    49  // QueryResponse is returned by Query
    50  message QueryResponse {
    51  	repeated Route routes = 1;
    52  }
    53  
    54  // WatchRequest is made to Watch Router
    55  message WatchRequest {}
    56  
    57  // AdvertType defines the type of advert
    58  enum AdvertType {
    59          AdvertAnnounce = 0;
    60          AdvertUpdate = 1;
    61  }
    62  
    63  // Advert is router advertsement streamed by Watch
    64  message Advert {
    65          // id of the advertising router
    66          string id = 1;
    67          // type of advertisement
    68          AdvertType type = 2;
    69          // unix timestamp of the advertisement
    70          int64 timestamp = 3;
    71          // TTL of the Advert
    72          int64 ttl = 4;
    73          // events is a list of advertised events
    74          repeated Event events = 5;
    75  }
    76  
    77  // Solicit solicits routes
    78  message Solicit {
    79          // id of the soliciting router
    80          string id = 1;
    81  }
    82  
    83  // ProcessResponse is returned by Process
    84  message ProcessResponse {}
    85  
    86  // CreateResponse is returned by Create
    87  message CreateResponse {}
    88  
    89  // DeleteResponse is returned by Delete
    90  message DeleteResponse {}
    91  
    92  // UpdateResponse is returned by Update
    93  message UpdateResponse {}
    94  
    95  // EventType defines the type of event
    96  enum EventType {
    97          Create = 0;
    98          Delete = 1;
    99          Update = 2;
   100  }
   101  
   102  // Event is routing table event
   103  message Event {
   104          // type of event
   105          EventType type = 1;
   106          // unix timestamp of event
   107          int64 timestamp = 2;
   108          // service route
   109  	Route route = 3;
   110  }
   111  
   112  // Query is passed in a LookupRequest
   113  message Query {
   114  	// service to lookup
   115  	string service = 1;
   116          // gateway to lookup
   117          string gateway = 2;
   118          // network to lookup
   119          string network = 3;
   120  }
   121  
   122  // Route is a service route
   123  message Route {
   124  	// service for the route
   125  	string service = 1;
   126  	// the address that advertise this route
   127  	string address = 2;
   128  	// gateway as the next hop
   129  	string gateway = 3;
   130  	// the network for this destination
   131  	string network = 4;
   132  	// router if the router id
   133  	string router = 5;
   134  	// the network link
   135  	string link = 6;
   136  	// the metric / score of this route
   137  	int64 metric = 7;
   138  }
   139  
   140  message Status {
   141  	string code = 1;
   142  	string error = 2;
   143  }
   144  
   145  message StatusResponse {
   146  	Status status = 1;
   147  }