MCPcopy Create free account
hub / github.com/ceramicnetwork/rust-ceramic / poll

Method poll

p2p/src/providers.rs:219–251  ·  view source on GitHub ↗
(&mut self, kad: &mut kad::Behaviour<MemoryStore>)

Source from the content-addressed store, hash-verified

217 }
218
219 pub fn poll(&mut self, kad: &mut kad::Behaviour<MemoryStore>) {
220 // Start a new query if not enough and have an outstanding one.
221 if self.current_queries.len() < self.max_running_queries {
222 if let Some(Query { key, queries }) = self.outstanding_queries.pop_front() {
223 let query_id = kad.get_providers(key.clone());
224 self.current_queries.insert(
225 key,
226 RunningQuery {
227 query_id,
228 found_providers: Default::default(),
229 queries,
230 },
231 );
232 }
233 }
234
235 // Cleanup
236 for query in self.current_queries.values_mut() {
237 query
238 .queries
239 .retain(|query| !query.response_channel.is_closed());
240 }
241 self.current_queries.retain(|_, query| {
242 if query.queries.is_empty() {
243 if let Some(mut query) = kad.query_mut(&query.query_id) {
244 query.finish();
245 }
246 false
247 } else {
248 true
249 }
250 });
251 }
252}

Calls 5

lenMethod · 0.45
cloneMethod · 0.45
insertMethod · 0.45
is_emptyMethod · 0.45
finishMethod · 0.45

Tested by

no test coverage detected