[OpenWrt-Devel] [PATCH] [ubus 2/2] cli: add timeout support for listen command
John Crispin
blogic at openwrt.org
Fri Feb 26 03:39:03 EST 2016
hi
you need to put this information into the description of the patch
a patch normally has this format
-----------------------------------------------
The patch does ABC to achieve XYZ
Signed-off-by: name <email at inter.net>
---
$(The actual patch)
-------------------------
please resend both patches in that format.
John
On 26/02/2016 09:33, Zhao, Gang wrote:
>
>
> On Fri, Feb 26, 2016 at 2:33 PM, John Crispin <blogic at openwrt.org
> <mailto:blogic at openwrt.org>> wrote:
>
> Description of what the patch does is missing
>
>
> Hi, John
>
> Currently 'ubus listen' command does not respect the timeout parameter,
> i.e., whether timeout parameter is provided, 'ubus listen' will always
> run infinitely, this patch let 'ubus listen' command support the timeout
> parameter, for example, 'ubus listen -t 60' will cause the command to
> exit after 60 seconds.
>
> The 'ubus wait_for' command already support timeout parameter, so I
> think it may be good to let 'ubus listen' also support timeout.
>
>
> John
>
> On 26/02/2016 03:27, Zhao, Gang wrote:
> > Signed-off-by: Zhao, Gang <gang.zhao.42 at gmail.com
> <mailto:gang.zhao.42 at gmail.com>>
> > ---
> > cli.c | 25 ++++++++++++++++++++-----
> > 1 file changed, 20 insertions(+), 5 deletions(-)
> >
> > diff --git a/cli.c b/cli.c
> > index c476f35..24b5d22 100644
> > --- a/cli.c
> > +++ b/cli.c
> > @@ -125,15 +125,29 @@ static int ubus_cli_call(struct ubus_context
> *ctx, int argc, char **argv)
> > return ubus_invoke(ctx, id, argv[1], b.head,
> receive_call_result_data, NULL, timeout * 1000);
> > }
> >
> > +struct cli_listen_data {
> > + struct uloop_timeout timeout;
> > + struct ubus_event_handler ev;
> > + bool timed_out;
> > +};
> > +
> > +static void listen_timeout(struct uloop_timeout *timeout)
> > +{
> > + struct cli_listen_data *data = container_of(timeout, struct
> cli_listen_data, timeout);
> > + data->timed_out = true;
> > + uloop_end();
> > +}
> > +
> > static int ubus_cli_listen(struct ubus_context *ctx, int argc,
> char **argv)
> > {
> > - struct ubus_event_handler listener;
> > + struct cli_listen_data data = {
> > + .timeout.cb = listen_timeout,
> > + .ev.cb = receive_event,
> > + .timed_out = false,
> > + };
> > const char *event;
> > int ret = 0;
> >
> > - memset(&listener, 0, sizeof(listener));
> > - listener.cb = receive_event;
> > -
> > if (argc > 0) {
> > event = argv[0];
> > } else {
> > @@ -142,7 +156,7 @@ static int ubus_cli_listen(struct ubus_context
> *ctx, int argc, char **argv)
> > }
> >
> > do {
> > - ret = ubus_register_event_handler(ctx, &listener,
> event);
> > + ret = ubus_register_event_handler(ctx, &data.ev, event);
> > if (ret)
> > break;
> >
> > @@ -163,6 +177,7 @@ static int ubus_cli_listen(struct ubus_context
> *ctx, int argc, char **argv)
> >
> > uloop_init();
> > ubus_add_uloop(ctx);
> > + uloop_timeout_set(&data.timeout, timeout * 1000);
> > uloop_run();
> > uloop_done();
> >
> >
>
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list