async def main(): # --- Command line argument parsing --- --- --- --- --- --- parser = argparse.ArgumentParser(prog='z_info', description='zenoh info example') parser.add_argument('--mode', '-m', dest='mode', choices=['peer', 'client'], type=str, help='The zenoh session mode.') parser.add_argument('--connect', '-e', dest='connect', metavar='ENDPOINT', action='append', type=str, help='Endpoints to connect to.') parser.add_argument('--listen', '-l', dest='listen', metavar='ENDPOINT', action='append', type=str, help='Endpoints to listen on.') parser.add_argument('--config', '-c', dest='config', metavar='FILE', type=str, help='A configuration file.') args = parser.parse_args() conf = zenoh.config_from_file( args.config) if args.config is not None else zenoh.Config() if args.mode is not None: conf.insert_json5(zenoh.config.MODE_KEY, json.dumps(args.mode)) if args.connect is not None: conf.insert_json5(zenoh.config.CONNECT_KEY, json.dumps(args.connect)) if args.listen is not None: conf.insert_json5(zenoh.config.LISTEN_KEY, json.dumps(args.listen)) # zenoh-net code --- --- --- --- --- --- --- --- --- --- --- # initiate logging zenoh.init_logger() print("Openning session...") session = await zenoh.async_open(conf) info = await session.info() for key in info: print("{} : {}".format(key, info[key])) await session.close()
async def main(): # --- Command line argument parsing --- --- --- --- --- --- parser = argparse.ArgumentParser( prog='z_put', description='zenoh put example') parser.add_argument('--mode', '-m', dest='mode', choices=['peer', 'client'], type=str, help='The zenoh session mode.') parser.add_argument('--connect', '-e', dest='connect', metavar='ENDPOINT', action='append', type=str, help='Endpoints to connect to.') parser.add_argument('--listen', '-l', dest='listen', metavar='ENDPOINT', action='append', type=str, help='Endpoints to listen on.') parser.add_argument('--key', '-k', dest='key', default='/demo/example/zenoh-python-put', type=str, help='The key expression matching resources to delete.') parser.add_argument('--config', '-c', dest='config', metavar='FILE', type=str, help='A configuration file.') args = parser.parse_args() conf = zenoh.config_from_file( args.config) if args.config is not None else zenoh.Config() if args.mode is not None: conf.insert_json5(zenoh.config.MODE_KEY, json.dumps(args.mode)) if args.connect is not None: conf.insert_json5(zenoh.config.CONNECT_KEY, json.dumps(args.connect)) if args.listen is not None: conf.insert_json5(zenoh.config.LISTEN_KEY, json.dumps(args.listen)) key = args.key # zenoh-net code --- --- --- --- --- --- --- --- --- --- --- # initiate logging zenoh.init_logger() print("Openning session...") session = await zenoh.async_open(conf) print("Deleting resources matching '{}'...".format(key)) await session.delete(key) await session.close()
parser.add_argument('--listener', '-l', dest='listener', metavar='LOCATOR', action='append', type=str, help='Locators to listen on.') parser.add_argument('--key', '-k', dest='key', default='/demo/example/**', type=str, help='The key expression to subscribe to.') parser.add_argument('--config', '-c', dest='config', metavar='FILE', type=str, help='A configuration file.') args = parser.parse_args() conf = zenoh.config_from_file(args.config) if args.config is not None else zenoh.Config() if args.mode is not None: conf.insert_json5("mode", json.dumps(args.mode)) if args.peer is not None: conf.insert_json5("peers", json.dumps(args.peer)) if args.listener is not None: conf.insert_json5("listeners", json.dumps(args.listener)) key = args.key # zenoh-net code --- --- --- --- --- --- --- --- --- --- --- def listener(sample): time = '(not specified)' if sample.source_info is None or sample.timestamp is None else datetime.fromtimestamp( sample.timestamp.time) print(">> [Subscriber] Received {} ('{}': '{}')"
parser.add_argument('--value', '-v', dest='value', default='Put from Python!', type=str, help='The value to write.') parser.add_argument('--config', '-c', dest='config', metavar='FILE', type=str, help='A configuration file.') args = parser.parse_args() conf = zenoh.config_from_file( args.config) if args.config is not None else zenoh.Config() if args.mode is not None: conf.insert_json5("mode", json.dumps(args.mode)) if args.peer is not None: conf.insert_json5("peers", json.dumps(args.peer)) if args.listener is not None: conf.insert_json5("listeners", json.dumps(args.listener)) key = args.key value = args.value # zenoh-net code --- --- --- --- --- --- --- --- --- --- --- # initiate logging zenoh.init_logger() print("Openning session...")
async def main(): # --- Command line argument parsing --- --- --- --- --- --- parser = argparse.ArgumentParser(prog='z_eval', description='zenoh eval example') parser.add_argument('--mode', '-m', dest='mode', choices=['peer', 'client'], type=str, help='The zenoh session mode.') parser.add_argument('--connect', '-e', dest='connect', metavar='ENDPOINT', action='append', type=str, help='Endpoints to connect to.') parser.add_argument('--listen', '-l', dest='listen', metavar='ENDPOINT', action='append', type=str, help='Endpoints to listen on.') parser.add_argument( '--key', '-k', dest='key', default='/demo/example/zenoh-python-eval', type=str, help='The key expression matching queries to evaluate.') parser.add_argument('--value', '-v', dest='value', default='Eval from Python!', type=str, help='The value to reply to queries.') parser.add_argument('--config', '-c', dest='config', metavar='FILE', type=str, help='A configuration file.') args = parser.parse_args() conf = zenoh.config_from_file( args.config) if args.config is not None else zenoh.Config() if args.mode is not None: conf.insert_json5(zenoh.config.MODE_KEY, json.dumps(args.mode)) if args.connect is not None: conf.insert_json5(zenoh.config.CONNECT_KEY, json.dumps(args.connect)) if args.listen is not None: conf.insert_json5(zenoh.config.LISTEN_KEY, json.dumps(args.listen)) key = args.key value = args.value # zenoh-net code --- --- --- --- --- --- --- --- --- --- --- # Note: As an example the concrete implementation of the eval callback is implemented here as a coroutine. # It checks if the query's value_selector (the substring after '?') is a float, and if yes, sleeps for this number of seconds. # Run example/asyncio/z_get_parallel.py example to see how 3 concurrent get() are executed in parallel in this z_eval.py async def eval_corouting(query): selector = query.selector try: sleep_time = selector.parse_value_selector().properties.get( 'sleep') if sleep_time is not None: print(" Sleeping {} secs before replying".format( float(sleep_time))) await asyncio.sleep(float(sleep_time)) except Exception as e: print(" WARN: error in value selector: {}. Ignore it.".format(e)) print(" Replying to query on {}".format(selector)) reply = "{} (this is the reply to query on {})".format(value, selector) query.reply(Sample(key_expr=key, payload=reply.encode())) async def eval_callback(query): print(">> [Queryable ] Received Query '{}'".format(query.selector)) # schedule a task that will call eval_corouting(query) asyncio.create_task(eval_corouting(query)) # initiate logging zenoh.init_logger() print("Openning session...") session = await zenoh.async_open(conf) print("Creating Queryable on '{}'...".format(key)) queryable = await session.queryable(key, eval_callback, kind=EVAL) print("Enter 'q' to quit......") c = '\0' while c != 'q': c = sys.stdin.read(1) if c == '': time.sleep(1) await queryable.close() await session.close()
async def main(): # --- Command line argument parsing --- --- --- --- --- --- parser = argparse.ArgumentParser( prog='z_get_parallel', description='zenoh parallel get example') parser.add_argument('--mode', '-m', dest='mode', choices=['peer', 'client'], type=str, help='The zenoh session mode.') parser.add_argument('--connect', '-e', dest='connect', metavar='ENDPOINT', action='append', type=str, help='Endpoints to connect to.') parser.add_argument('--listen', '-l', dest='listen', metavar='ENDPOINT', action='append', type=str, help='Endpoints to listen on.') parser.add_argument('--selector', '-s', dest='selector', default='/demo/example/**', type=str, help='The selection of resources to query.') parser.add_argument('--kind', '-k', dest='kind', choices=['ALL_KINDS', 'STORAGE', 'EVAL'], default='ALL_KINDS', type=str, help='The KIND of queryables to query.') parser.add_argument('--target', '-t', dest='target', choices=['ALL', 'BEST_MATCHING', 'ALL_COMPLETE', 'NONE'], default='ALL', type=str, help='The target queryables of the query.') parser.add_argument('--config', '-c', dest='config', metavar='FILE', type=str, help='A configuration file.') args = parser.parse_args() conf = zenoh.config_from_file( args.config) if args.config is not None else zenoh.Config() if args.mode is not None: conf.insert_json5(zenoh.config.MODE_KEY, json.dumps(args.mode)) if args.connect is not None: conf.insert_json5(zenoh.config.CONNECT_KEY, json.dumps(args.connect)) if args.listen is not None: conf.insert_json5(zenoh.config.LISTEN_KEY, json.dumps(args.listen)) selector = args.selector kind = { 'ALL_KINDS': queryable.ALL_KINDS, 'STORAGE': queryable.STORAGE, 'EVAL': queryable.EVAL}.get(args.kind) target = { 'ALL': Target.All(), 'BEST_MATCHING': Target.BestMatching(), 'ALL_COMPLETE': Target.AllComplete(), 'NONE': Target.No()}.get(args.target) # zenoh-net code --- --- --- --- --- --- --- --- --- --- --- # initiate logging zenoh.init_logger() print("Openning session...") session = await zenoh.async_open(conf) async def do_query(sleep_time): print("Sending Query '{}?(sleep={})'...".format(selector, sleep_time)) replies = await session.get("{}?(sleep={})".format(selector, sleep_time), target=QueryTarget(kind, target)) for reply in replies: print(">> Received ('{}': '{}')" .format(reply.sample.key_expr, reply.sample.payload.decode("utf-8"))) start = time.time() await asyncio.gather( asyncio.create_task(do_query(1)), asyncio.create_task(do_query(2)), asyncio.create_task(do_query(3)), ) end = time.time() print(f'Time: {end-start:.2f} sec') await session.close()
async def main(): # --- Command line argument parsing --- --- --- --- --- --- parser = argparse.ArgumentParser(prog='z_sub', description='zenoh sub example') parser.add_argument('--mode', '-m', dest='mode', choices=['peer', 'client'], type=str, help='The zenoh session mode.') parser.add_argument('--connect', '-e', dest='connect', metavar='ENDPOINT', action='append', type=str, help='Endpoints to connect to.') parser.add_argument('--listen', '-l', dest='listen', metavar='ENDPOINT', action='append', type=str, help='Endpoints to listen on.') parser.add_argument('--key', '-k', dest='key', default='/demo/example/**', type=str, help='The key expression to subscribe to.') parser.add_argument('--config', '-c', dest='config', metavar='FILE', type=str, help='A configuration file.') args = parser.parse_args() conf = zenoh.config_from_file( args.config) if args.config is not None else zenoh.Config() if args.mode is not None: conf.insert_json5(zenoh.config.MODE_KEY, json.dumps(args.mode)) if args.connect is not None: conf.insert_json5(zenoh.config.CONNECT_KEY, json.dumps(args.connect)) if args.listen is not None: conf.insert_json5(zenoh.config.LISTEN_KEY, json.dumps(args.listen)) key = args.key # zenoh-net code --- --- --- --- --- --- --- --- --- --- --- async def listener(sample): print(">> [Subscriber] Received {} ('{}': '{}')".format( sample.kind, sample.key_expr, sample.payload.decode("utf-8"))) # initiate logging zenoh.init_logger() print("Openning session...") session = await zenoh.async_open(conf) print("Creating Subscriber on '{}'...".format(key)) sub = await session.subscribe(key, listener, reliability=Reliability.Reliable, mode=SubMode.Push) print("Enter 'q' to quit...") c = '\0' while c != 'q': c = sys.stdin.read(1) if c == '': time.sleep(1) await sub.close() await session.close()