Skip to content

Commit 953b5a8

Browse files
add matching listener (#557)
* add matching listener; make querier stable; * update zenoh * fix matching status update message for querier example * move on_matching_status_update to matching listener declaration
1 parent 583cb62 commit 953b5a8

8 files changed

Lines changed: 295 additions & 33 deletions

File tree

Cargo.lock

Lines changed: 26 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/z_pub.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@
1818

1919

2020
def main(
21-
conf: zenoh.Config, key: str, payload: str, iter: Optional[int], interval: int
21+
conf: zenoh.Config,
22+
key: str,
23+
payload: str,
24+
iter: Optional[int],
25+
interval: int,
26+
add_matching_listener: bool,
2227
):
2328
# initiate logging
2429
zenoh.init_log_from_env_or("error")
@@ -28,6 +33,16 @@ def main(
2833
print(f"Declaring Publisher on '{key}'...")
2934
pub = session.declare_publisher(key)
3035

36+
if add_matching_listener:
37+
38+
def on_matching_status_update(status: zenoh.MatchingStatus):
39+
if status.matching:
40+
print("Publisher has matching subscribers.")
41+
else:
42+
print("Publisher has NO MORE matching subscribers")
43+
44+
pub.declare_matching_listener(on_matching_status_update)
45+
3146
print("Press CTRL-C to quit...")
3247
for idx in itertools.count() if iter is None else range(iter):
3348
time.sleep(interval)
@@ -71,8 +86,21 @@ def main(
7186
default=1.0,
7287
help="Interval between each put",
7388
)
89+
parser.add_argument(
90+
"--add-matching-listener",
91+
default=False,
92+
action="store_true",
93+
help="Add matching listener",
94+
)
7495

7596
args = parser.parse_args()
7697
conf = common.get_config_from_args(args)
7798

78-
main(conf, args.key, args.payload, args.iter, args.interval)
99+
main(
100+
conf,
101+
args.key,
102+
args.payload,
103+
args.iter,
104+
args.interval,
105+
args.add_matching_listener,
106+
)

examples/z_querier.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#
1414
import itertools
1515
import time
16-
from typing import Optional, Tuple
16+
from typing import Optional
1717

1818
import zenoh
1919

@@ -25,6 +25,7 @@ def main(
2525
payload: str,
2626
timeout: float,
2727
iter: Optional[int],
28+
add_matching_listener: bool,
2829
):
2930
# initiate logging
3031
zenoh.init_log_from_env_or("error")
@@ -37,6 +38,16 @@ def main(
3738
query_selector.key_expr, target=target, timeout=timeout
3839
)
3940

41+
if add_matching_listener:
42+
43+
def on_matching_status_update(status: zenoh.MatchingStatus):
44+
if status.matching:
45+
print("Querier has matching queryables.")
46+
else:
47+
print("Querier has NO MORE matching queryables")
48+
49+
querier.declare_matching_listener(on_matching_status_update)
50+
4051
print("Press CTRL-C to quit...")
4152
for idx in itertools.count() if iter is None else range(iter):
4253
time.sleep(1.0)
@@ -99,6 +110,12 @@ def main(
99110
parser.add_argument(
100111
"--iter", dest="iter", type=int, help="How many gets to perform"
101112
)
113+
parser.add_argument(
114+
"--add-matching-listener",
115+
default=False,
116+
action="store_true",
117+
help="Add matching listener",
118+
)
102119

103120
args = parser.parse_args()
104121
conf = common.get_config_from_args(args)
@@ -109,4 +126,12 @@ def main(
109126
"ALL_COMPLETE": zenoh.QueryTarget.ALL_COMPLETE,
110127
}.get(args.target)
111128

112-
main(conf, args.selector, target, args.payload, args.timeout, args.iter)
129+
main(
130+
conf,
131+
args.selector,
132+
target,
133+
args.payload,
134+
args.timeout,
135+
args.iter,
136+
args.add_matching_listener,
137+
)

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ mod handlers;
2121
mod key_expr;
2222
mod liveliness;
2323
mod macros;
24+
mod matching;
2425
mod pubsub;
2526
mod qos;
2627
mod query;
@@ -57,6 +58,7 @@ pub(crate) mod zenoh {
5758
handlers::Handler,
5859
key_expr::{KeyExpr, SetIntersectionLevel},
5960
liveliness::{Liveliness, LivelinessToken},
61+
matching::{MatchingListener, MatchingStatus},
6062
pubsub::{Publisher, Subscriber},
6163
qos::{CongestionControl, Priority, Reliability},
6264
query::{

0 commit comments

Comments
 (0)