default cb_out OK
parent
0a8680a7e8
commit
553a550d97
|
@ -221,7 +221,21 @@ default_cb_in(int fd, struct ipc_message *m)
|
|||
enum ipccb
|
||||
default_cb_out(int fd, struct ipc_message *m)
|
||||
{
|
||||
printf("TODO: default_cb_out\n");
|
||||
size_t msize = 0;
|
||||
SECURE_DECLARATION (struct ipc_error, ret);
|
||||
SECURE_BUFFER_DECLARATION (char, buf, IPC_MAX_MESSAGE_SIZE);
|
||||
char *pbuf = buf;
|
||||
|
||||
ipc_message_format_write (m, &pbuf, &msize);
|
||||
|
||||
size_t nbytes_sent = 0;
|
||||
ret = usock_send (fd, buf, msize, &nbytes_sent);
|
||||
|
||||
// On error or if what was sent != what should have been sent.
|
||||
if (ret.error_code != IPC_ERROR_NONE || nbytes_sent != msize) {
|
||||
return IPC_CB_FD_ERROR;
|
||||
}
|
||||
|
||||
return IPC_CB_NO_ERROR;
|
||||
}
|
||||
|
||||
|
@ -236,7 +250,6 @@ struct ipc_error fd_switching_read (struct ipc_event *event, struct ipc_ctx *ctx
|
|||
// read and write automatically and provide a new IPC_EVENT_TYPE indicating the switch.
|
||||
T_R ((ctx->switchdb.size == 0), IPC_ERROR_FD_SWITCHING__NO_FD_RECORD);
|
||||
|
||||
printf ("coucou\n");
|
||||
int talkingfd = ctx->pollfd[index].fd;
|
||||
int dest_fd = -1;
|
||||
struct ipc_switching sw;
|
||||
|
@ -248,7 +261,6 @@ struct ipc_error fd_switching_read (struct ipc_event *event, struct ipc_ctx *ctx
|
|||
is_valid = ipc_switching_get_ (&ctx->switchdb, talkingfd, &sw);
|
||||
|
||||
T_R ((is_valid == -1), IPC_ERROR_FD_SWITCHING__NO_FD_RECORD);
|
||||
printf ("valid\n");
|
||||
|
||||
if (sw.orig == talkingfd) {
|
||||
dest_fd = sw.dest;
|
||||
|
@ -268,7 +280,6 @@ struct ipc_error fd_switching_read (struct ipc_event *event, struct ipc_ctx *ctx
|
|||
r = (*sw.dest_in)(talkingfd, &m);
|
||||
}
|
||||
}
|
||||
printf ("cb done\n");
|
||||
|
||||
// Message reception OK: reading the message and put it in the list of messages to send.
|
||||
if (r == IPC_CB_NO_ERROR) {
|
||||
|
@ -282,8 +293,6 @@ struct ipc_error fd_switching_read (struct ipc_event *event, struct ipc_ctx *ctx
|
|||
IPC_RETURN_NO_ERROR;
|
||||
}
|
||||
|
||||
printf ("error or disconnection\n");
|
||||
|
||||
/**
|
||||
* NOTE: In any other case, the fd is, or should be closed.
|
||||
*/
|
||||
|
@ -299,11 +308,9 @@ struct ipc_error fd_switching_read (struct ipc_event *event, struct ipc_ctx *ctx
|
|||
|
||||
// 2. set event (either error or disconnection)
|
||||
if (r == IPC_CB_FD_CLOSING) {
|
||||
printf ("DISCONNECTION\n");
|
||||
IPC_EVENT_SET (event, IPC_EVENT_TYPE_DISCONNECTION, index, talkingfd, NULL);
|
||||
}
|
||||
else {
|
||||
printf ("ERROR\n");
|
||||
IPC_EVENT_SET (event, IPC_EVENT_TYPE_ERROR, index, talkingfd, NULL);
|
||||
}
|
||||
|
||||
|
|
Reference in New Issue