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

Method poll_tcp_frames

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

Source from the content-addressed store, hash-verified

348 }
349
350 fn poll_tcp_frames(
351 &mut self,
352 max_per_socket: usize,
353 max_frame_bytes: usize,
354 events: &mut Vec<NetworkEvent>,
355 ) {
356 for i in 0..self.tcp_connections.len() {
357 let Some(connection) = self.tcp_connections[i].as_mut() else {
358 continue;
359 };
360 let id = TcpConnectionId(i as u32);
361 for _ in 0..max_per_socket {
362 match connection.poll_frame_event(max_frame_bytes) {
363 Ok(Some(event)) => {
364 let disconnected = matches!(event, NetEvent::TcpDisconnected { .. });
365 events.push(NetworkEvent {
366 source: NetSource::TcpConnection(id),
367 event,
368 });
369 if disconnected {
370 self.tcp_connections[i] = None;
371 break;
372 }
373 }
374 Ok(None) => break,
375 Err(err) => {
376 events.push(net_error_event(
377 NetSource::TcpConnection(id),
378 "tcp_frame",
379 err,
380 ));
381 break;
382 }

Callers 1

poll_frame_eventsMethod · 0.80

Calls 6

TcpConnectionIdClass · 0.85
TcpConnectionClass · 0.85
net_error_eventFunction · 0.85
poll_frame_eventMethod · 0.80
lenMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected