Merge pull request #1260 from Barenboim/master

PD_OP_RECV_MESSAGE->PD_OP_RECVFROM
This commit is contained in:
xiehan
2023-04-21 23:04:08 +08:00
committed by GitHub
2 changed files with 15 additions and 14 deletions
+12 -11
View File
@@ -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
View File
@@ -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