MCPcopy Create free account
hub / github.com/EIPStackGroup/OpENer / NetworkHandlerProcessOnce

Function NetworkHandlerProcessOnce

source/src/ports/generic_networkhandler.c:347–417  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

345}
346
347EipStatus NetworkHandlerProcessOnce(void) {
348
349 read_socket = master_socket;
350
351 g_time_value.tv_sec = 0;
352 g_time_value.tv_usec = (
353 g_network_status.elapsed_time < kOpenerTimerTickInMilliSeconds ?
354 kOpenerTimerTickInMilliSeconds - g_network_status.elapsed_time : 0)
355 * 1000; /* 10 ms */
356
357 int ready_socket = select(highest_socket_handle + 1, &read_socket, 0, 0,
358 &g_time_value);
359
360 if (ready_socket == kEipInvalidSocket) {
361 if (EINTR == errno) /* we have somehow been interrupted. The default behavior is to go back into the select loop. */
362 {
363 return kEipStatusOk;
364 } else {
365 int error_code = GetSocketErrorNumber();
366 char *error_message = GetErrorMessage(error_code);
367 OPENER_TRACE_ERR("networkhandler: error with select: %d - %s\n",
368 error_code,
369 error_message);
370 FreeErrorMessage(error_message);
371 return kEipStatusError;
372 }
373 }
374
375 if (ready_socket > 0) {
376
377 CheckAndHandleTcpListenerSocket();
378 CheckAndHandleUdpUnicastSocket();
379 CheckAndHandleUdpGlobalBroadcastSocket();
380 CheckAndHandleConsumingUdpSockets();
381
382 for (size_t socket = 0; socket <= highest_socket_handle; socket++) {
383 if ( true == CheckSocketSet(socket) ) {
384 /* if it is still checked it is a TCP receive */
385 if ( kEipStatusError == HandleDataOnTcpSocket(socket) ) /* if error */
386 {
387 CloseTcpSocket(socket);
388 RemoveSession(socket); /* clean up session and close the socket */
389 }
390 }
391 }
392 }
393
394 for (size_t socket = 0; socket <= highest_socket_handle; socket++) {
395 CheckEncapsulationInactivity(socket);
396 }
397
398 /* Check if all connections from one originator times out */
399 //CheckForTimedOutConnectionsAndCloseTCPConnections();
400
401 //OPENER_TRACE_INFO("Socket Loop done\n");
402
403 g_actual_time = GetMilliSeconds();
404 g_network_status.elapsed_time += g_actual_time - g_last_time;

Callers 3

mainFunction · 0.85
mainFunction · 0.85
executeEventLoopFunction · 0.85

Calls 14

CheckSocketSetFunction · 0.85
HandleDataOnTcpSocketFunction · 0.85
CloseTcpSocketFunction · 0.85
RemoveSessionFunction · 0.85
ManageConnectionsFunction · 0.85
GetSocketErrorNumberFunction · 0.50
GetErrorMessageFunction · 0.50

Tested by

no test coverage detected