no warnings anymore, YEAHHHHHHHHHH :)
parent
4549a5b362
commit
07f846b40e
|
@ -75,11 +75,21 @@ int file_write (FILE *f, const char *buf, size_t msize)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void srv_init (struct service *srv, const char *sname)
|
void srv_init (int argc, char **argv, char **env, struct service *srv, const char *sname)
|
||||||
{
|
{
|
||||||
if (srv == NULL)
|
if (srv == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
// use the argc, argv and env parameters
|
||||||
|
// it will be useful to change some parameters transparently
|
||||||
|
// ex: to get resources from other machines, choosing the
|
||||||
|
// remote with environment variables
|
||||||
|
|
||||||
|
argc = argc;
|
||||||
|
argv = argv;
|
||||||
|
env = env;
|
||||||
|
|
||||||
// gets the service path, such as /tmp/<service>
|
// gets the service path, such as /tmp/<service>
|
||||||
memset (srv->spath, 0, PATH_MAX);
|
memset (srv->spath, 0, PATH_MAX);
|
||||||
strncat (srv->spath, TMPDIR, PATH_MAX -1);
|
strncat (srv->spath, TMPDIR, PATH_MAX -1);
|
||||||
|
|
|
@ -30,7 +30,7 @@ struct service {
|
||||||
FILE *spipe;
|
FILE *spipe;
|
||||||
};
|
};
|
||||||
|
|
||||||
void srv_init (struct service *srv, const char *sname);
|
void srv_init (int argc, char **argv, char **env, struct service *srv, const char *sname);
|
||||||
|
|
||||||
int srv_get_listen_raw (const struct service *srv, char **buf, size_t *msize);
|
int srv_get_listen_raw (const struct service *srv, char **buf, size_t *msize);
|
||||||
int srv_get_new_process (const struct service *srv, struct process *proc);
|
int srv_get_new_process (const struct service *srv, struct process *proc);
|
||||||
|
|
|
@ -593,15 +593,16 @@ void pubsub_connection (struct service *srv, struct process *p, enum app_list_el
|
||||||
free (straction);
|
free (straction);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pubsub_disconnect (struct service *srv, struct process *p, enum app_list_elm_action action, const char *channame)
|
// tell the service to stop
|
||||||
|
void pubsub_disconnect (struct service *srv)
|
||||||
{
|
{
|
||||||
// line fmt : pid index version quit
|
// line fmt : 0 0 0 quit
|
||||||
// "quit" action is also possible (see pubsub_disconnect)
|
|
||||||
char line[BUFSIZ];
|
char line[BUFSIZ];
|
||||||
snprintf (line, BUFSIZ, "%d %d %d quit\n" , p->pid, p->index, p->version);
|
snprintf (line, BUFSIZ, "0 0 0 quit\n");
|
||||||
|
app_srv_connection (srv, line, strlen (line));
|
||||||
}
|
}
|
||||||
|
|
||||||
void pubsub_msg_send (const struct service *s, struct process *p, const struct pubsub_msg * m)
|
void pubsub_msg_send (struct process *p, const struct pubsub_msg * m)
|
||||||
{
|
{
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
size_t msize = 0;
|
size_t msize = 0;
|
||||||
|
@ -614,7 +615,7 @@ void pubsub_msg_send (const struct service *s, struct process *p, const struct p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pubsub_msg_recv (const struct service *s, struct process *p, struct pubsub_msg * m)
|
void pubsub_msg_recv (struct process *p, struct pubsub_msg * m)
|
||||||
{
|
{
|
||||||
// read the message from the process
|
// read the message from the process
|
||||||
size_t mlen = 0;
|
size_t mlen = 0;
|
||||||
|
|
|
@ -41,8 +41,8 @@ int pubsubd_msg_read_cb (FILE *f, char ** buf, size_t * msize);
|
||||||
void pubsubd_msg_send (const struct app_list_head *alh, const struct pubsub_msg *m);
|
void pubsubd_msg_send (const struct app_list_head *alh, const struct pubsub_msg *m);
|
||||||
void pubsubd_msg_recv (struct process *p, struct pubsub_msg *m);
|
void pubsubd_msg_recv (struct process *p, struct pubsub_msg *m);
|
||||||
|
|
||||||
void pubsub_msg_send (const struct service *, struct process *p, const struct pubsub_msg *msg);
|
void pubsub_msg_send (struct process *p, const struct pubsub_msg *msg);
|
||||||
void pubsub_msg_recv (const struct service *, struct process *p, struct pubsub_msg *msg);
|
void pubsub_msg_recv (struct process *p, struct pubsub_msg *msg);
|
||||||
|
|
||||||
// CHANNEL
|
// CHANNEL
|
||||||
|
|
||||||
|
@ -102,6 +102,6 @@ void pubsubd_app_list_elm_create (struct app_list_elm *ale, struct process *p);
|
||||||
void pubsubd_app_list_elm_free (struct app_list_elm *todel);
|
void pubsubd_app_list_elm_free (struct app_list_elm *todel);
|
||||||
|
|
||||||
void pubsub_connection (struct service *srv, struct process *p, enum app_list_elm_action action, const char *channame);
|
void pubsub_connection (struct service *srv, struct process *p, enum app_list_elm_action action, const char *channame);
|
||||||
void pubsub_disconnect (struct service *srv, struct process *p, enum app_list_elm_action action, const char *channame);
|
void pubsub_disconnect (struct service *srv);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -63,10 +63,10 @@ void main_loop (const struct service *srv)
|
||||||
* 5. removes the named pipe /tmp/<service>
|
* 5. removes the named pipe /tmp/<service>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int main(int argc, char * argv[])
|
int main(int argc, char * argv[], char **env)
|
||||||
{
|
{
|
||||||
struct service srv;
|
struct service srv;
|
||||||
srv_init (&srv, PONGD_SERVICE_NAME);
|
srv_init (argc, argv, env, &srv, PONGD_SERVICE_NAME);
|
||||||
printf ("Listening on %s.\n", srv.spath);
|
printf ("Listening on %s.\n", srv.spath);
|
||||||
|
|
||||||
// creates the service named pipe, that listens to client applications
|
// creates the service named pipe, that listens to client applications
|
||||||
|
|
|
@ -16,7 +16,7 @@ void usage (char **argv)
|
||||||
printf ( "usage : %s pid index (pub|sub|both|quit) [chan]\n", argv[0]);
|
printf ( "usage : %s pid index (pub|sub|both|quit) [chan]\n", argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sim_connection (pid_t pid, int index, int version, char *cmd, char *chan)
|
void sim_connection (int argc, char **argv, char **env, pid_t pid, int index, int version, char *cmd, char *chan)
|
||||||
{
|
{
|
||||||
|
|
||||||
printf ("Simulate connnection : pid %d index %d version %d "
|
printf ("Simulate connnection : pid %d index %d version %d "
|
||||||
|
@ -25,7 +25,7 @@ void sim_connection (pid_t pid, int index, int version, char *cmd, char *chan)
|
||||||
|
|
||||||
struct service srv;
|
struct service srv;
|
||||||
bzero (&srv, sizeof (struct service));
|
bzero (&srv, sizeof (struct service));
|
||||||
srv_init (&srv, PUBSUB_SERVICE_NAME);
|
srv_init (argc, argv, env, &srv, PUBSUB_SERVICE_NAME);
|
||||||
printf ("Writing on %s.\n", srv.spath);
|
printf ("Writing on %s.\n", srv.spath);
|
||||||
|
|
||||||
struct process p;
|
struct process p;
|
||||||
|
@ -47,11 +47,11 @@ void sim_connection (pid_t pid, int index, int version, char *cmd, char *chan)
|
||||||
m.chanlen = strlen (MYCHAN);
|
m.chanlen = strlen (MYCHAN);
|
||||||
m.data = malloc (strlen (MYMESSAGE));
|
m.data = malloc (strlen (MYMESSAGE));
|
||||||
m.datalen = strlen (MYMESSAGE);
|
m.datalen = strlen (MYMESSAGE);
|
||||||
pubsub_msg_send (&srv, &p, &m);
|
pubsub_msg_send (&p, &m);
|
||||||
|
|
||||||
// second message, to disconnect from the server
|
// second message, to disconnect from the server
|
||||||
m.type = PUBSUB_TYPE_DISCONNECT;
|
m.type = PUBSUB_TYPE_DISCONNECT;
|
||||||
pubsub_msg_send (&srv, &p, &m);
|
pubsub_msg_send (&p, &m);
|
||||||
|
|
||||||
// free everything
|
// free everything
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ void sim_connection (pid_t pid, int index, int version, char *cmd, char *chan)
|
||||||
srv_process_free (&p);
|
srv_process_free (&p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sim_disconnection (pid_t pid, int index, int version)
|
void sim_disconnection (int argc, char **argv, char **env, pid_t pid, int index, int version)
|
||||||
{
|
{
|
||||||
struct service srv;
|
struct service srv;
|
||||||
bzero (&srv, sizeof (struct service));
|
bzero (&srv, sizeof (struct service));
|
||||||
|
@ -85,7 +85,7 @@ void sim_disconnection (pid_t pid, int index, int version)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char* argv[])
|
main(int argc, char **argv, char **env)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (argc < 3) {
|
if (argc < 3) {
|
||||||
|
@ -108,10 +108,10 @@ main(int argc, char* argv[])
|
||||||
if (strcmp(cmd, "quit") != 0) {
|
if (strcmp(cmd, "quit") != 0) {
|
||||||
char *chan = NULL;
|
char *chan = NULL;
|
||||||
chan = argv[4];
|
chan = argv[4];
|
||||||
sim_connection (pid, index, version, cmd, chan);
|
sim_connection (argc, argv, env, pid, index, version, cmd, chan);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sim_disconnection (pid, index, version);
|
sim_disconnection (argc, argv, env, pid, index, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
|
|
@ -12,11 +12,11 @@ ohshit(int rvalue, const char* str) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char* argv[])
|
main(int argc, char **argv, char **env)
|
||||||
{
|
{
|
||||||
struct service srv;
|
struct service srv;
|
||||||
memset (&srv, 0, sizeof (struct service));
|
memset (&srv, 0, sizeof (struct service));
|
||||||
srv_init (&srv, PUBSUB_SERVICE_NAME);
|
srv_init (argc, argv, env, &srv, PUBSUB_SERVICE_NAME);
|
||||||
printf ("Writing on %s.\n", srv.spath);
|
printf ("Writing on %s.\n", srv.spath);
|
||||||
|
|
||||||
struct process p;
|
struct process p;
|
||||||
|
@ -39,11 +39,11 @@ main(int argc, char* argv[])
|
||||||
m.chanlen = strlen (MYCHAN);
|
m.chanlen = strlen (MYCHAN);
|
||||||
m.data = malloc (strlen (MYMESSAGE));
|
m.data = malloc (strlen (MYMESSAGE));
|
||||||
m.datalen = strlen (MYMESSAGE);
|
m.datalen = strlen (MYMESSAGE);
|
||||||
pubsub_msg_send (&srv, &p, &m);
|
pubsub_msg_send (&p, &m);
|
||||||
|
|
||||||
// second message, to disconnect from the server
|
// second message, to disconnect from the server
|
||||||
m.type = PUBSUB_TYPE_DISCONNECT;
|
m.type = PUBSUB_TYPE_DISCONNECT;
|
||||||
pubsub_msg_send (&srv, &p, &m);
|
pubsub_msg_send (&p, &m);
|
||||||
|
|
||||||
// free everything
|
// free everything
|
||||||
|
|
||||||
|
|
|
@ -55,11 +55,11 @@ void * pubsubd_worker_thread (void *params)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char* argv[])
|
main(int argc, char **argv, char **env)
|
||||||
{
|
{
|
||||||
struct service srv;
|
struct service srv;
|
||||||
memset (&srv, 0, sizeof (struct service));
|
memset (&srv, 0, sizeof (struct service));
|
||||||
srv_init (&srv, PUBSUB_SERVICE_NAME);
|
srv_init (argc, argv, env, &srv, PUBSUB_SERVICE_NAME);
|
||||||
printf ("Listening on %s.\n", srv.spath);
|
printf ("Listening on %s.\n", srv.spath);
|
||||||
|
|
||||||
// creates the service named pipe, that listens to client applications
|
// creates the service named pipe, that listens to client applications
|
||||||
|
|
Reference in New Issue