MCPcopy Create free account
hub / github.com/PerroEngine/Perro / poll_tcp_data

Method poll_tcp_data

perro_source/api_modules/perro_networking/src/world.rs:312–348  ·  view source on GitHub ↗
(
        &mut self,
        max_per_socket: usize,
        max_bytes: usize,
        events: &mut Vec<NetworkEvent>,
    )

Source from the content-addressed store, hash-verified

310 }
311 }
312 }
313
314 fn poll_tcp_data(
315 &mut self,
316 max_per_socket: usize,
317 max_bytes: usize,
318 events: &mut Vec<NetworkEvent>,
319 ) {
320 let Some(ids) = self.tcp_connections.live_ids() else {
321 return;
322 };
323 for &i in ids.iter() {
324 let Some(connection) = self.tcp_connections.get_mut(i) else {
325 continue;
326 };
327 let id = TcpConnectionId(i);
328 for _ in 0..max_per_socket {
329 match connection.poll_event(max_bytes) {
330 Ok(Some(event)) => {
331 let disconnected = matches!(event, NetEvent::TcpDisconnected { .. });
332 events.push(NetworkEvent {
333 source: NetSource::TcpConnection(id),
334 event,
335 });
336 if disconnected {
337 remove_slot(&mut self.tcp_connections, i);
338 break;
339 }
340 }
341 Ok(None) => break,
342 Err(err) => {
343 events.push(net_error_event(
344 NetSource::TcpConnection(id),
345 "tcp_recv",
346 err,
347 ));
348 break;
349 }
350 }
351 }

Callers 2

poll_eventsMethod · 0.80
poll_variant_eventsMethod · 0.80

Calls 6

TcpConnectionIdClass · 0.85
TcpConnectionClass · 0.85
net_error_eventFunction · 0.85
lenMethod · 0.45
poll_eventMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected