command parser: Add support for parser options.
[collectd.git] / src / utils_cmds.h
index 7dc80fa..205e89a 100644 (file)
 
 typedef enum {
        CMD_UNKNOWN = 0,
-       CMD_PUTVAL  = 1,
+       CMD_FLUSH   = 1,
+       CMD_GETVAL  = 2,
+       CMD_LISTVAL = 3,
+       CMD_PUTVAL  = 4,
 } cmd_type_t;
 #define CMD_TO_STRING(type) \
-       ((type) == CMD_PUTVAL) ? "PUTVAL" \
+       ((type) == CMD_FLUSH) ? "FLUSH" \
+               : ((type) == CMD_GETVAL) ? "GETVAL" \
+               : ((type) == CMD_LISTVAL) ? "LISTVAL" \
+               : ((type) == CMD_PUTVAL) ? "PUTVAL" \
                : "UNKNOWN"
 
 typedef struct {
+       double timeout;
+
+       char **plugins;
+       size_t plugins_num;
+       identifier_t *identifiers;
+       size_t identifiers_num;
+} cmd_flush_t;
+
+typedef struct {
+       char *raw_identifier;
+       identifier_t identifier;
+} cmd_getval_t;
+
+typedef struct {
+} cmd_listval_t;
+
+typedef struct {
        /* The raw identifier as provided by the user. */
-       char *identifier;
+       char *raw_identifier;
 
        /* An array of the fully parsed identifier and all value lists, and their
         * options as provided by the user. */
@@ -59,12 +82,28 @@ typedef struct {
 typedef struct {
        cmd_type_t type;
        union {
+               cmd_flush_t flush;
+               cmd_getval_t getval;
+               cmd_listval_t listval;
                cmd_putval_t putval;
        } cmd;
 } cmd_t;
 
 /*
  * NAME
+ *   cmd_options_t
+ *
+ * DESCRIPTIONS
+ *   Optional settings for tuning the parser behavior.
+ */
+typedef struct {
+       /* identifier_default_host: If non-NULL, the hostname is optional and will
+        * default to the specified value. */
+       char *identifier_default_host;
+} cmd_options_t;
+
+/*
+ * NAME
  *   cmd_status_t
  *
  * DESCRIPTION
@@ -114,16 +153,17 @@ void cmd_error (cmd_status_t status, cmd_error_handler_t *err,
  * PARAMETERS
  *   `buffer'  The command string to be parsed.
  *   `ret_cmd' The parse result will be stored at this location.
+ *   `opts'    Parser options. If NULL, defaults will be used.
  *   `err'     An optional error handler to invoke on error.
  *
  * RETURN VALUE
  *   CMD_OK on success or the respective error code otherwise.
  */
-cmd_status_t cmd_parse (char *buffer,
-               cmd_t *ret_cmd, cmd_error_handler_t *err);
+cmd_status_t cmd_parse (char *buffer, cmd_t *ret_cmd,
+               const cmd_options_t *opts, cmd_error_handler_t *err);
 
-cmd_status_t cmd_parsev (size_t argc, char **argv,
-               cmd_t *ret_cmd, cmd_error_handler_t *err);
+cmd_status_t cmd_parsev (size_t argc, char **argv, cmd_t *ret_cmd,
+               const cmd_options_t *opts, cmd_error_handler_t *err);
 
 void cmd_destroy (cmd_t *cmd);