void startFlushProcess() { int status, sendStatus = 0, recvStatus = 0; boolean breakFl = FALSE; while (!breakFl) { sendStatus = 0; recvStatus = 0; recvStatus = processIncomingMessage(); if (recvStatus == SOCKET_ERROR) { onHandleSocketError(recvStatus); break; } onChangeStatus(WAITING); status = syncInterface.onTryConsumerEntry(CONSUMER_WAIT_SECONDS * 1000); if (status == WAIT_OBJECT_0) { onChangeStatus(ACCUMULATING); MSG_LOCATION_ID id = syncInterface.onStartConsume(); int totalMsg, totalMsgSize; char* msg; boolean pending = TRUE; onChangeStatus(NORMAL); while (pending) { pending = msgStore.retrieveMsg(id, &totalMsg, &totalMsgSize, &msg); if (totalMsg > 0) { sendStatus = onSendMessage(&msg, &totalMsgSize); free(msg); if (sendStatus == SOCKET_ERROR) { onHandleSocketError(sendStatus); breakFl = TRUE; break; } } } } } }
void onStart() { threadId = GetThreadId(GetCurrentThread()); int status; status = listen(listenSocket, SOMAXCONN); onCheckSocketError(status, "'Listening to Client Socket'"); SetEvent(statusLock); onChangeStatus(LISTENING); clientSocket = accept(listenSocket, NULL, NULL); onChangeStatus(NORMAL); int imode = 1; status = ioctlsocket(clientSocket, FIONBIO, &imode); onCheckSocketError(status, "'Listening to Client Socket'"); startFlushProcess(); }
static bool onSessionOut(EVENT *ev, PRES *pres) { switch (ev->packet->cmd) { case CMD_CHANGE_STATUS: return onChangeStatus(ev, pres); case CMD_SRV_CONTACT_AUTH: return onContactAuthOut(ev, pres); case CMD_SRV_MESSAGE: return onMessageOut(ev, pres); } return false; }