Example #1
0
int swReactor_receive(swReactor *reactor, swDataHead *event)
{
	swSendData data;
	int ret;

	ret = swRead(event->fd, data.data, SW_BUFFER_SIZE);
	printf("[ReadThread]recv: %s|fd=%d|ret=%d|errno=%d\n", data.data, event->fd, ret, errno);

	if (ret == 0)
	{
		//fd close
		event->type = SW_FD_CLOSE;
		return reactor->handle[SW_FD_CLOSE](reactor, event);
	}
	else if (ret > 0)
	{
		return reactor->handle[SW_FD_TCP](reactor, event);
	}
	else
	{
		swTrace("[swFactoryFunc_receive]epoll error\n");
		reactor->handle[SW_FD_ERROR](reactor, event);
		return -1;
	}
	return 0;
}
Example #2
0
static int swServer_poll_onReceive(swReactor *reactor, swEvent *event)
{
	int ret, n;
	swServer *serv = reactor->ptr;
	swFactory *factory = &(serv->factory);
	swEventData buf;
	bzero(buf.data, sizeof(buf.data));
	ret = swRead(event->fd, buf.data, SW_BUFFER_SIZE);
	if (ret < 0)
	{
		//printf("error: %d\n", errno);
		return SW_ERR;
	}
	else if (ret == 0)
	{
		swTrace("Close Event.FD=%d|From=%d\n", event->fd, event->from_id);
		return swServer_close(serv, event);
	}
	else
	{
		buf.fd = event->fd;
		buf.len = ret;
		buf.from_id = event->from_id;
		//swTrace("recv: %s|fd=%d|ret=%d|errno=%d\n", buf.data, event->fd, ret, errno);
		n = factory->dispatch(factory, &buf);
	}
	return SW_OK;
}
Example #3
0
static int swServer_poll_onReceive2(swReactor *reactor, swEvent *event)
{
	int ret;
	swServer *serv = reactor->ptr;
	swFactory *factory = &(serv->factory);
	swEventData *buf = sw_malloc(sizeof(swEventData));
	if(buf==NULL)
	{
		swTrace("Malloc fail\n");
		return SW_ERR;
	}
	bzero(buf->data, sizeof(buf->data));
	ret = swRead(event->fd, buf->data, SW_BUFFER_SIZE);
	if (ret < 0)
	{
		swTrace("Receive Error.Fd=%d.From=%d\n", event->fd, event->from_id);
		return SW_ERR;
	}
	else if (ret == 0)
	{
		swTrace("Close Event.FD=%d|From=%d\n", event->fd, event->from_id);
		sw_free(buf);
		return swServer_close(serv, event);
	}
	else
	{
		buf->fd = event->fd;
		buf->len = ret;
		buf->from_id = event->from_id;
		//swTrace("recv: %s|fd=%d|ret=%d|errno=%d\n", buf->data, event->fd, ret, errno);
		factory->dispatch(factory, buf);
	}
	return SW_OK;
}
Example #4
0
int swReactor_receive(swReactor *reactor, swEvent *event)
{
    swEventData data;
    return swRead(event->fd, data.data, SW_BUFFER_SIZE);
}