Add and remove printf.
parent
d32e26b848
commit
62db8ff7fd
|
@ -474,9 +474,17 @@ struct ipc_error handle_new_message (struct ipc_event *event, struct ipc_ctx *ct
|
||||||
ret = ipc_read (ctx, index, m);
|
ret = ipc_read (ctx, index, m);
|
||||||
if (ret.error_code != IPC_ERROR_NONE && ret.error_code != IPC_ERROR_CLOSED_RECIPIENT) {
|
if (ret.error_code != IPC_ERROR_NONE && ret.error_code != IPC_ERROR_CLOSED_RECIPIENT) {
|
||||||
struct ipc_error rvalue = ret; // store the final return value
|
struct ipc_error rvalue = ret; // store the final return value
|
||||||
|
|
||||||
ipc_message_empty (m);
|
ipc_message_empty (m);
|
||||||
free (m);
|
free (m);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf ("error when ipc_read: index %d fd %d error num %d, message: %s\n"
|
||||||
|
, index, ctx->pollfd[index].fd
|
||||||
|
, ret.error_code
|
||||||
|
, ret.error_message);
|
||||||
|
#endif
|
||||||
|
|
||||||
// if there is a problem, just remove the client
|
// if there is a problem, just remove the client
|
||||||
TEST_IPC_P (ipc_close (ctx, index), "cannot close a connection in handle_message");
|
TEST_IPC_P (ipc_close (ctx, index), "cannot close a connection in handle_message");
|
||||||
TEST_IPC_P (ipc_del (ctx, index), "cannot delete a connection in handle_message");
|
TEST_IPC_P (ipc_del (ctx, index), "cannot delete a connection in handle_message");
|
||||||
|
@ -534,6 +542,9 @@ struct ipc_error ipc_wait_event (struct ipc_ctx *ctx, struct ipc_event *event, i
|
||||||
|
|
||||||
for (size_t i = 0; i < ctx->size; i++) {
|
for (size_t i = 0; i < ctx->size; i++) {
|
||||||
// We assume that any fd in the list has to be listen to.
|
// We assume that any fd in the list has to be listen to.
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf ("reading fd: %d index %lu\n", ctx->pollfd[i].fd, i);
|
||||||
|
#endif
|
||||||
ctx->pollfd[i].events = POLLIN;
|
ctx->pollfd[i].events = POLLIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -542,6 +553,9 @@ struct ipc_error ipc_wait_event (struct ipc_ctx *ctx, struct ipc_event *event, i
|
||||||
// … verify that its destination is available for message exchange.
|
// … verify that its destination is available for message exchange.
|
||||||
for (size_t y = 0; y < ctx->size; y++) {
|
for (size_t y = 0; y < ctx->size; y++) {
|
||||||
if (ctx->pollfd[y].fd == ctx->tx.messages[i].fd) {
|
if (ctx->pollfd[y].fd == ctx->tx.messages[i].fd) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf ("writing fd: %d\n", ctx->pollfd[y].fd);
|
||||||
|
#endif
|
||||||
ctx->pollfd[y].events |= POLLOUT;
|
ctx->pollfd[y].events |= POLLOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -648,13 +662,17 @@ struct ipc_error ipc_wait_event (struct ipc_ctx *ctx, struct ipc_event *event, i
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->pollfd[i].revents & POLLERR) {
|
if (ctx->pollfd[i].revents & POLLERR) {
|
||||||
printf ("POLLERR: PROBLEM WITH fd %d\n", ctx->pollfd[i].fd);
|
#ifdef DEBUG
|
||||||
|
printf ("pollerr: problem with fd %d\n", ctx->pollfd[i].fd);
|
||||||
|
#endif
|
||||||
IPC_EVENT_SET (event, IPC_EVENT_TYPE_ERROR, i, ctx->pollfd[i].fd, NULL);
|
IPC_EVENT_SET (event, IPC_EVENT_TYPE_ERROR, i, ctx->pollfd[i].fd, NULL);
|
||||||
goto wait_event_exit;
|
goto wait_event_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->pollfd[i].revents & POLLNVAL) {
|
if (ctx->pollfd[i].revents & POLLNVAL) {
|
||||||
printf ("POLLNVAL: INVALID fd %d\n", ctx->pollfd[i].fd);
|
#ifdef DEBUG
|
||||||
|
printf ("pollnval: invalid fd %d\n", ctx->pollfd[i].fd);
|
||||||
|
#endif
|
||||||
IPC_EVENT_SET (event, IPC_EVENT_TYPE_ERROR, i, ctx->pollfd[i].fd, NULL);
|
IPC_EVENT_SET (event, IPC_EVENT_TYPE_ERROR, i, ctx->pollfd[i].fd, NULL);
|
||||||
goto wait_event_exit;
|
goto wait_event_exit;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#define RUNDIR "/run/ipc/"
|
#define RUNDIR "/run/ipc/"
|
||||||
#define PATH_MAX 4096
|
#define PATH_MAX 4096
|
||||||
#define IPC_HEADER_SIZE 6
|
#define IPC_HEADER_SIZE 6
|
||||||
|
// #define __IPC_BASE_SIZE 500000 // 500 KB
|
||||||
#define __IPC_BASE_SIZE 2000000 // 2 MB, plenty enough space for messages
|
#define __IPC_BASE_SIZE 2000000 // 2 MB, plenty enough space for messages
|
||||||
#define IPC_MAX_MESSAGE_SIZE __IPC_BASE_SIZE-IPC_HEADER_SIZE
|
#define IPC_MAX_MESSAGE_SIZE __IPC_BASE_SIZE-IPC_HEADER_SIZE
|
||||||
|
|
||||||
|
|
|
@ -88,14 +88,10 @@ void ipc_ctx_switching_add (struct ipc_ctx *ctx, int orig, int dest)
|
||||||
|
|
||||||
void ipc_switching_add (struct ipc_switchings *is, int orig, int dest)
|
void ipc_switching_add (struct ipc_switchings *is, int orig, int dest)
|
||||||
{
|
{
|
||||||
// printf ("ipc_switching_add START: switchdb has %ld entries\n", is->size);
|
|
||||||
|
|
||||||
if (is->collection == NULL) {
|
if (is->collection == NULL) {
|
||||||
// printf ("switchdb collection is null\n");
|
|
||||||
is->collection = malloc (sizeof (struct ipc_switching) * (is->size + 1));
|
is->collection = malloc (sizeof (struct ipc_switching) * (is->size + 1));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// printf ("switchdb collection isn't null\n");
|
|
||||||
is->collection = realloc (is->collection, sizeof (struct ipc_switching) * (is->size + 1));
|
is->collection = realloc (is->collection, sizeof (struct ipc_switching) * (is->size + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,8 +110,6 @@ void ipc_switching_add (struct ipc_switchings *is, int orig, int dest)
|
||||||
is->collection[is->size - 1].dest_in = NULL;
|
is->collection[is->size - 1].dest_in = NULL;
|
||||||
is->collection[is->size - 1].orig_out = NULL;
|
is->collection[is->size - 1].orig_out = NULL;
|
||||||
is->collection[is->size - 1].dest_out = NULL;
|
is->collection[is->size - 1].dest_out = NULL;
|
||||||
|
|
||||||
// printf ("ipc_switching_add END: switchdb has %ld entries\n", is->size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ipc_ctx_switching_del (struct ipc_ctx *ctx, int fd)
|
int ipc_ctx_switching_del (struct ipc_ctx *ctx, int fd)
|
||||||
|
@ -293,6 +287,7 @@ struct ipc_error fd_switching_read (struct ipc_event *event, struct ipc_ctx *ctx
|
||||||
|
|
||||||
// If the socket is associated to another one for ipcd:
|
// If the socket is associated to another one for ipcd:
|
||||||
// read and write automatically and provide a new IPC_EVENT_TYPE indicating the switch.
|
// 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);
|
T_R ((ctx->switchdb.size == 0), IPC_ERROR_FD_SWITCHING__NO_FD_RECORD);
|
||||||
|
|
||||||
int talkingfd = ctx->pollfd[index].fd;
|
int talkingfd = ctx->pollfd[index].fd;
|
||||||
|
@ -387,8 +382,6 @@ struct ipc_error fd_switching_read (struct ipc_event *event, struct ipc_ctx *ctx
|
||||||
*/
|
*/
|
||||||
struct ipc_error fd_switching_write (struct ipc_event *event, struct ipc_ctx *ctx, int index)
|
struct ipc_error fd_switching_write (struct ipc_event *event, struct ipc_ctx *ctx, int index)
|
||||||
{
|
{
|
||||||
// printf ("fd_switching_write\n");
|
|
||||||
|
|
||||||
// If the socket is associated to another one for ipcd:
|
// If the socket is associated to another one for ipcd:
|
||||||
// read and write automatically and provide a new IPC_EVENT_TYPE indicating the switch.
|
// 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);
|
T_R ((ctx->switchdb.size == 0), IPC_ERROR_FD_SWITCHING__NO_FD_RECORD);
|
||||||
|
|
|
@ -23,10 +23,14 @@
|
||||||
struct ipc_error usock_send (const int32_t fd, const char *buf, size_t len, size_t * sent)
|
struct ipc_error usock_send (const int32_t fd, const char *buf, size_t len, size_t * sent)
|
||||||
{
|
{
|
||||||
ssize_t ret = 0;
|
ssize_t ret = 0;
|
||||||
|
|
||||||
|
#ifdef __PRINT_MSG_SIZES
|
||||||
|
fprintf (stderr, "a %10lu-byte message should be sent to %d\n", len, fd);
|
||||||
|
#endif
|
||||||
|
|
||||||
ret = send (fd, buf, len, MSG_NOSIGNAL);
|
ret = send (fd, buf, len, MSG_NOSIGNAL);
|
||||||
if (ret == -1)
|
if (ret == -1)
|
||||||
{
|
{
|
||||||
// TODO: Check for errno.
|
|
||||||
// Some choice could be made.
|
// Some choice could be made.
|
||||||
switch (errno) {
|
switch (errno) {
|
||||||
|
|
||||||
|
@ -125,6 +129,12 @@ struct ipc_error usock_recv (const int32_t fd, char **buf, size_t * len)
|
||||||
if (msize == 0) {
|
if (msize == 0) {
|
||||||
memcpy (&msize, *buf + 1, sizeof msize);
|
memcpy (&msize, *buf + 1, sizeof msize);
|
||||||
msize = ntohl (msize);
|
msize = ntohl (msize);
|
||||||
|
|
||||||
|
#ifdef __PRINT_MSG_SIZES
|
||||||
|
fprintf (stderr, "a %10u-byte message should be received on %d\n"
|
||||||
|
, msize + IPC_HEADER_SIZE
|
||||||
|
, fd);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
// else {
|
// else {
|
||||||
// printf ("USOCKET: We received a message in (at least) two packets (receveid %u bytes).\n", msize_read);
|
// printf ("USOCKET: We received a message in (at least) two packets (receveid %u bytes).\n", msize_read);
|
||||||
|
|
Reference in New Issue