def send_request(self, service, subject, body, headers=None): if isinstance(service, InstanceSet): try: instance = self._pick_instance(service) except NotConnected as ex: logger.warning('cannot send request (%s) subject=%s', ex, subject) raise else: endpoint = instance.endpoint version = instance.version else: endpoint = service version = None msg = Message( msg_type=Message.REQ, subject=subject, body=body, source=self.endpoint, headers=self.prepare_headers(headers, version=serialize_version(version)), ) channel = RequestChannel(msg, self) self.channels[msg.id] = channel self._send_message(endpoint, msg) return channel
def _send_message(self, endpoint, msg): dst = self.__mock_network.service_containers[endpoint] # Exercise the msgpack packing and unpacking. frames = msg.pack_frames() frames.insert(0, self.endpoint.encode('utf-8')) msg = Message.unpack_frames(frames) dst.server.recv_message(msg)
def _send_message(self, address, msg): dst = self.container.lookup(address).connect().endpoint dst = self.container._mock_network.service_containers[dst] # Exercise the msgpack packing and unpacking. frames = msg.pack_frames() frames.insert(0, self.endpoint.encode('utf-8')) msg = Message.unpack_frames(frames) dst.server.recv_message(msg)
def _recv_loop(self): while True: frames = self.recv_sock.recv_multipart() try: msg = Message.unpack_frames(frames) except ValueError as e: msg_id = frames[1] if len(frames) >= 2 else None logger.warning('bad message format %s: %r (msg-id=%s)', e, (frames), msg_id) continue self.recv_message(msg)
def send_reply(self, msg, body, msg_type=Message.REP, headers=None): reply_msg = Message( msg_type=msg_type, subject=msg.id, body=body, source=self.endpoint, headers=self.prepare_headers(headers), ) self.send_message(msg.source, reply_msg) return reply_msg
def recv_loop(self): while True: frames = self.recv_sock.recv_multipart() try: msg = Message.unpack_frames(frames) except ValueError as e: msg_id = frames[1] if len(frames) >= 2 else None logger.warning('bad message format %s: %r (msg-id=%s)', e, (frames), msg_id) continue self.recv_message(msg)
def send_request(self, address, subject, body, headers=None): msg = Message( msg_type=Message.REQ, subject=subject, body=body, source=self.endpoint, headers=self.prepare_headers(headers), ) reply_channel = ReplyChannel(msg, self) self.channels[msg.id] = reply_channel self.send_message(address, msg) return reply_channel
def send_request(self, service, subject, body, headers=None): msg = Message( msg_type=Message.REQ, subject=subject, body=body, source=self.endpoint, headers=self.prepare_headers(headers), ) channel = RequestChannel(msg, self) self.channels[msg.id] = channel try: endpoint = self._pick_endpoint(service) except NotConnected: logger.error('cannot send message (no instance): %s', msg) else: self._send_message(endpoint, msg) return channel