예제 #1
0
파일: rpc.py 프로젝트: senthilkvs/lymph
    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
예제 #2
0
    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)
예제 #3
0
파일: __init__.py 프로젝트: kashopi/lymph
    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)
예제 #4
0
파일: rpc.py 프로젝트: alazaro/lymph
 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)
예제 #5
0
 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
예제 #6
0
 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)
예제 #7
0
 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
예제 #8
0
 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