pubsubd: debug
parent
cdf975db29
commit
bd2e3e0d15
|
@ -124,12 +124,6 @@ int srv_close (struct service *srv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO remove, replace by file_read
|
|
||||||
int srv_get_listen_raw (const struct service *srv, char **buf, size_t *msize)
|
|
||||||
{
|
|
||||||
return file_read (srv->spath, buf, msize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int srv_get_new_process (const struct service *srv, struct process *p)
|
int srv_get_new_process (const struct service *srv, struct process *p)
|
||||||
{
|
{
|
||||||
if (srv->spath == NULL) {
|
if (srv->spath == NULL) {
|
||||||
|
|
|
@ -37,7 +37,6 @@ int srv_init (int argc, char **argv, char **env
|
||||||
, int (*cb)(int argc, char **argv, char **env
|
, int (*cb)(int argc, char **argv, char **env
|
||||||
, struct service *srv, const char *sname));
|
, struct service *srv, const char *sname));
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -363,16 +363,15 @@ void pubsubd_msg_free (struct pubsub_msg *msg)
|
||||||
|
|
||||||
// COMMUNICATION
|
// COMMUNICATION
|
||||||
|
|
||||||
int pubsubd_get_new_process (struct service *srv, struct app_list_elm *ale
|
int pubsubd_get_new_process (const char *spath, struct app_list_elm *ale
|
||||||
, struct channels *chans, struct channel **c)
|
, struct channels *chans, struct channel **c)
|
||||||
{
|
{
|
||||||
if (srv == NULL || ale == NULL || chans == NULL)
|
if (spath == NULL || ale == NULL || chans == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
size_t msize = 0;
|
size_t msize = 0;
|
||||||
srv_get_listen_raw (srv, &buf, &msize);
|
file_read (spath, &buf, &msize);
|
||||||
|
|
||||||
// parse pubsubd init msg (sent in TMPDIR/<service>)
|
// parse pubsubd init msg (sent in TMPDIR/<service>)
|
||||||
//
|
//
|
||||||
// line fmt : pid index version action chan
|
// line fmt : pid index version action chan
|
||||||
|
@ -416,6 +415,8 @@ int pubsubd_get_new_process (struct service *srv, struct app_list_elm *ale
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5 : {
|
case 5 : {
|
||||||
|
// for the last element of the line
|
||||||
|
// drop the following \n
|
||||||
if (ale->action != PUBSUB_QUIT)
|
if (ale->action != PUBSUB_QUIT)
|
||||||
memcpy (chan, token, (strlen (token) < BUFSIZ) ?
|
memcpy (chan, token, (strlen (token) < BUFSIZ) ?
|
||||||
strlen (token) -1 : BUFSIZ);
|
strlen (token) -1 : BUFSIZ);
|
||||||
|
|
|
@ -35,7 +35,7 @@ void pubsubd_msg_print (const struct pubsub_msg *msg);
|
||||||
//
|
//
|
||||||
// line fmt : pid index version action chan
|
// line fmt : pid index version action chan
|
||||||
// action : quit | pub | sub
|
// action : quit | pub | sub
|
||||||
int pubsubd_get_new_process (struct service *srv, struct app_list_elm *ale
|
int pubsubd_get_new_process (const char *spath, struct app_list_elm *ale
|
||||||
, struct channels *chans, struct channel **c);
|
, struct channels *chans, struct channel **c);
|
||||||
int pubsubd_msg_read_cb (FILE *f, char ** buf, size_t * msize);
|
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);
|
||||||
|
|
|
@ -117,7 +117,7 @@ main(int argc, char **argv, char **env)
|
||||||
struct app_list_elm ale;
|
struct app_list_elm ale;
|
||||||
memset (&ale, 0, sizeof (struct app_list_elm));
|
memset (&ale, 0, sizeof (struct app_list_elm));
|
||||||
struct channel *chan = NULL;
|
struct channel *chan = NULL;
|
||||||
pubsubd_get_new_process (&srv, &ale, &chans, &chan);
|
pubsubd_get_new_process (srv.spath, &ale, &chans, &chan);
|
||||||
pubsubd_channels_print (&chans);
|
pubsubd_channels_print (&chans);
|
||||||
|
|
||||||
// end the application
|
// end the application
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
#include "../lib/pubsubd.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
ohshit(int rvalue, const char* str) {
|
||||||
|
fprintf(stderr, "%s\n", str);
|
||||||
|
exit(rvalue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void usage (char **argv) {
|
||||||
|
fprintf (stderr, "usage: %s path\n", argv[0]);
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
if (argc != 2) {
|
||||||
|
usage (argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *spath = argv[1];
|
||||||
|
|
||||||
|
printf ("Listening on %s.\n", spath);
|
||||||
|
|
||||||
|
struct channels chans;
|
||||||
|
memset (&chans, 0, sizeof (struct channels));
|
||||||
|
|
||||||
|
for (int nb = 10, i = 0 ; nb > 0; i++, nb--) {
|
||||||
|
struct app_list_elm ale;
|
||||||
|
memset (&ale, 0, sizeof (struct app_list_elm));
|
||||||
|
|
||||||
|
struct channel chan;
|
||||||
|
memset (&chan, 0, sizeof (struct channel));
|
||||||
|
struct channel *c = &chan;
|
||||||
|
|
||||||
|
pubsubd_get_new_process (spath, &ale, &chans, &c);
|
||||||
|
|
||||||
|
printf ("print the channels, %d chan\n", i);
|
||||||
|
printf ("--\n");
|
||||||
|
pubsubd_channels_print (&chans);
|
||||||
|
printf ("--\n");
|
||||||
|
printf ("still %d remaining processes\n", nb);
|
||||||
|
}
|
||||||
|
|
||||||
|
pubsubd_channels_del_all (&chans);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
for i in $(seq 1 10)
|
||||||
|
do
|
||||||
|
echo "${i} 1 1 pub chan${i}" > /tmp/ipc/gen
|
||||||
|
sleep 1
|
||||||
|
done
|
Reference in New Issue