11use crate :: {
2+ collection:: { NewestUnitResponse , Salt } ,
23 dag:: { DagUnit , Request } ,
3- dissemination:: { DisseminationRequest , DisseminationResponse } ,
4- runway:: { NewestUnitResponse , Salt } ,
4+ dissemination:: DisseminationResponse ,
55 units:: { UnitCoord , UnitStore , UnitWithParents , WrappedUnit } ,
66 Data , Hasher , MultiKeychain , NodeIndex , Signed ,
77} ;
@@ -91,18 +91,25 @@ impl<H: Hasher, D: Data, MK: MultiKeychain> Responder<H, D, MK> {
9191 /// aren't able to help.
9292 pub fn handle_request (
9393 & self ,
94- request : DisseminationRequest < H > ,
94+ request : Request < H > ,
9595 units : & UnitStore < DagUnit < H , D , MK > > ,
9696 ) -> Result < DisseminationResponse < H , D , MK :: Signature > , Error < H > > {
97- use DisseminationRequest :: * ;
97+ use Request :: * ;
9898 match request {
99- Unit ( unit_request) => match unit_request {
100- Request :: Coord ( coord) => self . on_request_coord ( coord, units) ,
101- Request :: ParentsOf ( hash) => self . on_request_parents ( hash, units) ,
102- } ,
103- NewestUnit ( node_id, salt) => Ok ( self . on_request_newest ( node_id, salt, units) ) ,
99+ Coord ( coord) => self . on_request_coord ( coord, units) ,
100+ ParentsOf ( hash) => self . on_request_parents ( hash, units) ,
104101 }
105102 }
103+
104+ /// Handle an incoming request for the newest unit of a given node we know of.
105+ pub fn handle_newest_unit_request (
106+ & self ,
107+ requester : NodeIndex ,
108+ salt : Salt ,
109+ units : & UnitStore < DagUnit < H , D , MK > > ,
110+ ) -> DisseminationResponse < H , D , MK :: Signature > {
111+ self . on_request_newest ( requester, salt, units)
112+ }
106113}
107114
108115#[ cfg( test) ]
@@ -111,7 +118,7 @@ mod test {
111118 dag:: Request ,
112119 dissemination:: {
113120 responder:: { Error , Responder } ,
114- DisseminationRequest , DisseminationResponse ,
121+ DisseminationResponse ,
115122 } ,
116123 units:: {
117124 random_full_parent_reconstrusted_units_up_to, TestingDagUnit , Unit , UnitCoord ,
@@ -142,7 +149,7 @@ mod test {
142149 fn empty_fails_to_respond_to_coords ( ) {
143150 let ( responder, store, _) = setup ( ) ;
144151 let coord = UnitCoord :: new ( 0 , NodeIndex ( 1 ) ) ;
145- let request = Request :: Coord ( coord) . into ( ) ;
152+ let request = Request :: Coord ( coord) ;
146153 match responder. handle_request ( request, & store) {
147154 Ok ( response) => panic ! ( "Unexpected response: {:?}." , response) ,
148155 Err ( err) => assert_eq ! ( err, Error :: NoCanonicalAt ( coord) ) ,
@@ -160,7 +167,7 @@ mod test {
160167 . last ( )
161168 . expect ( "the round has at least one unit" )
162169 . hash ( ) ;
163- let request = Request :: ParentsOf ( hash) . into ( ) ;
170+ let request = Request :: ParentsOf ( hash) ;
164171 match responder. handle_request ( request, & store) {
165172 Ok ( response) => panic ! ( "Unexpected response: {:?}." , response) ,
166173 Err ( err) => assert_eq ! ( err, Error :: UnknownUnit ( hash) ) ,
@@ -171,10 +178,7 @@ mod test {
171178 fn empty_newest_responds_with_no_units ( ) {
172179 let ( responder, store, keychains) = setup ( ) ;
173180 let requester = NodeIndex ( 1 ) ;
174- let request = DisseminationRequest :: NewestUnit ( requester, rand:: random ( ) ) ;
175- let response = responder
176- . handle_request ( request, & store)
177- . expect ( "newest unit requests always get a response" ) ;
181+ let response = responder. handle_newest_unit_request ( requester, rand:: random ( ) , & store) ;
178182 match response {
179183 DisseminationResponse :: NewestUnit ( newest_unit_response) => {
180184 let checked_newest_unit_response = newest_unit_response
@@ -205,7 +209,7 @@ mod test {
205209 store. insert ( unit. clone ( ) ) ;
206210 }
207211 }
208- let request = Request :: Coord ( coord) . into ( ) ;
212+ let request = Request :: Coord ( coord) ;
209213 let response = responder
210214 . handle_request ( request, & store)
211215 . expect ( "should successfully respond" ) ;
@@ -237,7 +241,7 @@ mod test {
237241 store. insert ( unit. clone ( ) ) ;
238242 }
239243 }
240- let request = Request :: Coord ( coord) . into ( ) ;
244+ let request = Request :: Coord ( coord) ;
241245 match responder. handle_request ( request, & store) {
242246 Ok ( response) => panic ! ( "Unexpected response: {:?}." , response) ,
243247 Err ( err) => assert_eq ! ( err, Error :: NoCanonicalAt ( coord) ) ,
@@ -261,7 +265,7 @@ mod test {
261265 . last ( )
262266 . expect ( "the round has at least one unit" )
263267 . clone ( ) ;
264- let request = Request :: ParentsOf ( requested_unit. hash ( ) ) . into ( ) ;
268+ let request = Request :: ParentsOf ( requested_unit. hash ( ) ) ;
265269 let response = responder
266270 . handle_request ( request, & store)
267271 . expect ( "should successfully respond" ) ;
@@ -295,7 +299,7 @@ mod test {
295299 . last ( )
296300 . expect ( "the round has at least one unit" )
297301 . hash ( ) ;
298- let request = Request :: ParentsOf ( hash) . into ( ) ;
302+ let request = Request :: ParentsOf ( hash) ;
299303 match responder. handle_request ( request, & store) {
300304 Ok ( response) => panic ! ( "Unexpected response: {:?}." , response) ,
301305 Err ( err) => assert_eq ! ( err, Error :: UnknownUnit ( hash) ) ,
@@ -314,10 +318,7 @@ mod test {
314318 }
315319 }
316320 let requester = NodeIndex ( 1 ) ;
317- let request = DisseminationRequest :: NewestUnit ( requester, rand:: random ( ) ) ;
318- let response = responder
319- . handle_request ( request, & store)
320- . expect ( "newest unit requests always get a response" ) ;
321+ let response = responder. handle_newest_unit_request ( requester, rand:: random ( ) , & store) ;
321322 match response {
322323 DisseminationResponse :: NewestUnit ( newest_unit_response) => {
323324 newest_unit_response
0 commit comments