mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-17 11:06:54 +00:00
MINOR: ring: make the parse function automatically set the handler/release
ring_attach_cli() is called by the keyword parsing function to dump a ring to the CLI. It can only work with a specific handler and release function. Let's make it set them appropriately instead of having the caller know these functions. This way adding a command to dump a ring is as simple as declaring a parsing function calling ring_attach_cli().
This commit is contained in:
parent
a63a5c2c65
commit
fcf94981e4
@ -202,7 +202,8 @@ ssize_t ring_write(struct ring *ring, size_t maxlen, const struct ist pfx[], siz
|
|||||||
/* Tries to attach CLI handler <appctx> as a new reader on ring <ring>. This is
|
/* Tries to attach CLI handler <appctx> as a new reader on ring <ring>. This is
|
||||||
* meant to be used when registering a CLI function to dump a buffer, so it
|
* meant to be used when registering a CLI function to dump a buffer, so it
|
||||||
* returns zero on success, or non-zero on failure with a message in the appctx
|
* returns zero on success, or non-zero on failure with a message in the appctx
|
||||||
* CLI context.
|
* CLI context. It automatically sets the io_handler and io_release callbacks if
|
||||||
|
* they were not set.
|
||||||
*/
|
*/
|
||||||
int ring_attach_cli(struct ring *ring, struct appctx *appctx)
|
int ring_attach_cli(struct ring *ring, struct appctx *appctx)
|
||||||
{
|
{
|
||||||
@ -216,6 +217,10 @@ int ring_attach_cli(struct ring *ring, struct appctx *appctx)
|
|||||||
|
|
||||||
} while (!_HA_ATOMIC_CAS(&ring->readers_count, &users, users + 1));
|
} while (!_HA_ATOMIC_CAS(&ring->readers_count, &users, users + 1));
|
||||||
|
|
||||||
|
if (!appctx->io_handler)
|
||||||
|
appctx->io_handler = cli_io_handler_show_ring;
|
||||||
|
if (!appctx->io_release)
|
||||||
|
appctx->io_release = cli_io_release_show_ring;
|
||||||
appctx->ctx.cli.p0 = ring;
|
appctx->ctx.cli.p0 = ring;
|
||||||
appctx->ctx.cli.o0 = ~0; // start from the oldest event
|
appctx->ctx.cli.o0 = ~0; // start from the oldest event
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -269,7 +269,7 @@ INITCALL0(STG_REGISTER, sink_init);
|
|||||||
REGISTER_POST_DEINIT(sink_deinit);
|
REGISTER_POST_DEINIT(sink_deinit);
|
||||||
|
|
||||||
static struct cli_kw_list cli_kws = {{ },{
|
static struct cli_kw_list cli_kws = {{ },{
|
||||||
{ { "show", "events", NULL }, "show events [<sink>] : show event sink state", cli_parse_show_events, cli_io_handler_show_ring, cli_io_release_show_ring },
|
{ { "show", "events", NULL }, "show events [<sink>] : show event sink state", cli_parse_show_events, NULL, NULL },
|
||||||
{{},}
|
{{},}
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user