Beispiel #1
0
void accept_callback(SOCKET s,void *ud)
{
	DWORD err_code = 0;
	HANDLE *iocp = (HANDLE*)ud;
	struct connection *c = connection_create(s,1,on_process_packet,remove_client);
	add_client(c);
	//++clientcount;
	printf("cli fd:%d\n",s);
	Bind2Engine(*iocp,(Socket_t)c);
	//发出第一个读请求
	connection_recv(c);
}
Beispiel #2
0
int irc_read_line(irc_t* irc, char* buffer, int max_length)
{
    int amount;
    int idx;
    int offset = 0;

    amount = connection_peek(irc->sockfd, buffer, max_length);

    buffer[amount] = 0;

    for(idx = 0; idx < amount; idx++)
    {
        if(buffer[idx] == '\n')
        {
            break;
        }
    }

    connection_recv(irc->sockfd, buffer, idx + 1);

    for(idx = 0; idx < amount; idx++)
    {
        if(buffer[idx] == '\n')
        {
            if(buffer[idx - 1] == '\r')
            {
                offset--;
                buffer[idx - 1] = 0;
            }

            offset--;
            buffer[idx] = 0;
            break;
        }
    }

    return idx + offset;
}
Beispiel #3
0
inline static void
__recv (struct connection * conn, void * control, const size_t control_size, void * classcode, const size_t classcode_size) {
	connection_recv (conn, control, control_size);
	connection_recv (conn, classcode, classcode_size);
}