From a836a244a3d2bdd4da1ee2641e3e957850668cea Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 8 May 2023 18:27:04 +0200 Subject: Adding upstream version 1.39.0. Signed-off-by: Daniel Baumann --- parser/README.md | 152 ------------------------------------------------------- 1 file changed, 152 deletions(-) delete mode 100644 parser/README.md (limited to 'parser/README.md') diff --git a/parser/README.md b/parser/README.md deleted file mode 100644 index b7951864f..000000000 --- a/parser/README.md +++ /dev/null @@ -1,152 +0,0 @@ - - - -#### Introduction - -The parser will be used to process streaming and plugins input as well as metadata - -Usage - -1. Define a structure that will be used to share user state across calls -1. Initialize the parser using `parser_init` -2. Register keywords and associated callback function using `parser_add_keyword` -3. Register actions on the keywords -4. Start a loop until EOF - 1. Fetch the next line using `parser_next` - 2. Process the line using `parser_action` - 1. The registered callbacks are executed to parse the input - 2. The registered action for the callback is called for processing -4. Release the parser using `parser_destroy` -5. Release the user structure - -#### Functions - -TODO: - -##### parse_init(RRDHOST *host, void *user, void *input, int flags) - -Initialize an internal parser with the specified user defined data structure that will be shared across calls. - -Input -- Host - - The host this parser will be dealing with. For streaming with SSL enabled for this host -- user - - User defined structure that is passed in all the calls -- input - - Where the parser will get the input from -- flags - - flags to define processing on the input - -Output -- A parser structure - - - -##### parse_push(PARSER *parser, char *line) - -Push a new line for processing - -Input - -- parser - - The parser object as returned by the `parser_init` -- line - - The new line to process - - -Output -- The line will be injected into the stream and will be the next one to be processed - -Returns -- 0 line added -- 1 error detected - - -##### parse_add_keyword(PARSER *parser, char *keyword, keyword_function callback_function) - -The function will add callbacks for keywords. The callback function is defined as - -`typedef PARSER_RC (*keyword_function)(char **, void *);` - -Input - -- parser - - The parser object as returned by the `parser_init` -- keyword - - The keyword to register -- keyword_function - - The callback that will handle the keyword processing - * The callback function should return one of the following - * PARSER_RC_OK - Callback was successful (continue with other callbacks) - * PARSER_RC_STOP - Stop processing callbacks (return OK) - * PARSER_RC_ERROR - Callback failed, exit - -Output -- The corresponding keyword and callback will be registered - -Returns -- 0 maximum callbacks already registered for this keyword -- > 0 which is the number of callbacks associated with this keyword. - - -##### parser_next(PARSER *parser) -Return the next item to parse - -Input -- parser - - The parser object as returned by the `parser_init` - -Output -- The parser will store internally the next item to parse - -Returns -- 0 Next item fetched successfully -- 1 No more items to parse - - -##### parser_action(PARSER *parser, char *input) -Return the next item to parse - -Input -- parser - - The parser object as returned by the `parser_init` -- input - - Process the input specified instead of using the internal buffer - -Output -- The current keyword will be processed by calling all the registered callbacks - -Returns -- 0 Callbacks called successfully -- 1 Failed - - -##### parser_destroy(PARSER *parser) -Cleanup a previously allocated parser - -Input -- parser - - The parser object as returned by the `parser_init` - -Output -- The parser is deallocated - -Returns -- none - - -##### parser_recover_input(PARSER *parser) -Cleanup a previously allocated parser - -Input -- parser - - The parser object as returned by the `parser_init` - -Output -- The parser is deallocated - -Returns -- none -- cgit v1.2.3