From 593a3886ae6fdb500c093d28fb4bc7c8d2e7de68 Mon Sep 17 00:00:00 2001 From: kpfleming Date: Sun, 15 May 2005 02:48:16 +0000 Subject: [PATCH] add counters to 'show agents' CLI command (bug #4232) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5660 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/chan_agent.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 46427e2cb..a330764a1 100755 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -1434,7 +1434,9 @@ static int agents_show(int fd, int argc, char **argv) char location[AST_MAX_BUF] = ""; char talkingto[AST_MAX_BUF] = ""; char moh[AST_MAX_BUF]; - + int count_agents = 0; /* Number of agents configured */ + int online_agents = 0; /* Number of online agents */ + int offline_agents = 0; /* Number of offline agents */ if (argc != 2) return RESULT_SHOWUSAGE; ast_mutex_lock(&agentlock); @@ -1458,24 +1460,33 @@ static int agents_show(int fd, int argc, char **argv) } else { strncpy(talkingto, " is idle", sizeof(talkingto) - 1); } + online_agents++; } else if (!ast_strlen_zero(p->loginchan)) { snprintf(location, sizeof(location) - 20, "available at '%s'", p->loginchan); talkingto[0] = '\0'; + online_agents++; if (p->acknowledged) strncat(location, " (Confirmed)", sizeof(location) - strlen(location) - 1); } else { strncpy(location, "not logged in", sizeof(location) - 1); talkingto[0] = '\0'; + offline_agents++; } if (!ast_strlen_zero(p->moh)) snprintf(moh, sizeof(moh), " (musiconhold is '%s')", p->moh); ast_cli(fd, "%-12.12s %s%s%s%s\n", p->agent, username, location, talkingto, moh); + count_agents++; } ast_mutex_unlock(&p->lock); p = p->next; } ast_mutex_unlock(&agentlock); + if ( !count_agents ) { + ast_cli(fd, "No Agents are configured in %s\n",config); + } else { + ast_cli(fd, "%d agents configured [%d online , %d offline]\n",count_agents, online_agents, offline_agents); + } return RESULT_SUCCESS; }