summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-cmd.h
blob: a30a6cfe418b7c2aa47b4fc1b8ea52c1a604fd17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
   Copyright (c) 2006-2012 Red Hat, Inc. <http://www.redhat.com>
   This file is part of GlusterFS.

   This file is licensed to you under your choice of the GNU Lesser
   General Public License, version 3 or any later version (LGPLv3 or
   later), or the GNU General Public License, version 2 (GPLv2), in all
   cases as published by the Free Software Foundation.
*/
#ifndef __CLI_CMD_H__
#define __CLI_CMD_H__

#ifndef _CONFIG_H
#define _CONFIG_H
#include "config.h"
#endif

#include <netdb.h>

#include "cli.h"
#include "list.h"

#define CLI_LOCAL_INIT(local, words, frame, dictionary) \
        do {                                                 \
                local = cli_local_get ();                    \
                                                             \
                if (local) {                                 \
                        local->words = words;                \
                        if (dictionary)                      \
                                local->dict = dictionary;    \
                        if (frame)                           \
                                frame->local = local;        \
                }                                            \
        } while (0)

#define CLI_STACK_DESTROY(_frame)                                       \
        do {                                                            \
                if (_frame) {                                           \
                        if (_frame->local) {                            \
                                gf_log ("cli", GF_LOG_DEBUG, "frame->local " \
                                        "is not NULL (%p)", _frame->local); \
                                cli_local_wipe (_frame->local);         \
                                _frame->local = NULL;                   \
                        }                                               \
                        STACK_DESTROY (_frame->root);                   \
                }                                                       \
        } while (0);

typedef enum {
        GF_ANSWER_YES = 1,
        GF_ANSWER_NO  = 2
} gf_answer_t;

struct cli_cmd {
        const char         *pattern;
        cli_cmd_cbk_t      *cbk;
        const char         *desc;
        cli_cmd_reg_cbk_t  *reg_cbk; /* callback to check in runtime if the   *
                                      * command should be enabled or disabled */
        gf_boolean_t       disable;
};

struct cli_cmd_volume_get_ctx_ {
        char            *volname;
        int             flags;
};

typedef struct cli_profile_info_ {
        uint64_t fop_hits;
        double min_latency;
        double max_latency;
        double avg_latency;
        char   *fop_name;
        double percentage_avg_latency;
} cli_profile_info_t;

typedef struct addrinfo_list {
        struct list_head list;
        struct addrinfo *info;
} addrinfo_list_t;

typedef enum {
        GF_AI_COMPARE_NO_MATCH     = 0,
        GF_AI_COMPARE_MATCH        = 1,
        GF_AI_COMPARE_ERROR        = 2
} gf_ai_compare_t;

typedef struct cli_cmd_volume_get_ctx_ cli_cmd_volume_get_ctx_t;

int cli_cmd_volume_register (struct cli_state *state);

int cli_cmd_probe_register (struct cli_state *state);

int cli_cmd_system_register (struct cli_state *state);

int cli_cmd_misc_register (struct cli_state *state);

struct cli_cmd_word *cli_cmd_nextword (struct cli_cmd_word *word,
                                       const char *text);
void cli_cmd_tokens_destroy (char **tokens);

int cli_cmd_await_response (unsigned time);

int cli_cmd_broadcast_response (int32_t status);

int cli_cmd_cond_init ();

int cli_cmd_lock ();

int cli_cmd_unlock ();

int
cli_cmd_submit (void *req, call_frame_t *frame,
                rpc_clnt_prog_t *prog,
                int procnum, struct iobref *iobref,
                xlator_t *this, fop_cbk_fn_t cbkfn, xdrproc_t xdrproc);

gf_answer_t
cli_cmd_get_confirmation (struct cli_state *state, const char *question);
int cli_cmd_sent_status_get (int *status);
#endif /* __CLI_CMD_H__ */