@@ -148,8 +148,8 @@ pub enum KademliaStoreInserts {
148148 /// the record is forwarded immediately to the [`RecordStore`].
149149 Unfiltered ,
150150 /// Whenever a (provider) record is received, an event is emitted.
151- /// Provider records generate a [`KademliaEvent::InboundAddProviderRequest `],
152- /// normal records generate a [`KademliaEvent::InboundPutRecordRequest `].
151+ /// Provider records generate a [`InboundRequest::AddProvider`] under [` KademliaEvent::InboundRequest `],
152+ /// normal records generate a [`InboundRequest::PutRecord`] under [` KademliaEvent::InboundRequest `].
153153 ///
154154 /// When deemed valid, a (provider) record needs to be explicitly stored in
155155 /// the [`RecordStore`] via [`RecordStore::put`] or [`RecordStore::add_provider`],
@@ -1625,11 +1625,23 @@ where
16251625 // is a waste of resources.
16261626 match self . record_filtering {
16271627 KademliaStoreInserts :: Unfiltered => match self . store . put ( record. clone ( ) ) {
1628- Ok ( ( ) ) => debug ! (
1629- "Record stored: {:?}; {} bytes" ,
1630- record. key,
1631- record. value. len( )
1632- ) ,
1628+ Ok ( ( ) ) => {
1629+ debug ! (
1630+ "Record stored: {:?}; {} bytes" ,
1631+ record. key,
1632+ record. value. len( )
1633+ ) ;
1634+ self . queued_events
1635+ . push_back ( NetworkBehaviourAction :: GenerateEvent (
1636+ KademliaEvent :: InboundRequest {
1637+ request : InboundRequest :: PutRecord {
1638+ source,
1639+ connection,
1640+ record : None ,
1641+ } ,
1642+ } ,
1643+ ) ) ;
1644+ }
16331645 Err ( e) => {
16341646 info ! ( "Record not stored: {:?}" , e) ;
16351647 self . queued_events
@@ -1638,16 +1650,19 @@ where
16381650 handler : NotifyHandler :: One ( connection) ,
16391651 event : KademliaHandlerIn :: Reset ( request_id) ,
16401652 } ) ;
1653+
16411654 return ;
16421655 }
16431656 } ,
16441657 KademliaStoreInserts :: FilterBoth => {
16451658 self . queued_events
16461659 . push_back ( NetworkBehaviourAction :: GenerateEvent (
1647- KademliaEvent :: InboundPutRecordRequest {
1648- source,
1649- connection,
1650- record : record. clone ( ) ,
1660+ KademliaEvent :: InboundRequest {
1661+ request : InboundRequest :: PutRecord {
1662+ source,
1663+ connection,
1664+ record : Some ( record. clone ( ) ) ,
1665+ } ,
16511666 } ,
16521667 ) ) ;
16531668 }
@@ -1686,12 +1701,24 @@ where
16861701 KademliaStoreInserts :: Unfiltered => {
16871702 if let Err ( e) = self . store . add_provider ( record) {
16881703 info ! ( "Provider record not stored: {:?}" , e) ;
1704+ return ;
16891705 }
1706+
1707+ self . queued_events
1708+ . push_back ( NetworkBehaviourAction :: GenerateEvent (
1709+ KademliaEvent :: InboundRequest {
1710+ request : InboundRequest :: AddProvider { record : None } ,
1711+ } ,
1712+ ) ) ;
16901713 }
16911714 KademliaStoreInserts :: FilterBoth => {
16921715 self . queued_events
16931716 . push_back ( NetworkBehaviourAction :: GenerateEvent (
1694- KademliaEvent :: InboundAddProviderRequest { record } ,
1717+ KademliaEvent :: InboundRequest {
1718+ request : InboundRequest :: AddProvider {
1719+ record : Some ( record) ,
1720+ } ,
1721+ } ,
16951722 ) ) ;
16961723 }
16971724 }
@@ -1951,7 +1978,7 @@ where
19511978
19521979 self . queued_events
19531980 . push_back ( NetworkBehaviourAction :: GenerateEvent (
1954- KademliaEvent :: InboundRequestServed {
1981+ KademliaEvent :: InboundRequest {
19551982 request : InboundRequest :: FindNode {
19561983 num_closer_peers : closer_peers. len ( ) ,
19571984 } ,
@@ -1982,7 +2009,7 @@ where
19822009
19832010 self . queued_events
19842011 . push_back ( NetworkBehaviourAction :: GenerateEvent (
1985- KademliaEvent :: InboundRequestServed {
2012+ KademliaEvent :: InboundRequest {
19862013 request : InboundRequest :: GetProvider {
19872014 num_closer_peers : closer_peers. len ( ) ,
19882015 num_provider_peers : provider_peers. len ( ) ,
@@ -2039,13 +2066,6 @@ where
20392066 }
20402067
20412068 self . provider_received ( key, provider) ;
2042-
2043- self . queued_events
2044- . push_back ( NetworkBehaviourAction :: GenerateEvent (
2045- KademliaEvent :: InboundRequestServed {
2046- request : InboundRequest :: AddProvider { } ,
2047- } ,
2048- ) ) ;
20492069 }
20502070
20512071 KademliaHandlerEvent :: GetRecord { key, request_id } => {
@@ -2066,7 +2086,7 @@ where
20662086
20672087 self . queued_events
20682088 . push_back ( NetworkBehaviourAction :: GenerateEvent (
2069- KademliaEvent :: InboundRequestServed {
2089+ KademliaEvent :: InboundRequest {
20702090 request : InboundRequest :: GetRecord {
20712091 num_closer_peers : closer_peers. len ( ) ,
20722092 present_locally : record. is_some ( ) ,
@@ -2150,13 +2170,6 @@ where
21502170
21512171 KademliaHandlerEvent :: PutRecord { record, request_id } => {
21522172 self . record_received ( source, connection, request_id, record) ;
2153-
2154- self . queued_events
2155- . push_back ( NetworkBehaviourAction :: GenerateEvent (
2156- KademliaEvent :: InboundRequestServed {
2157- request : InboundRequest :: PutRecord { } ,
2158- } ,
2159- ) ) ;
21602173 }
21612174
21622175 KademliaHandlerEvent :: PutRecordRes { user_data, .. } => {
@@ -2371,26 +2384,12 @@ pub struct PeerRecord {
23712384/// See [`NetworkBehaviour::poll`].
23722385#[ derive( Debug ) ]
23732386pub enum KademliaEvent {
2374- /// A peer sent a [`KademliaHandlerIn::PutRecord`] request and filtering is enabled.
2375- ///
2376- /// See [`KademliaStoreInserts`] and [`KademliaConfig::set_record_filtering`].
2377- InboundPutRecordRequest {
2378- source : PeerId ,
2379- connection : ConnectionId ,
2380- record : Record ,
2381- } ,
2382-
2383- /// A peer sent a [`KademliaHandlerIn::AddProvider`] request and filtering [`KademliaStoreInserts::FilterBoth`] is enabled.
2384- ///
2385- /// See [`KademliaStoreInserts`] and [`KademliaConfig::set_record_filtering`] for details..
2386- InboundAddProviderRequest { record : ProviderRecord } ,
2387-
23882387 /// An inbound request has been received and handled.
23892388 //
23902389 // Note on the difference between 'request' and 'query': A request is a
23912390 // single request-response style exchange with a single remote peer. A query
23922391 // is made of multiple requests across multiple remote peers.
2393- InboundRequestServed { request : InboundRequest } ,
2392+ InboundRequest { request : InboundRequest } ,
23942393
23952394 /// An outbound query has produced a result.
23962395 OutboundQueryCompleted {
@@ -2464,15 +2463,26 @@ pub enum InboundRequest {
24642463 num_closer_peers : usize ,
24652464 num_provider_peers : usize ,
24662465 } ,
2467- /// Request to store a peer as a provider.
2468- AddProvider { } ,
2466+ /// A peer sent a [`KademliaHandlerIn::AddProvider`] request.
2467+ /// If filtering [`KademliaStoreInserts::FilterBoth`] is enabled, the [`ProviderRecord`] is
2468+ /// included.
2469+ ///
2470+ /// See [`KademliaStoreInserts`] and [`KademliaConfig::set_record_filtering`] for details..
2471+ AddProvider { record : Option < ProviderRecord > } ,
24692472 /// Request to retrieve a record.
24702473 GetRecord {
24712474 num_closer_peers : usize ,
24722475 present_locally : bool ,
24732476 } ,
2474- /// Request to store a record.
2475- PutRecord { } ,
2477+ /// A peer sent a [`KademliaHandlerIn::PutRecord`] request.
2478+ /// If filtering [`KademliaStoreInserts::FilterBoth`] is enabled, the [`Record`] is included.
2479+ ///
2480+ /// See [`KademliaStoreInserts`] and [`KademliaConfig::set_record_filtering`].
2481+ PutRecord {
2482+ source : PeerId ,
2483+ connection : ConnectionId ,
2484+ record : Option < Record > ,
2485+ } ,
24762486}
24772487
24782488/// The results of Kademlia queries.
0 commit comments