class Replier: def __init__(self): self.reactor = ReactorInterface(self) self.log = get_logger("Replier") self.reactor.add_router(url=URL, callback='handle_request') self.reactor.notify_ready() def handle_request(self, req, id): self.log.critical("Got request: {} with sender id: {}".format(req, id)) self.reactor.reply(url=URL, id=id, data=b'heres your reply my guy')
class Node: def __init__(self, log_color=None): if log_color: self.log = get_logger("Node", bg_color=log_color) else: self.log = get_logger("Node") self.log.info("A Node has appeared") self.reactor = ReactorInterface(router=self) self.reactor.notify_ready() def handle_msg(self, data): self.log.info("Handling Msg: {}".format(data))
class PubSubNode: def __init__(self): self.log = get_logger("PubSubNode") self.log.info("-- PubSubNode Init-ing --") self.reactor = ReactorInterface(self) self.reactor.execute(Command.ADD_SUB, url=URL, callback='do_something') self.reactor.execute(Command.ADD_PUB, url=URL) self.reactor.notify_ready() def do_something(self, data): self.log.debug("Doing something with data: {}".format(data))
class Requester: _ID = 'ASS' def __init__(self): self.reactor = ReactorInterface(self) self.log = get_logger("Requester") self.reactor.add_dealer(url=URL, callback='handle_reply', id=self._ID) self.reactor.notify_ready() def handle_reply(self, rep): self.log.critical("Got reply: {}".format(rep)) def send_req(self, req_str): self.reactor.request(url=URL, data=req_str.encode())
class SlowInitNode: def __init__(self): self.log = get_logger("SlowInitNode") self.log.info("-- Test Node Init-ing --") self.reactor = ReactorInterface(self) self.reactor.execute(Command.ADD_SUB, url=URL, callback='do_something_else') self.log.critical("Starting very slow init") time.sleep(6) self.log.critical("Done with very flow init") self.reactor.notify_ready() def do_something_slow(self, data): self.log.critical("Starting something slow with data: {}".format(data)) time.sleep(2) self.log.critical("Done with something slow for data: {}".format(data)) def do_something_else(self, data): self.log.info("do_something_ELSE with data: {}".format(data))