adding ipc_read_fd

more_to_read
Karchnu 2020-07-14 16:10:18 +02:00
parent e147379f06
commit c2aa94716f
2 changed files with 9 additions and 3 deletions

View File

@ -261,7 +261,7 @@ struct ipc_error ipc_accept_add (struct ipc_event *event, struct ipc_ctx *ctx, u
}
// receive then format in an ipc_message structure
struct ipc_error ipc_read (const struct ipc_ctx *ctx, uint32_t index, struct ipc_message *m)
struct ipc_error ipc_read_fd (int32_t fd, struct ipc_message *m)
{
T_R ((m == NULL), IPC_ERROR_READ__NO_MESSAGE_PARAM);
@ -270,12 +270,17 @@ struct ipc_error ipc_read (const struct ipc_ctx *ctx, uint32_t index, struct ipc
char *pbuf = buf;
// On error or closed recipient, the buffer already freed.
TEST_IPC_RETURN_ON_ERROR (usock_recv (ctx->pollfd[index].fd, &pbuf, &msize));
TEST_IPC_RETURN_ON_ERROR (usock_recv (fd, &pbuf, &msize));
TEST_IPC_RETURN_ON_ERROR (ipc_message_format_read (m, buf, msize));
IPC_RETURN_NO_ERROR; // propagates ipc_message_format return
}
struct ipc_error ipc_read (const struct ipc_ctx *ctx, uint32_t index, struct ipc_message *m)
{
return ipc_read_fd (ctx->pollfd[index].fd, m);
}
struct ipc_error ipc_write_fd (int fd, const struct ipc_message *m)
{
size_t msize = 0;

View File

@ -337,7 +337,8 @@ struct ipc_error ipc_close_all (struct ipc_ctx *ctx);
void ipc_ctx_free (struct ipc_ctx *ctx);
struct ipc_error ipc_read (const struct ipc_ctx *, uint32_t index, struct ipc_message *m);
struct ipc_error ipc_read (const struct ipc_ctx *, uint32_t index, struct ipc_message *m);
struct ipc_error ipc_read_fd (int32_t fd, struct ipc_message *m);
struct ipc_error ipc_write (struct ipc_ctx *, const struct ipc_message *m);
struct ipc_error fd_switching_read (struct ipc_event *event, struct ipc_ctx *ctx, int index);