def subscriber(port, topic, connect_port): nodes[port] = dps.create_node("/", key_store, None) dps.start_node(nodes[port], 0, port) subs[port] = dps.create_subscription(nodes[port], [topic]) dps.subscribe(subs[port], on_pub) if (connect_port != 0): addr = dps.create_address() ret = dps.link_to(nodes[port], None, connect_port, addr) if (ret == dps.OK): print "Linked %d to %d" % (port, connect_port) dps.destroy_address(addr)
def subscriber(topic, connect_port): node = dps.create_node("/", key_store, None) dps.start_node(node, 0, 0) print "Subscriber is listening on port %d" % dps.get_port_number(node) sub = dps.create_subscription(node, [topic]) dps.subscribe(sub, on_pub) if (connect_port != 0): addr = dps.create_address() ret = dps.link_to(node, None, connect_port, addr) if (ret == dps.OK): print "Linked %d to %d" % (dps.get_port_number(node), connect_port) dps.destroy_address(addr) return node
def subscriber(topic, remote_listen_addr): node = dps.create_node("/", key_store, None) dps.start_node(node, 0, None) print("Subscriber is listening on %s" % dps.get_listen_address(node)) sub = dps.create_subscription(node, [topic]) dps.subscribe(sub, on_pub) if remote_listen_addr != None: event.clear() ret = dps.link(node, str(remote_listen_addr), on_link) if ret == dps.OK: event.wait() nodes.append(node) return node
pub_key_id = subscriber_id def on_ack(pub, payload): print "Ack for pub UUID %s(%d)" % (dps.publication_get_uuid(pub), dps.publication_get_sequence_num(pub)) print " %s" % (payload) def on_destroy(node): print "Destroyed" dps.destroy_key_store(key_store) node = dps.create_node("/", key_store, node_id) dps.start_node(node, dps.MCAST_PUB_ENABLE_SEND, 0) pub = dps.create_publication(node) dps.init_publication(pub, ['a/b/c'], False, None, on_ack) dps.publication_add_sub_id(pub, pub_key_id) dps.publish(pub, "hello") print "Pub UUID %s(%d)" % (dps.publication_get_uuid(pub), dps.publication_get_sequence_num(pub)) time.sleep(0.2) dps.publish(pub, "world") print "Pub UUID %s(%d)" % (dps.publication_get_uuid(pub), dps.publication_get_sequence_num(pub)) time.sleep(0.2) dps.destroy_publication(pub) dps.destroy_node(node, on_destroy)
print(payload.tobytes()) if dps.publication_is_ack_requested(pub): ack_msg = "This is an ACK from %s" % (dps.get_listen_address(dps.publication_get_node(pub))) print("Sending ack for pub UUID %s(%d)" % (dps.publication_get_uuid(pub), dps.publication_get_sequence_num(pub))) print(" %s" % (ack_msg)) dps.ack_publication(pub, ack_msg); import argparse parser = argparse.ArgumentParser() parser.add_argument("-d", "--debug", action='store_true', help="Enable debug ouput if built for debug.") args = parser.parse_args() dps.cvar.debug = args.debug node = dps.create_node("/") dps.start_node(node, dps.MCAST_PUB_ENABLE_RECV + dps.MCAST_PUB_ENABLE_SEND, None) print("Subscriber is listening on %s" % (dps.get_listen_address(node))) sub = dps.create_subscription(node, ['a/b/c']); dps.subscribe(sub, on_pub) time.sleep(1) # Let publishers know we are here pub = dps.create_publication(node) dps.init_publication(pub, ['new_subscriber'], False) dps.publish(pub, "Hi") if not sys.flags.interactive: while True: time.sleep(1)
print("Destroyed") dps.destroy_key_store(key_store) if args.port != None: mcast = dps.MCAST_PUB_DISABLED node = dps.create_node("/", key_store, node_id) listen_addr = None if args.listen != None: listen_addr = dps.create_address() try: dps.set_address(listen_addr, "[::]:%d" % (int(args.listen))) except ValueError: dps.set_address(listen_addr, args.listen) dps.start_node(node, mcast, listen_addr) print("Publisher is listening on %s" % (dps.get_listen_address(node))) if args.port != None: try: addr_text = "[::1]:%d" % (int(args.port)) except ValueError: addr_text = args.port event.clear() ret = dps.link(node, addr_text, on_link) if ret == dps.OK: event.wait() else: print("link %s returned %s" % (addr_text, dps.err_txt(ret))) pub = dps.create_publication(node)
def on_destroy(node): print "Destroyed" import argparse parser = argparse.ArgumentParser() parser.add_argument("-d", "--debug", action='store_true', help="Enable debug ouput if built for debug.") args = parser.parse_args() dps.cvar.debug = args.debug node = dps.create_node("/") dps.start_node(node, dps.MCAST_PUB_ENABLE_SEND + dps.MCAST_PUB_ENABLE_RECV, 0) print "Publisher is listening on port %d" % (dps.get_port_number(node)) pub = dps.create_publication(node) dps.init_publication(pub, ['a/b/c'], False, None) dps.publish(pub, "hello", 200) # Subscription for responding to alerts from new subscribers sub = dps.create_subscription(node, ['new_subscriber']) dps.subscribe(sub, on_pub) time.sleep(60) dps.destroy_publication(pub) dps.destroy_node(node, on_destroy)
def on_link(node, addr, status): if status == dps.OK: print("Subscriber is linked to %s" % (addr)) else: print("link %s returned %s" % (addr, dps.err_txt(status))) event.set() node = dps.create_node("/", key_store, node_id) listen_addr = None if args.listen != None: listen_addr = dps.create_address() try: dps.set_address(listen_addr, "[::]:%d" % (int(args.listen))) except ValueError: dps.set_address(listen_addr, args.listen) dps.start_node(node, dps.MCAST_PUB_ENABLE_RECV, listen_addr) print("Subscriber is listening on %s" % (dps.get_listen_address(node))) sub = dps.create_subscription(node, ['a/b/c']); dps.subscribe(sub, on_pub) if args.port != None: try: addr_text = "[::1]:%d" % (int(args.port)) except ValueError: addr_text = args.port event.clear() ret = dps.link(node, addr_text, on_link) if ret == dps.OK: event.wait() else: