REORG: cli: move 'show pools' to memory.c
Move 'show pools' CLI functions to memory.c and use the cli keyword
API to register it on the CLI.
diff --git a/src/cli.c b/src/cli.c
index 7c84708..e96c323 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -137,7 +137,6 @@
static int stats_dump_env_to_buffer(struct stream_interface *si);
static int stats_dump_info_to_buffer(struct stream_interface *si);
static int stats_dump_servers_state_to_buffer(struct stream_interface *si);
-static int stats_dump_pools_to_buffer(struct stream_interface *si);
static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct stream *sess);
static int stats_dump_sess_to_buffer(struct stream_interface *si);
static int stats_dump_errors_to_buffer(struct stream_interface *si);
@@ -157,7 +156,6 @@
" show backend : list backends in the current running config\n"
" show env [var] : dump environment variables known to the process\n"
" show info : report information about the running process\n"
- " show pools : report information about the memory pools usage\n"
" show stat : report counters for each proxy and server\n"
" show errors : report last request and response errors for each proxy\n"
" show sess [id] : report the list of current sessions or dump this session\n"
@@ -1136,10 +1134,6 @@
appctx->st0 = STAT_CLI_O_SERVERS_STATE; // stats_dump_servers_state_to_buffer
return 1;
}
- else if (strcmp(args[1], "pools") == 0) {
- appctx->st2 = STAT_ST_INIT;
- appctx->st0 = STAT_CLI_O_POOLS; // stats_dump_pools_to_buffer
- }
else if (strcmp(args[1], "sess") == 0) {
appctx->st2 = STAT_ST_INIT;
if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
@@ -1961,10 +1955,6 @@
if (stats_table_request(si, appctx->st0))
appctx->st0 = STAT_CLI_PROMPT;
break;
- case STAT_CLI_O_POOLS:
- if (stats_dump_pools_to_buffer(si))
- appctx->st0 = STAT_CLI_PROMPT;
- break;
case STAT_CLI_O_ENV: /* environment dump */
if (stats_dump_env_to_buffer(si))
appctx->st0 = STAT_CLI_PROMPT;
@@ -2344,20 +2334,6 @@
return 1;
}
-/* This function dumps memory usage information onto the stream interface's
- * read buffer. It returns 0 as long as it does not complete, non-zero upon
- * completion. No state is used.
- */
-static int stats_dump_pools_to_buffer(struct stream_interface *si)
-{
- dump_pools_to_trash();
- if (bi_putchk(si_ic(si), &trash) == -1) {
- si_applet_cant_put(si);
- return 0;
- }
- return 1;
-}
-
static inline const char *get_conn_ctrl_name(const struct connection *conn)
{
if (!conn_ctrl_ready(conn))
diff --git a/src/memory.c b/src/memory.c
index 53ab489..4681d58 100644
--- a/src/memory.c
+++ b/src/memory.c
@@ -10,14 +10,23 @@
*
*/
+#include <types/applet.h>
+#include <types/cli.h>
#include <types/global.h>
+#include <types/stats.h>
+
#include <common/config.h>
#include <common/debug.h>
#include <common/memory.h>
#include <common/mini-clist.h>
#include <common/standard.h>
+#include <proto/applet.h>
+#include <proto/cli.h>
+#include <proto/channel.h>
#include <proto/log.h>
+#include <proto/stream_interface.h>
+#include <proto/stats.h>
static struct list pools = LIST_HEAD_INIT(pools);
int mem_poison_byte = -1;
@@ -264,6 +273,39 @@
return used;
}
+/* This function dumps memory usage information onto the stream interface's
+ * read buffer. It returns 0 as long as it does not complete, non-zero upon
+ * completion. No state is used.
+ */
+static int cli_io_handler_dump_pools(struct appctx *appctx)
+{
+ struct stream_interface *si = appctx->owner;
+
+ dump_pools_to_trash();
+ if (bi_putchk(si_ic(si), &trash) == -1) {
+ si_applet_cant_put(si);
+ return 0;
+ }
+ return 1;
+}
+
+static int cli_parse_show_pools(char **args, struct appctx *appctx, void *private)
+{
+ return 0;
+}
+
+/* register cli keywords */
+static struct cli_kw_list cli_kws = {{ },{
+ { { "show", "pools", NULL }, "show pools : report information about the memory pools usage", cli_parse_show_pools, cli_io_handler_dump_pools },
+ {{},}
+}};
+
+__attribute__((constructor))
+static void __memory_init(void)
+{
+ cli_register_kw(&cli_kws);
+}
+
/*
* Local variables:
* c-indent-level: 8