X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=stat.c;h=caf432d9748ca3b5e293657359a17ca98f5b8559;hp=532f9cdfc5449add435bcfb4ba71a91924991c9b;hb=17cba74507aad9a2cf5a8f113270e4bf6f8ade40;hpb=69f0930489da9ace5af8aee104ad21d188aed387 diff --git a/stat.c b/stat.c index 532f9cdf..caf432d9 100644 --- a/stat.c +++ b/stat.c @@ -31,25 +31,20 @@ #define MAX_STAT_CLIENTS 50 /** - * The structure associated with a connected client that sent the 'stat' command -* + * describes a status client of para_audiod + * + * There's one such structure per audiod client that sent the 'stat' command. * * A status client is identified by its file descriptor. para_audiod * keeps a list of connected status clients. */ struct stat_client { -/** - * - * - * the stat client's file descriptor - */ -int fd; -long unsigned item_mask; -/** - * - * its entry in the list of stat clients -*/ -struct list_head node; + /** the stat client's file descriptor */ + int fd; + /** bitmask of those status items the client is interested in */ + long unsigned item_mask; + /** its entry in the list of stat clients */ + struct list_head node; }; static struct list_head client_list; @@ -95,7 +90,6 @@ const char *status_item_list[NUM_STAT_ITEMS] = { [SI_AUDIOD_UPTIME] = "audiod_uptime", [SI_SELECTOR] = "dbtool" }; -#define FOR_EACH_STAT_ITEM(i) for (i = 0; i < NUM_STAT_ITEMS; i++) static void dump_stat_client_list(void) { @@ -129,8 +123,7 @@ int stat_client_add(int fd, long unsigned mask) new_client = para_malloc(sizeof(struct stat_client)); new_client->fd = fd; new_client->item_mask = mask; - add_close_on_fork_list(fd); - list_add(&new_client->node, &client_list); + para_list_add(&new_client->node, &client_list); dump_stat_client_list(); num_clients++; return 1; @@ -171,7 +164,6 @@ void stat_client_write(char *msg, int itemnum) } /* write error or fd not ready for writing */ close(fd); - del_close_on_fork_list(fd); num_clients--; PARA_INFO_LOG("deleting client on fd %d\n", fd); list_del(&sc->node); @@ -181,24 +173,6 @@ void stat_client_write(char *msg, int itemnum) PARA_DEBUG_LOG("%d client(s)\n", num_clients); } -/** - * send empty status list - * - * Send to each connected client the full status item list - * with empty values. - */ -void dump_empty_status(void) -{ - int i; - - if (!initialized) - return; - FOR_EACH_STAT_ITEM(i) { - char *tmp = make_message("%s:\n", status_item_list[i]); - stat_client_write(tmp, i); - free(tmp); - } -} /** * check if string is a known status item. @@ -269,7 +243,7 @@ unsigned for_each_line(char *buf, int n, void (*line_handler)(char *)) char *start = buf, *end; int i, num_lines = 0; - PARA_INFO_LOG("buf: %s", buf); +// PARA_INFO_LOG("buf: %s", buf); while (start < buf + n) { char *next_null; char *next_cr; @@ -287,7 +261,7 @@ unsigned for_each_line(char *buf, int n, void (*line_handler)(char *)) num_lines++; if (line_handler) { *end = '\0'; - PARA_INFO_LOG("calling line handler: %s\n", start); +// PARA_INFO_LOG("calling line handler: %s\n", start); line_handler(start); start = ++end; } else