![]() |
The FreeRADIUS server $Id: f3670dba8951ca10eb4948feb3dc3db9423a334f $
|
Redis asynchronous command pipelining. More...
#include <freeradius-devel/server/connection.h>#include <freeradius-devel/server/request.h>#include <freeradius-devel/server/trunk.h>#include <freeradius-devel/redis/io.h>#include <hiredis/async.h>#include "base.h"
Include dependency graph for pipeline.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Typedefs | |
| typedef void(* | fr_redis_command_complete_t) (request_t *request, fr_redis_command_t *cmd, redisReply *reply, void *rctx) |
| Process the reply from a single command. | |
| typedef void(* | fr_redis_command_set_complete_t) (request_t *request, fr_dlist_head_t *completed, void *rctx) |
| Do something meaningful with the replies to the commands previously issued. | |
| typedef void(* | fr_redis_command_set_fail_t) (request_t *request, fr_dlist_head_t *completed, void *rctx) |
| Write a failure result to the rctx so that the module is aware that the request failed. | |
| typedef struct fr_redis_command_set_s | fr_redis_command_set_t |
| typedef struct fr_redis_command_s | fr_redis_command_t |
| typedef void(* | fr_redis_trunk_active_t) (fr_redis_trunk_t *rtrunk, void *uctx) |
| typedef struct fr_redis_trunk_s | fr_redis_trunk_t |
Redis asynchronous command pipelining.
Definition in file pipeline.h.
| typedef void(* fr_redis_command_complete_t) (request_t *request, fr_redis_command_t *cmd, redisReply *reply, void *rctx) |
Process the reply from a single command.
Definition at line 60 of file pipeline.h.
| typedef void(* fr_redis_command_set_complete_t) (request_t *request, fr_dlist_head_t *completed, void *rctx) |
Do something meaningful with the replies to the commands previously issued.
Definition at line 65 of file pipeline.h.
| typedef void(* fr_redis_command_set_fail_t) (request_t *request, fr_dlist_head_t *completed, void *rctx) |
Write a failure result to the rctx so that the module is aware that the request failed.
Definition at line 70 of file pipeline.h.
| typedef struct fr_redis_command_set_s fr_redis_command_set_t |
Definition at line 52 of file pipeline.h.
| typedef struct fr_redis_command_s fr_redis_command_t |
Definition at line 51 of file pipeline.h.
| typedef void(* fr_redis_trunk_active_t) (fr_redis_trunk_t *rtrunk, void *uctx) |
Definition at line 55 of file pipeline.h.
| typedef struct fr_redis_trunk_s fr_redis_trunk_t |
Definition at line 53 of file pipeline.h.
Definition at line 43 of file pipeline.h.
| fr_redis_pipeline_status_t fr_redis_command_argv_add | ( | fr_redis_command_set_t * | cmds, |
| size_t | argc, | ||
| char const ** | argv, | ||
| size_t * | argv_len, | ||
| fr_redis_command_complete_t | complete, | ||
| void * | rctx | ||
| ) |
Add a command with arguments to the command set.
The command and arguments must either be entirely static, or parented by the command set.
| [in] | cmds | Command set to add command to. |
| [in] | argc | Number of arguments. |
| [in] | argv | Redis command arguments. |
| [in] | argv_len | Length of the command arguments. |
| [in] | complete | Callback to run when this command completes |
| [in] | rctx | to pass to complete |
Definition at line 436 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:| char const * fr_redis_command_get_cmd | ( | fr_redis_command_t * | cmd | ) |
| fr_redis_pipeline_status_t fr_redis_command_literal_add | ( | fr_redis_command_set_t * | cmds, |
| char const * | cmd_str, | ||
| fr_redis_command_complete_t | complete, | ||
| void * | rctx | ||
| ) |
Add a literal command to the command set.
The command must either be entirely static, or parented by the command set.
| [in] | cmds | Command set to add command to. |
| [in] | cmd_str | A fully expanded/formatted command to send to redis. Must be static, or have the same lifetime as the command set (allocated with the command set as the parent). |
| [in] | complete | Callback to run when this command completes |
| [in] | rctx | to pass to complete |
Definition at line 401 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:| fr_redis_pipeline_status_t fr_redis_command_preformatted_add | ( | fr_redis_command_set_t * | cmds, |
| char const * | cmd_str, | ||
| size_t | cmd_len, | ||
| fr_redis_command_complete_t | complete, | ||
| void * | rctx | ||
| ) |
Add an preformatted command to the command set as formatted by redisCommandFormat or it's variants.
The command must either be entirely static, or parented by the command set.
| [in] | cmds | Command set to add command to. |
| [in] | cmd_str | A fully formatted command to send to redis. Must be static, or have the same lifetime as the command set (allocated with the command set as the parent). |
| [in] | cmd_len | The length of cmd_str (as returned by redisCommandForamt) |
| [in] | complete | Callback to run when this command completes |
| [in] | rctx | to pass to complete |
Definition at line 479 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:| fr_redis_command_set_t * fr_redis_command_set_alloc | ( | TALLOC_CTX * | ctx, |
| request_t * | request, | ||
| fr_redis_command_set_complete_t | complete, | ||
| fr_redis_command_set_fail_t | fail, | ||
| void * | rctx, | ||
| bool | autofree | ||
| ) |
Allocate a new command set.
This is a set of commands that the calling module wants to execute on the redis server in sequence.
Control will be returned to the caller via the registered complete and fail functions.
| [in] | ctx | to bind the command set's lifetime to. |
| [in] | request | to pass to places that need it. |
| [in] | complete | Function to call when all commands have been processed. |
| [in] | fail | Function to call if the command set was not executed or was partially executed. |
| [in] | rctx | Resume context to pass to complete and fail functions. |
| [in] | autofree | Should the command set be freed when completed. |
Definition at line 249 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void fr_redis_command_set_cancel | ( | fr_redis_command_set_t * | cmds | ) |
Cancel a command set.
| [in] | cmds | Command set to cancel. |
Definition at line 557 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_redis_command_set_clear | ( | fr_redis_command_set_t * | cmds | ) |
Definition at line 1032 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void fr_redis_command_set_next_node | ( | fr_redis_command_set_t * | cmds, |
| fr_redis_io_conf_t * | ioconf | ||
| ) |
Extract the next node address and port from a command set.
Definition at line 997 of file pipeline.c.
Here is the caller graph for this function:| fr_redis_async_rcode_t fr_redis_command_set_rcode | ( | fr_redis_command_set_t * | cmds | ) |
Extract the rcode from a command set.
Definition at line 990 of file pipeline.c.
Here is the caller graph for this function:| int fr_redis_command_set_reset | ( | fr_redis_command_set_t * | cmds | ) |
Reset a command set to it's state before enqueuing.
For use when handling MOVED / ASK where the command set needs to be sent to another node.
Definition at line 1008 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:| fr_redis_trunk_t * fr_redis_trunk_alloc | ( | fr_redis_ct_t * | rtcluster, |
| fr_redis_io_conf_t const * | io_conf, | ||
| fr_pair_list_t * | trigger_args, | ||
| fr_redis_trunk_active_t | active, | ||
| void * | active_uctx, | ||
| bool | active_oneshot | ||
| ) |
Allocate a new trunk.
| [in] | rtcluster | to allocate the trunk for. |
| [in] | io_conf | Describing the connection to a single REDIS host. |
| [in] | trigger_args | Pairs to pass to trigger requests, if triggers are enabled. |
| [in] | active | Callback to run when the trunk becomes active. |
| [in] | active_uctx | Uctx to pass to active callback. |
| [in] | active_oneshot | Should the call back be run just once. |
Definition at line 941 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:| fr_redis_pipeline_status_t redis_command_set_enqueue | ( | fr_redis_trunk_t * | rtrunk, |
| fr_redis_command_set_t * | cmds | ||
| ) |
Enqueue a command set on a specific trunk.
The command set may be passed around several trunks before it is complete. This is to allow it to follow MOVED and ASK responses.
| [in] | rtrunk | to enqueue command set on. |
| [in] | cmds | Command set to enqueue. |
Definition at line 532 of file pipeline.c.
Here is the call graph for this function:
Here is the caller graph for this function:
1.9.8