Ejemplo n.º 1
0
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;
					}
				}
			}
		}
	}
}
Ejemplo n.º 2
0
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();
}
Ejemplo n.º 3
0
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;
}