From 1936ef4b6a0926fbc974b50e059042b5f0f86972 Mon Sep 17 00:00:00 2001 From: Philippe PITTOLI Date: Thu, 4 Oct 2018 22:51:31 +0200 Subject: [PATCH] cleaning names, pongd stops itself for greater good --- core-test/app/array_proc.c | 4 +- core/client.c | 9 ++-- core/client.h | 10 ++--- core/communication.c | 87 +++++++++++++++++--------------------- core/communication.h | 10 +++-- core/msg.c | 30 ++++++++++--- core/msg.h | 2 + man/communication.h.3 | 2 +- pong/app/Makefile | 4 +- pong/app/pong.c | 17 +++++++- pong/app/pongd.c | 86 +++++++++++++++++++++---------------- pubsub/lib/channels.c | 4 +- pubsub/lib/channels.h | 2 +- pubsub/lib/pubsubd.c | 14 +++--- pubsub/lib/pubsubd.h | 2 +- remote/lib/remoted.c | 12 +++--- 16 files changed, 167 insertions(+), 128 deletions(-) diff --git a/core-test/app/array_proc.c b/core-test/app/array_proc.c index a085136..4ec83ff 100644 --- a/core-test/app/array_proc.c +++ b/core-test/app/array_proc.c @@ -5,8 +5,8 @@ int main() { int ret; - struct ipc_client_array clients; - memset(&clients, 0, sizeof(struct ipc_client_array)); + struct ipc_clients clients; + memset(&clients, 0, sizeof(struct ipc_clients)); struct ipc_client client_tab[5]; memset(&client_tab, 0, sizeof(struct ipc_client) * 5); diff --git a/core/client.c b/core/client.c index c073121..fb159f1 100644 --- a/core/client.c +++ b/core/client.c @@ -11,6 +11,7 @@ struct ipc_client * ipc_server_client_copy (const struct ipc_client *p) return NULL; struct ipc_client * copy = malloc (sizeof(struct ipc_client)); + memset (copy, 0, sizeof (struct ipc_client)); memcpy (copy, p, sizeof (struct ipc_client)); return copy; @@ -29,7 +30,7 @@ void ipc_server_client_gen (struct ipc_client *p p->index = index; } -int ipc_client_add (struct ipc_client_array *clients, struct ipc_client *p) +int ipc_client_add (struct ipc_clients *clients, struct ipc_client *p) { assert(clients != NULL); assert(p != NULL); @@ -45,7 +46,7 @@ int ipc_client_add (struct ipc_client_array *clients, struct ipc_client *p) return 0; } -int ipc_client_del (struct ipc_client_array *clients, struct ipc_client *p) +int ipc_client_del (struct ipc_clients *clients, struct ipc_client *p) { assert(clients != NULL); assert(p != NULL); @@ -86,7 +87,7 @@ void client_print (struct ipc_client *p) , p->proc_fd, p->index, p->version); } -void ipc_client_array_print (struct ipc_client_array *ap) +void ipc_client_array_print (struct ipc_clients *ap) { int i; for (i = 0; i < ap->size; i++) { @@ -95,7 +96,7 @@ void ipc_client_array_print (struct ipc_client_array *ap) } } -void ipc_client_array_free (struct ipc_client_array *ap) +void ipc_client_array_free (struct ipc_clients *ap) { if (ap->clients != NULL) { free (ap->clients); diff --git a/core/client.h b/core/client.h index 3e1b252..f5d3273 100644 --- a/core/client.h +++ b/core/client.h @@ -7,16 +7,16 @@ struct ipc_client { int proc_fd; }; -struct ipc_client_array { +struct ipc_clients { struct ipc_client **clients; int size; }; -int ipc_client_add (struct ipc_client_array *, struct ipc_client *); -int ipc_client_del (struct ipc_client_array *clients, struct ipc_client *p); +int ipc_client_add (struct ipc_clients *, struct ipc_client *); +int ipc_client_del (struct ipc_clients *clients, struct ipc_client *p); -void ipc_client_array_print (struct ipc_client_array *); -void ipc_client_array_free (struct ipc_client_array *); +void ipc_client_array_print (struct ipc_clients *); +void ipc_client_array_free (struct ipc_clients *); struct ipc_client * ipc_server_client_copy (const struct ipc_client *p); int ipc_server_client_eq (const struct ipc_client *p1, const struct ipc_client *p2); diff --git a/core/communication.c b/core/communication.c index fcafe2b..992615c 100644 --- a/core/communication.c +++ b/core/communication.c @@ -159,15 +159,15 @@ int ipc_application_write (struct ipc_service *srv, const struct ipc_message *m) /*calculer le max filedescriptor*/ -static int getMaxFd(struct ipc_client_array *ap) +static int getMaxFd(struct ipc_clients *clients) { int i; int max = 0; - for (i = 0; i < ap->size; i++ ) { - if (ap->clients[i]->proc_fd > max) { - max = ap->clients[i]->proc_fd; + for (i = 0; i < clients->size; i++ ) { + if (clients->clients[i]->proc_fd > max) { + max = clients->clients[i]->proc_fd; } } @@ -180,21 +180,18 @@ static int getMaxFd(struct ipc_client_array *ap) * * le service qui attend de nouvelles connexions * * un tableau de client qui souhaitent parler * - * la fonction trouve le clientus/service actif et renvoie - * un entier correspondant à quel descripteur de fichier il faut lire - * * celui du serveur = nouvelle connexion entrante (CONNECTION) - * * celui d'un ou plusieurs clientus = ils nous parlent (APPLICATION) - * * les deux à la fois (CON_APP) + * 0 = OK + * -1 = error */ -int ipc_server_select (struct ipc_client_array *ap, struct ipc_service *srv - , struct ipc_client_array *client) +int ipc_server_select (struct ipc_clients *clients, struct ipc_service *srv + , struct ipc_clients *active_clients, int *new_connection) { - assert (ap != NULL); - assert (client != NULL); + assert (clients != NULL); + assert (active_clients != NULL); - // delete previous read client array - ipc_client_array_free (client); + // delete previous read active_clients array + ipc_client_array_free (active_clients); int i, j; /* master file descriptor list */ @@ -212,44 +209,36 @@ int ipc_server_select (struct ipc_client_array *ap, struct ipc_service *srv /* add the listener to the master set */ FD_SET(listener, &master); - for (i=0; i < ap->size; i++) { - FD_SET(ap->clients[i]->proc_fd, &master); + for (i=0; i < clients->size; i++) { + FD_SET(clients->clients[i]->proc_fd, &master); } /* keep track of the biggest file descriptor */ - fdmax = getMaxFd(ap) > srv->service_fd ? getMaxFd(ap) : srv->service_fd; + fdmax = getMaxFd(clients) > srv->service_fd ? getMaxFd(clients) : srv->service_fd; - int is_listener = 0; + // printf ("loop ipc_server_select main_loop\n"); + readf = master; + if(select(fdmax+1, &readf, NULL, NULL, NULL) == -1) { + perror("select"); + return -1; + } - do { - // printf ("loop ipc_server_select main_loop\n"); - readf = master; - if(select(fdmax+1, &readf, NULL, NULL, NULL) == -1) { - perror("select"); - return -1; - } + /*run through the existing connections looking for data to be read*/ + for (i = 0; i <= fdmax; i++) { + // printf ("loop ipc_server_select inner loop\n"); + if (FD_ISSET(i, &readf)) { + if (i == listener) { + *new_connection = 1; + } else { + for(j = 0; j < clients->size; j++) { + // printf ("loop ipc_server_select inner inner loop\n"); + if(i == clients->clients[j]->proc_fd ) { + ipc_client_add (active_clients, clients->clients[j]); + } + } + } + } + } - /*run through the existing connections looking for data to be read*/ - for (i = 0; i <= fdmax; i++) { - // printf ("loop ipc_server_select inner loop\n"); - if (FD_ISSET(i, &readf)) { - if (i == listener) { - is_listener = 1; - } else { - for(j = 0; j < ap->size; j++) { - // printf ("loop ipc_server_select inner inner loop\n"); - if(i == ap->clients[j]->proc_fd ) { - ipc_client_add (client, ap->clients[j]); - } - } - } - } - } - } while (0); - - if (client->size > 0 && is_listener) - return CON_APP; - if (client->size > 0) - return APPLICATION; - return CONNECTION; + return 0; } diff --git a/core/communication.h b/core/communication.h index a246a18..c474317 100644 --- a/core/communication.h +++ b/core/communication.h @@ -18,9 +18,10 @@ #define PATH_MAX BUFSIZ -#define CONNECTION 0 -#define APPLICATION 1 -#define CON_APP 2 +#define IPC_MESSAGE_CONNECTION 0 +#define IPC_MESSAGE_DATA 1 +#define IPC_MESSAGE_DATA_AND_CONNECTION 2 +#define IPC_MESSAGE_SERVICE_STOP 3 struct ipc_service { unsigned int version; @@ -43,7 +44,8 @@ int ipc_server_accept (struct ipc_service *srv, struct ipc_client *p); int ipc_server_read (const struct ipc_client *, struct ipc_message *m); int ipc_server_write (const struct ipc_client *, const struct ipc_message *m); -int ipc_server_select (struct ipc_client_array *, struct ipc_service *, struct ipc_client_array *); +int ipc_server_select (struct ipc_clients * clients, struct ipc_service *srv + , struct ipc_clients *active_clients, int *new_connection); // APPLICATION diff --git a/core/msg.c b/core/msg.c index 32821ed..9d80572 100644 --- a/core/msg.c +++ b/core/msg.c @@ -22,9 +22,9 @@ int ipc_message_format_read (struct ipc_message *m, const char *buf, size_t msiz m->type = buf[0]; memcpy (&m->length, buf+1, 2); - assert (m->length <= BUFSIZ -3); - // printf ("type %d : msize = %ld, length = %d\n", m->type, msize, m->length); - assert (m->length == msize - 3); + assert (m->length <= BUFSIZ - 3); + printf ("type %d : msize = %ld, length = %d\n", m->type, msize, m->length); + assert (m->length == msize - 3 || m->length == 0); if (m->payload != NULL) free (m->payload), m->payload = NULL; @@ -55,16 +55,21 @@ int ipc_message_format_write (const struct ipc_message *m, char **buf, size_t *m if (*buf == NULL) { *buf = malloc (3 + m->length); + memset (*buf, 0, 3 + m->length); } char *buffer = *buf; buffer[0] = m->type; memcpy (buffer + 1, &m->length, 2); - memcpy (buffer + 3, m->payload, m->length); + if (m->payload != NULL) { + memcpy (buffer + 3, m->payload, m->length); + } *msize = 3 + m->length; + printf ("sending msg: type %u, size %d, msize %ld\n", m->type, m->length, *msize); + return 0; } @@ -125,10 +130,18 @@ int ipc_message_format (struct ipc_message *m, char type, const char *payload, s m->type = type; m->length = (short) length; - if (m->payload == NULL) + if (payload != NULL) { + if (m->payload != NULL) { + free (m->payload); + } + // FIXME: test malloc m->payload = malloc (length); + memset (m->payload, 0, length); + } - memcpy (m->payload, payload, length); + if (payload != NULL) { + memcpy (m->payload, payload, length); + } return 0; } @@ -147,6 +160,11 @@ int ipc_message_format_ack (struct ipc_message *m, const char *payload, size_t l return ipc_message_format (m, MSG_TYPE_ACK, payload, length); } +int ipc_message_format_server_close (struct ipc_message *m) +{ + return ipc_message_format (m, MSG_TYPE_SERVER_CLOSE, NULL, 0); +} + int ipc_message_free (struct ipc_message *m) { assert (m != NULL); diff --git a/core/msg.h b/core/msg.h index 337e2a0..459e965 100644 --- a/core/msg.h +++ b/core/msg.h @@ -10,6 +10,7 @@ #define MSG_TYPE_ERR 2 #define MSG_TYPE_ACK 3 #define MSG_TYPE_DATA 4 +#define MSG_TYPE_SERVER_CLOSE 5 struct ipc_message { char type; @@ -30,6 +31,7 @@ int ipc_message_write (int fd, const struct ipc_message *m); int ipc_message_format_con (struct ipc_message *m, const char *payload, size_t length); int ipc_message_format_data (struct ipc_message *m, const char *payload, size_t length); int ipc_message_format_ack (struct ipc_message *m, const char *payload, size_t length); +int ipc_message_format_server_close (struct ipc_message *m); int ipc_message_free (struct ipc_message *m); void ipc_message_print (const struct ipc_message *m); diff --git a/man/communication.h.3 b/man/communication.h.3 index 67d3309..ccdb14c 100644 --- a/man/communication.h.3 +++ b/man/communication.h.3 @@ -14,7 +14,7 @@ communication.h \- all functions explained .sp .BI "int ipc_server_close (struct ipc_service *" srv ); .BI "int ipc_server_close_client (struct ipc_client *" p ); -.BI "int ipc_server_select (struct ipc_client_array *" fds ", struct ipc_service *" srv ", struct ipc_client_array *" readfds ); +.BI "int ipc_server_select (struct ipc_clients *" fds ", struct ipc_service *" srv ", struct ipc_clients *" readfds ); .BI "int ipc_application_connection (int " argc ", char **" argv ", char **" env ", struct ipc_service *" srv .BI " , const char *" service_name " diff --git a/pong/app/Makefile b/pong/app/Makefile index 239c6f7..1c7936c 100644 --- a/pong/app/Makefile +++ b/pong/app/Makefile @@ -14,13 +14,13 @@ test: ./pongd.bin $(EXEC): $(OBJECTS) $(CFILES) - $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) $@.c -lcbor -o $@.bin + $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) $@.c -o $@.bin .c.o: $(CC) -c $(CFLAGS) $< -o $@ $(TESTS): - valgrind --show-leak-kinds=all --leak-check=full -v --track-origins=yes ./$(basename $@).bin + valgrind --show-leak-kinds=all --leak-check=full -v --track-origins=yes ./$(basename $@).bin $(PARAMS) clean: @-rm $(OBJECTS) diff --git a/pong/app/pong.c b/pong/app/pong.c index c9409af..a416872 100644 --- a/pong/app/pong.c +++ b/pong/app/pong.c @@ -62,6 +62,8 @@ void interactive (int argc, char *argv[], char *env[]) memset (buf, 0, BUFSIZ); int n; + int ask_server_to_quit = 0; + // index and version should be filled srv.index = 0; srv.version = 0; @@ -80,6 +82,11 @@ void interactive (int argc, char *argv[], char *env[]) if (n == 0 || strncmp (buf, "exit", 4) == 0) break; + if (strncmp(buf, "close server", 12) == 0) { + ask_server_to_quit = 1; + break; + } + ipc_message_format_data (&m, buf, strlen(buf) +1); memset (buf, 0, BUFSIZ); @@ -100,7 +107,15 @@ void interactive (int argc, char *argv[], char *env[]) ipc_message_free (&m); } - if (ipc_application_close (&srv) < 0) { + if (ask_server_to_quit) { + ipc_message_format_server_close (&m); + + if (ipc_application_write (&srv, &m) < 0) { + handle_err("main", "application_write < 0"); + exit (EXIT_FAILURE); + } + ipc_message_free (&m); + } else if (ipc_application_close (&srv) < 0) { handle_err("main", "application_close < 0"); exit (EXIT_FAILURE); } diff --git a/pong/app/pongd.c b/pong/app/pongd.c index b00b661..f290207 100644 --- a/pong/app/pongd.c +++ b/pong/app/pongd.c @@ -10,7 +10,9 @@ int cpt = 0; -void handle_new_connection (struct ipc_service *srv, struct ipc_client_array *ap) +struct ipc_service *srv = 0; + +void handle_new_connection (struct ipc_clients *clients) { struct ipc_client *p = malloc(sizeof(struct ipc_client)); memset(p, 0, sizeof(struct ipc_client)); @@ -21,7 +23,7 @@ void handle_new_connection (struct ipc_service *srv, struct ipc_client_array *ap printf("new connection\n"); } - if (ipc_client_add (ap, p) < 0) { + if (ipc_client_add (clients, p) < 0) { handle_error("ipc_client_add < 0"); } @@ -29,14 +31,14 @@ void handle_new_connection (struct ipc_service *srv, struct ipc_client_array *ap printf ("%d client(s)\n", cpt); } -void handle_new_msg (struct ipc_client_array *ap, struct ipc_client_array *proc_to_read) +void handle_new_msg (struct ipc_clients *clients, struct ipc_clients *clients_talking) { struct ipc_message m; memset (&m, 0, sizeof (struct ipc_message)); int i; - for (i = 0; i < proc_to_read->size; i++) { + for (i = 0; i < clients_talking->size; i++) { // printf ("loop handle_new_msg\n"); - if (ipc_server_read (proc_to_read->clients[i], &m) < 0) { + if (ipc_server_read (clients_talking->clients[i], &m) < 0) { handle_error("server_read < 0"); } @@ -45,18 +47,25 @@ void handle_new_msg (struct ipc_client_array *ap, struct ipc_client_array *proc_ cpt--; printf ("disconnection => %d client(s) remaining\n", cpt); - if (ipc_server_close_client (proc_to_read->clients[i]) < 0) + if (ipc_server_close_client (clients_talking->clients[i]) < 0) handle_err( "handle_new_msg", "server_close_client < 0"); - if (ipc_client_del (ap, proc_to_read->clients[i]) < 0) + if (ipc_client_del (clients, clients_talking->clients[i]) < 0) handle_err( "handle_new_msg", "ipc_client_del < 0"); - if (ipc_client_del (proc_to_read, proc_to_read->clients[i]) < 0) + if (ipc_client_del (clients_talking, clients_talking->clients[i]) < 0) handle_err( "handle_new_msg", "ipc_client_del < 0"); i--; continue; - } + } + + if (m.type == MSG_TYPE_SERVER_CLOSE) { + if (ipc_server_close (srv) < 0) { + handle_error("server_close < 0"); + } + exit (0); + } printf ("new message : %s", m.payload); - if (ipc_server_write (proc_to_read->clients[i], &m) < 0) { + if (ipc_server_write (clients_talking->clients[i], &m) < 0) { handle_err( "handle_new_msg", "server_write < 0"); } } @@ -70,35 +79,35 @@ void handle_new_msg (struct ipc_client_array *ap, struct ipc_client_array *proc_ * close a connection if MSG_TYPE_CLOSE received */ -void main_loop (struct ipc_service *srv) +void main_loop () { int i, ret = 0; - struct ipc_client_array ap; - memset(&ap, 0, sizeof(struct ipc_client_array)); + struct ipc_clients clients; + memset(&clients, 0, sizeof(struct ipc_clients)); - struct ipc_client_array proc_to_read; - memset(&proc_to_read, 0, sizeof(struct ipc_client_array)); + struct ipc_clients clients_talking; + memset(&clients_talking, 0, sizeof(struct ipc_clients)); while(1) { - ret = ipc_server_select (&ap, srv, &proc_to_read); - // printf ("on peut lire ces client:\n"); - // ipc_client_array_print (&proc_to_read); - // printf ("-- \n\n"); + int new_connection = 0; + ret = ipc_server_select (&clients, srv, &clients_talking, &new_connection); + if (ret < 0) { + handle_error("ipc_server_select < 0"); + } - if (ret == CONNECTION) { - handle_new_connection (srv, &ap); - } else if (ret == APPLICATION) { - handle_new_msg (&ap, &proc_to_read); - } else { // both new connection and new msg from at least one client - handle_new_connection (srv, &ap); - handle_new_msg (&ap, &proc_to_read); + if (new_connection) { + handle_new_connection (&clients); } - ipc_client_array_free (&proc_to_read); + + if (clients_talking.size > 0) { + handle_new_msg (&clients, &clients_talking); + } + ipc_client_array_free (&clients_talking); } - for (i = 0; i < ap.size; i++) { - if (ipc_server_close_client (ap.clients[i]) < 0) { + for (i = 0; i < clients.size; i++) { + if (ipc_server_close_client (clients.clients[i]) < 0) { handle_error( "server_close_client < 0"); } } @@ -117,26 +126,29 @@ void main_loop (struct ipc_service *srv) int main(int argc, char * argv[], char **env) { - struct ipc_service srv; - memset (&srv, 0, sizeof (struct ipc_service)); - srv.index = 0; - srv.version = 0; + srv = malloc (sizeof (struct ipc_service)); + if (srv == NULL) { + exit (1); + } + memset (srv, 0, sizeof (struct ipc_service)); + srv->index = 0; + srv->version = 0; // unlink("/tmp/ipc/pongd-0-0"); - if (ipc_server_init (argc, argv, env, &srv, PONGD_SERVICE_NAME) < 0) { + if (ipc_server_init (argc, argv, env, srv, PONGD_SERVICE_NAME) < 0) { handle_error("server_init < 0"); return EXIT_FAILURE; } - printf ("Listening on %s.\n", srv.spath); + printf ("Listening on %s.\n", srv->spath); printf("MAIN: server created\n" ); // the service will loop until the end of time, a specific message, a signal - main_loop (&srv); + main_loop (); // the application will shut down, and remove the service named pipe - if (ipc_server_close (&srv) < 0) { + if (ipc_server_close (srv) < 0) { handle_error("server_close < 0"); } diff --git a/pubsub/lib/channels.c b/pubsub/lib/channels.c index 9e8dd23..c8e9168 100644 --- a/pubsub/lib/channels.c +++ b/pubsub/lib/channels.c @@ -98,8 +98,8 @@ int pubsubd_channel_new (struct channel *c, const char * name) memcpy (c->chan, name, nlen); c->chanlen = nlen; - c->subs = malloc (sizeof (struct ipc_client_array)); - memset (c->subs, 0, sizeof (struct ipc_client_array)); + c->subs = malloc (sizeof (struct ipc_clients)); + memset (c->subs, 0, sizeof (struct ipc_clients)); return 0; } diff --git a/pubsub/lib/channels.h b/pubsub/lib/channels.h index 89cd0b6..4a74f7c 100644 --- a/pubsub/lib/channels.h +++ b/pubsub/lib/channels.h @@ -12,7 +12,7 @@ LIST_HEAD(channels, channel); struct channel { char *chan; size_t chanlen; - struct ipc_client_array *subs; + struct ipc_clients *subs; LIST_ENTRY(channel) entries; }; diff --git a/pubsub/lib/pubsubd.c b/pubsub/lib/pubsubd.c index d7b13cd..9f6f491 100644 --- a/pubsub/lib/pubsubd.c +++ b/pubsub/lib/pubsubd.c @@ -11,7 +11,7 @@ #include #include -void pubsubd_send (const struct ipc_client_array *ap, const struct pubsub_msg * m) +void pubsubd_send (const struct ipc_clients *ap, const struct pubsub_msg * m) { if (ap == NULL) { fprintf (stderr, "pubsubd_send: ap == NULL"); @@ -59,7 +59,7 @@ void pubsubd_send (const struct ipc_client_array *ap, const struct pubsub_msg * * new connection, once accepted the client is added to the array_proc * structure to be checked periodically for new messages */ -void handle_new_connection (struct ipc_service *srv, struct ipc_client_array *ap) +void handle_new_connection (struct ipc_service *srv, struct ipc_clients *ap) { struct ipc_client *p = malloc(sizeof(struct ipc_client)); memset(p, 0, sizeof(struct ipc_client)); @@ -76,7 +76,7 @@ void handle_new_connection (struct ipc_service *srv, struct ipc_client_array *ap } void handle_new_msg (struct channels *chans - , struct ipc_client_array *ap, struct ipc_client_array *proc_to_read) + , struct ipc_clients *ap, struct ipc_clients *proc_to_read) { struct ipc_message m; memset (&m, 0, sizeof (struct ipc_message)); @@ -169,11 +169,11 @@ void pubsubd_main_loop (struct ipc_service *srv, struct channels *chans) { int i, ret = 0; - struct ipc_client_array ap; - memset(&ap, 0, sizeof(struct ipc_client_array)); + struct ipc_clients ap; + memset(&ap, 0, sizeof(struct ipc_clients)); - struct ipc_client_array proc_to_read; - memset(&proc_to_read, 0, sizeof(struct ipc_client_array)); + struct ipc_clients proc_to_read; + memset(&proc_to_read, 0, sizeof(struct ipc_clients)); while(1) { ret = ipc_server_select (&ap, srv, &proc_to_read); diff --git a/pubsub/lib/pubsubd.h b/pubsub/lib/pubsubd.h index 7cdcb93..a8a4ac8 100644 --- a/pubsub/lib/pubsubd.h +++ b/pubsub/lib/pubsubd.h @@ -10,6 +10,6 @@ #define PUBSUBD_SERVICE_NAME "pubsubd" void pubsubd_main_loop (struct ipc_service *srv, struct channels * chans); -void pubsubd_message_send (const struct ipc_client_array *ap, const struct pubsub_msg * m); +void pubsubd_message_send (const struct ipc_clients *ap, const struct pubsub_msg * m); #endif diff --git a/remote/lib/remoted.c b/remote/lib/remoted.c index 9f8963a..707f6e0 100644 --- a/remote/lib/remoted.c +++ b/remote/lib/remoted.c @@ -15,7 +15,7 @@ * new connection, once accepted the client is added to the array_proc * structure to be checked periodically for new messages */ -void handle_new_connection (struct ipc_service *srv, struct ipc_client_array *ap) +void handle_new_connection (struct ipc_service *srv, struct ipc_clients *ap) { struct ipc_client *p = malloc(sizeof(struct ipc_client)); memset(p, 0, sizeof(struct ipc_client)); @@ -31,7 +31,7 @@ void handle_new_connection (struct ipc_service *srv, struct ipc_client_array *ap } } -void handle_new_msg (struct ipc_client_array *ap, struct ipc_client_array *proc_to_read) +void handle_new_msg (struct ipc_clients *ap, struct ipc_clients *proc_to_read) { struct ipc_message m; memset (&m, 0, sizeof (struct ipc_message)); @@ -114,11 +114,11 @@ void remoted_main_loop (struct ipc_service *srv, struct remoted_ctx *ctx) log_debug ("remoted entering main loop"); int i, ret = 0; - struct ipc_client_array ap; - memset(&ap, 0, sizeof(struct ipc_client_array)); + struct ipc_clients ap; + memset(&ap, 0, sizeof(struct ipc_clients)); - struct ipc_client_array proc_to_read; - memset(&proc_to_read, 0, sizeof(struct ipc_client_array)); + struct ipc_clients proc_to_read; + memset(&proc_to_read, 0, sizeof(struct ipc_clients)); while(1) { /* TODO: authorizations */