11
#include <libmemcached/memcached.h>
13
#include "client_options.h"
14
#include "utilities.h"
16
#define PROGRAM_NAME "memstat"
17
#define PROGRAM_DESCRIPTION "Output the state of a memcached cluster."
20
void options_parse(int argc, char *argv[]);
22
static int opt_verbose= 0;
23
static int opt_displayflag= 0;
24
static char *opt_servers= NULL;
26
int main(int argc, char *argv[])
31
memcached_stat_st *stat;
32
memcached_server_st *servers;
33
memcached_server_st *server_list;
35
options_parse(argc, argv);
41
if ((temp= getenv("MEMCACHED_SERVERS")))
42
opt_servers= strdup(temp);
45
fprintf(stderr, "No Servers provided\n");
50
memc= memcached_create(NULL);
52
servers= memcached_servers_parse(opt_servers);
53
memcached_server_push(memc, servers);
54
memcached_server_list_free(servers);
56
stat= memcached_stat(memc, NULL, &rc);
58
if (rc != MEMCACHED_SUCCESS && rc != MEMCACHED_SOME_ERRORS)
60
printf("Failure to communicate with servers (%s)\n",
61
memcached_strerror(memc, rc));
65
server_list= memcached_server_list(memc);
67
printf("Listing %u Server\n\n", memcached_server_count(memc));
68
for (x= 0; x < memcached_server_count(memc); x++)
73
list= memcached_stat_get_keys(memc, &stat[x], &rc);
75
assert(rc == MEMCACHED_SUCCESS);
77
printf("Server: %s (%u)\n", memcached_server_name(memc, server_list[x]),
78
memcached_server_port(memc, server_list[x]));
79
for (ptr= list; *ptr; ptr++)
82
char *value= memcached_stat_get_value(memc, &stat[x], *ptr, &rc);
84
printf("\t %s: %s\n", *ptr, value);
100
void options_parse(int argc, char *argv[])
102
memcached_programs_help_st help_options[]=
107
static struct option long_options[]=
109
{"version", no_argument, NULL, OPT_VERSION},
110
{"help", no_argument, NULL, OPT_HELP},
111
{"verbose", no_argument, &opt_verbose, OPT_VERBOSE},
112
{"debug", no_argument, &opt_verbose, OPT_DEBUG},
113
{"servers", required_argument, NULL, OPT_SERVERS},
114
{"flag", no_argument, &opt_displayflag, OPT_FLAG},
123
option_rv= getopt_long(argc, argv, "Vhvds:", long_options, &option_index);
124
if (option_rv == -1) break;
129
case OPT_VERBOSE: /* --verbose or -v */
130
opt_verbose = OPT_VERBOSE;
132
case OPT_DEBUG: /* --debug or -d */
133
opt_verbose = OPT_DEBUG;
135
case OPT_VERSION: /* --version or -V */
136
version_command(PROGRAM_NAME);
138
case OPT_HELP: /* --help or -h */
139
help_command(PROGRAM_NAME, PROGRAM_DESCRIPTION, long_options, help_options);
141
case OPT_SERVERS: /* --servers or -s */
142
opt_servers= strdup(optarg);
145
/* getopt_long already printed an error message. */