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 }