/** * Check if any of the clients need servicing. * If so, service one client and return. * Else, just return. */ void crServerServiceClients(void) { RunQueue *q; q = getNextClient(GL_FALSE); /* don't block */ while (q) { ClientStatus stat = crServerServiceClient(q); if (stat == CLIENT_NEXT && cr_server.run_queue->next) { /* advance to next client */ cr_server.run_queue = cr_server.run_queue->next; } q = getNextClient(GL_FALSE); } }
/** * Check if any of the clients need servicing. * If so, service one client and return. * Else, just return. */ void crServerServiceClients(void) { RunQueue *q; q = getNextClient(GL_FALSE); /* don't block */ if (q) { ClientStatus stat = crServerServiceClient(q); if (stat == CLIENT_NEXT && cr_server.run_queue->next) { /* advance to next client */ cr_server.run_queue = cr_server.run_queue->next; } } else { /* no clients ready, do a receive and maybe we'll get a new * client message */ crNetRecv(); } }