[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