@@ -25,10 +25,18 @@ using namespace zenoh;
25
25
26
26
int _main (int argc, char **argv) {
27
27
const char *expr = " demo/example/**" ;
28
- const char *value = " Get from C++" ;
29
- Config config = parse_args (argc, argv, {}, {{" key_expression" , &expr}, {" payload_value" , &value}});
28
+ const char *value = nullptr ;
29
+ const char *target = " BEST_MATCHING" ;
30
+ const char *timeout = " 10000" ;
30
31
31
- KeyExpr keyexpr (expr);
32
+ Config config = parse_args (argc, argv, {}, {},
33
+ {{" -s" , CmdArg{" Query selector (string)" , &expr}},
34
+ {" -p" , CmdArg{" Query payload (string)" , &value}},
35
+ {" -t" , CmdArg{" Query target (BEST_MATCHING | ALL | ALL_COMPLETE)" , &target}},
36
+ {" -o" , CmdArg{" Timeout in ms (number)" , &timeout}}});
37
+ uint64_t timeout_ms = std::stoi (timeout);
38
+ QueryTarget query_target = parse_query_target (target);
39
+ Selector selector = parse_selector (expr);
32
40
33
41
std::cout << " Opening session...\n " ;
34
42
auto session = Session::open (std::move (config));
@@ -55,14 +63,13 @@ int _main(int argc, char **argv) {
55
63
done_signal.notify_all ();
56
64
};
57
65
58
- #if __cpp_designated_initializers >= 201707L
59
- session.get (keyexpr, " " , on_reply, on_done, {.target = Z_QUERY_TARGET_ALL, .payload = Bytes::serialize (value)});
60
- #else
61
66
Session::GetOptions options;
62
- options.target = Z_QUERY_TARGET_ALL;
63
- options.payload = value;
64
- session.get (keyexpr, " " , on_reply, on_done, std::move (options));
65
- #endif
67
+ options.target = query_target;
68
+ if (value != nullptr ) {
69
+ options.payload = value;
70
+ }
71
+ options.timeout_ms = timeout_ms;
72
+ session.get (selector.key_expr , selector.parameters , on_reply, on_done, std::move (options));
66
73
67
74
std::unique_lock lock (m);
68
75
done_signal.wait (lock, [&done] { return done; });
0 commit comments