Esempio n. 1
0
int aio_socket_accept(aio_socket_t socket, aio_onaccept proc, void* param)
{
	struct epoll_context* ctx = (struct epoll_context*)socket;
	assert(0 == (ctx->ev.events & EPOLLIN));
	if(ctx->ev.events & EPOLLIN)
		return EBUSY;

	ctx->in.accept.proc = proc;
	ctx->in.accept.param = param;

//	r = epoll_accept(ctx, 0, 0);
//	if(EAGAIN != r) return r;
	
	// man 2 accept to see more
	EPollIn(ctx, epoll_accept);
	return errno; // epoll_ctl return -1
}
Esempio n. 2
0
int aio_socket_recvfrom_v(aio_socket_t socket, socket_bufvec_t* vec, int n, aio_onrecvfrom proc, void* param)
{
	struct epoll_context* ctx = (struct epoll_context*)socket;
	assert(0 == (ctx->ev.events & EPOLLIN));
	if(ctx->ev.events & EPOLLIN)
		return EBUSY;

	ctx->in.recvfrom_v.proc = proc;
	ctx->in.recvfrom_v.param = param;
	ctx->in.recvfrom_v.vec = vec;
	ctx->in.recvfrom_v.n = n;

//	r = epoll_recvfrom_v(ctx, 0, 0);
//	if(EAGAIN != r) return r;

	EPollIn(ctx, epoll_recvfrom_v);
	return errno; // epoll_ctl return -1
}
Esempio n. 3
0
int aio_socket_recvfrom(aio_socket_t socket, void* buffer, size_t bytes, aio_onrecvfrom proc, void* param)
{
	struct epoll_context* ctx = (struct epoll_context*)socket;
	assert(0 == (ctx->ev.events & EPOLLIN));	
	if(ctx->ev.events & EPOLLIN)
		return EBUSY;

	ctx->in.recvfrom.proc = proc;
	ctx->in.recvfrom.param = param;
	ctx->in.recvfrom.buffer = buffer;
	ctx->in.recvfrom.bytes = bytes;

//	r = epoll_recvfrom(ctx, 0, 0);
//	if(EAGAIN != r) return r;

	EPollIn(ctx, epoll_recvfrom);
	return errno; // epoll_ctl return -1
}
Esempio n. 4
0
int aio_socket_recv(aio_socket_t socket, void* buffer, size_t bytes, aio_onrecv proc, void* param)
{
	struct epoll_context* ctx = (struct epoll_context*)socket;
	assert(0 == (ctx->ev.events & EPOLLIN));
	if(ctx->ev.events & EPOLLIN)
		return EBUSY;

	ctx->in.recv.proc = proc;
	ctx->in.recv.param = param;
	ctx->in.recv.buffer = buffer;
	ctx->in.recv.bytes = bytes;

//	if(EAGAIN == epoll_recv(ctx, 0, 0))
	{
		EPollIn(ctx, epoll_recv);
	}

	return errno;
}