mirror of
https://github.com/sogou/workflow.git
synced 2026-10-23 15:59:10 +08:00
Merge pull request #1260 from Barenboim/master
PD_OP_RECV_MESSAGE->PD_OP_RECVFROM
This commit is contained in:
+12
-11
@@ -841,21 +841,21 @@ static void __poller_handle_notify(struct __poller_node *node,
|
||||
poller->cb((struct poller_result *)node, poller->ctx);
|
||||
}
|
||||
|
||||
static void __poller_handle_recv_message(struct __poller_node *node,
|
||||
poller_t *poller)
|
||||
static void __poller_handle_recvfrom(struct __poller_node *node,
|
||||
poller_t *poller)
|
||||
{
|
||||
struct __poller_node *res = node->res;
|
||||
struct sockaddr_storage ss;
|
||||
struct sockaddr *addr = (struct sockaddr *)&ss;
|
||||
socklen_t addrlen;
|
||||
poller_message_t *msg;
|
||||
void *p = poller->buf;
|
||||
void *result;
|
||||
ssize_t n;
|
||||
|
||||
while (1)
|
||||
{
|
||||
addrlen = sizeof (struct sockaddr_storage);
|
||||
n = recvfrom(node->data.fd, p, POLLER_BUFSIZE, 0, addr, &addrlen);
|
||||
n = recvfrom(node->data.fd, poller->buf, POLLER_BUFSIZE, 0,
|
||||
addr, &addrlen);
|
||||
if (n < 0)
|
||||
{
|
||||
if (errno == EAGAIN)
|
||||
@@ -864,12 +864,13 @@ static void __poller_handle_recv_message(struct __poller_node *node,
|
||||
break;
|
||||
}
|
||||
|
||||
msg = node->data.recv_message(addr, addrlen, p, n, node->data.context);
|
||||
if (!msg)
|
||||
result = node->data.recvfrom(addr, addrlen, poller->buf, n,
|
||||
node->data.context);
|
||||
if (!result)
|
||||
break;
|
||||
|
||||
res->data = node->data;
|
||||
res->data.message = msg;
|
||||
res->data.result = result;
|
||||
res->error = 0;
|
||||
res->state = PR_ST_SUCCESS;
|
||||
poller->cb((struct poller_result *)res, poller->ctx);
|
||||
@@ -1054,8 +1055,8 @@ static void *__poller_thread_routine(void *arg)
|
||||
case PD_OP_NOTIFY:
|
||||
__poller_handle_notify(node, poller);
|
||||
break;
|
||||
case PD_OP_RECV_MESSAGE:
|
||||
__poller_handle_recv_message(node, poller);
|
||||
case PD_OP_RECVFROM:
|
||||
__poller_handle_recvfrom(node, poller);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1291,7 +1292,7 @@ static int __poller_data_get_event(int *event, const struct poller_data *data)
|
||||
case PD_OP_NOTIFY:
|
||||
*event = EPOLLIN | EPOLLET;
|
||||
return 1;
|
||||
case PD_OP_RECV_MESSAGE:
|
||||
case PD_OP_RECVFROM:
|
||||
*event = EPOLLIN | EPOLLET;
|
||||
return 1;
|
||||
default:
|
||||
|
||||
+3
-3
@@ -47,7 +47,7 @@ struct poller_data
|
||||
#define PD_OP_SSL_SHUTDOWN 7
|
||||
#define PD_OP_EVENT 8
|
||||
#define PD_OP_NOTIFY 9
|
||||
#define PD_OP_RECV_MESSAGE 10
|
||||
#define PD_OP_RECVFROM 10
|
||||
short operation;
|
||||
unsigned short iovcnt;
|
||||
int fd;
|
||||
@@ -59,8 +59,8 @@ struct poller_data
|
||||
void *(*accept)(const struct sockaddr *, socklen_t, int, void *);
|
||||
void *(*event)(void *);
|
||||
void *(*notify)(void *, void *);
|
||||
poller_message_t *(*recv_message)(const struct sockaddr *, socklen_t,
|
||||
const void *, size_t, void *);
|
||||
void *(*recvfrom)(const struct sockaddr *, socklen_t,
|
||||
const void *, size_t, void *);
|
||||
};
|
||||
void *context;
|
||||
union
|
||||
|
||||
Reference in New Issue
Block a user