Exemple #1
0
int IRC::message_loop()
{
	char buffer[4096];
	int ret_len;

	PRINTD("ENTER IRC::message_loop()");

	if (!connected)
	{
		while (!connected && connecting)
		{
#ifdef WIN32
			Sleep(1);
#else
			sleep(1);
#endif
		}
	}

	int rc = 0;

	while (connected)
	{
		ret_len=recv(irc_socket, buffer, 4095, 0);
		if (ret_len==SOCKET_ERROR || !ret_len)
		{
			rc = 1;
			break;
		}
		buffer[ret_len]='\0';
		try
		{
			split_to_replies(buffer);
		}
		catch(std::exception &e)
		{
			Logger logger = Logger::GetRootLogger();
			logger.Error("ERROR DISPATCHING IRC RECEIVE BUFFER. Error=%s", e.what());
		}
		catch(...)
		{
			Logger logger = Logger::GetRootLogger();
			logger.Error("UNKNOWN EXCEPTION IN IRC RECEIVE THREAD...");
		}
	}

	PRINTD("EXIT IRC::message_loop() => " << rc);
	return rc;
}
Exemple #2
0
int IRC::message_loop()
{
	char buffer[1024];
	int ret_len;

	if (!connected)
	{
		printf("Not connected!\n");
		return 1;
	}

	while (1)
	{
		ret_len=recv(irc_socket, buffer, 1023, 0);
		if (ret_len==SOCKET_ERROR || !ret_len)
		{
			return 1;
		}
		buffer[ret_len]='\0';
		split_to_replies(buffer);
	}

	return 0;
}