class Mailbox(object): def __init__(self, hub_frontend, hub_backend, loop, name): self.hub_backend = hub_backend self.hub_frontend = hub_frontend self.loop = loop self.identity = name if name else str(uuid.uuid1()) self.inbound = Inbound(self.loop, self.hub_backend, self.identity) self.outbound = Outbound(self.loop, self.identity) def start(self): self.loop.create_task(self.inbound.start()) def stop(self): self.inbound.stop() @property def pid(self): return self.hub_frontend, self.identity async def recv(self, timeout=None): payload = await self.inbound.recv(timeout=timeout) return pickle.loads(payload) async def send(self, name_or_pid, *args): payload = pickle.dumps(args) pid = resolve(name_or_pid) await self.outbound.send(pid, payload)
def __init__(self, hub_frontend, hub_backend, loop, name): self.hub_backend = hub_backend self.hub_frontend = hub_frontend self.loop = loop self.identity = name if name else str(uuid.uuid1()) self.inbound = Inbound(self.loop, self.hub_backend, self.identity) self.outbound = Outbound(self.loop, self.identity)