]> Git Repo - linux.git/commit
tools/net/ynl: improve async notification handling
authorDonald Hunter <[email protected]>
Fri, 18 Oct 2024 09:32:28 +0000 (10:32 +0100)
committerPaolo Abeni <[email protected]>
Thu, 24 Oct 2024 07:55:03 +0000 (09:55 +0200)
commit1bf70e6c3a5346966c25e0a1ff492945b25d3f80
treefbc0f34f194e7452c7a305a6ff189559abf068c0
parentd05596f248578be943015c1237120574a8d845dd
tools/net/ynl: improve async notification handling

The notification handling in ynl is currently very simple, using sleep()
to wait a period of time and then handling all the buffered messages in
a single batch.

This patch changes the notification handling so that messages are
processed as they are received. This makes it possible to use ynl as a
library that supplies notifications in a timely manner.

- Change check_ntf() to be a generator that yields 1 notification at a
  time and blocks until a notification is available.
- Use the --sleep parameter to set an alarm and exit when it fires.

This means that the CLI has the same interface, but notifications get
printed as they are received:

./tools/net/ynl/cli.py --spec <SPEC> --subscribe <TOPIC> [ --sleep <SECS> ]

Here is an example python snippet that shows how to use ynl as a library
for receiving notifications:

    ynl = YnlFamily(f"{dir}/rt_route.yaml")
    ynl.ntf_subscribe('rtnlgrp-ipv4-route')

    for event in ynl.check_ntf():
        handle(event)

Signed-off-by: Donald Hunter <[email protected]>
Tested-by: Kory Maincent <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Paolo Abeni <[email protected]>
tools/net/ynl/cli.py
tools/net/ynl/lib/ynl.py
This page took 0.058503 seconds and 4 git commands to generate.