From: Marko Kreen Date: Fri, 11 Jan 2008 22:10:37 +0000 (+0000) Subject: show active_sockets; X-Git-Tag: pgbouncer_1_2_rc2~62 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=700c4425b234744b3649c53ec9b75b06865d0824;p=pgbouncer show active_sockets; --- diff --git a/src/admin.c b/src/admin.c index 3e05320..3a9b85c 100644 --- a/src/admin.c +++ b/src/admin.c @@ -624,6 +624,46 @@ static bool admin_show_sockets(PgSocket *admin, const char *arg) return true; } +static void show_active_socket_list(PktBuf *buf, StatList *list, const char *state) +{ + List *item; + statlist_for_each(item, list) { + PgSocket *sk = container_of(item, PgSocket, head); + if (!sbuf_is_empty(&sk->sbuf)) + socket_row(buf, sk, state, true); + } +} + +/* Command: SHOW ACTIVE_SOCKETS */ +static bool admin_show_active_sockets(PgSocket *admin, const char *arg) +{ + List *item; + PgPool *pool; + PktBuf *buf; + + buf = pktbuf_dynamic(256); + if (!buf) { + admin_error(admin, "no mem"); + return true; + } + + socket_header(buf, true); + statlist_for_each(item, &pool_list) { + pool = container_of(item, PgPool, head); + show_active_socket_list(buf, &pool->active_client_list, "cl_active"); + show_active_socket_list(buf, &pool->waiting_client_list, "cl_waiting"); + + show_active_socket_list(buf, &pool->active_server_list, "sv_active"); + show_active_socket_list(buf, &pool->idle_server_list, "sv_idle"); + show_active_socket_list(buf, &pool->used_server_list, "sv_used"); + show_active_socket_list(buf, &pool->tested_server_list, "sv_tested"); + show_active_socket_list(buf, &pool->new_server_list, "sv_login"); + } + show_active_socket_list(buf, &login_client_list, "cl_login"); + admin_flush(admin, buf, "SHOW"); + return true; +} + /* Command: SHOW POOLS */ static bool admin_show_pools(PgSocket *admin, const char *arg) { @@ -855,13 +895,14 @@ static bool admin_show_help(PgSocket *admin, const char *arg) SEND_generic(res, admin, 'N', "sssss", "SNOTICE", "C00000", "MConsole usage", - "D\n\tSHOW [HELP|CONFIG|DATABASES|FDS" - "|POOLS|CLIENTS|SERVERS|SOCKETS|LISTS|VERSION]\n" + "D\n\tSHOW [HELP|CONFIG|DATABASES" + "|POOLS|CLIENTS|SERVERS|VERSION]\n" + "\tSHOW [FDS|SOCKETS|ACTIVE_SOCKETS|LISTS]\n" "\tSET key = arg\n" "\tRELOAD\n" - "\tPAUSE\n" + "\tPAUSE []\n" "\tSUSPEND\n" - "\tRESUME\n" + "\tRESUME []\n" "\tSHUTDOWN", ""); if (res) res = admin_ready(admin, "SHOW"); @@ -900,6 +941,7 @@ static struct cmd_lookup show_map [] = { {"pools", admin_show_pools}, {"servers", admin_show_servers}, {"sockets", admin_show_sockets}, + {"active_sockets", admin_show_active_sockets}, {"stats", admin_show_stats}, {"users", admin_show_users}, {"version", admin_show_version},