コード例 #1
0
     def assertRaisesErrno(self, errno, func, *args, **kwargs):
         if errno == zmq.EAGAIN:
             raise SkipTest("Skipping because we're green.")
         try:
             func(*args, **kwargs)
         except zmq.ZMQError:
             e = sys.exc_info()[1]
             self.assertEqual(
                 e.errno, errno, "wrong error raised, expected '%s' \
 got '%s'" % (zmq.ZMQError(errno), zmq.ZMQError(e.errno)))
         else:
             self.fail("Function did not raise any error")
コード例 #2
0
def device(device_type, isocket, osocket):
    if device_type not in (zmq.FORWARDER, zmq.QUEUE, zmq.STREAMER):
        # Invalid device type
        raise zmq.ZMQError(zmq.EINVAL)

    if not isinstance(isocket, _Socket):
        # Non gevent cooperative socket
        raise NonCooperativeSocket(
            "isocket is not a green socket. Have you monkey_patch()?")
    elif not isinstance(osocket, _Socket):
        # Non gevent cooperative socket
        raise NonCooperativeSocket(
            "osocket is not a green socket. Have you monkey_patch()?")

    def process_isocket():
        while True:
            try:
                osocket.send(isocket.recv())
            except Exception:
                # XXX: Should we raise the exceptions? or keep mimicing pyzmq?
                return -1
        return 0

    def process_osocket():
        while True:
            try:
                isocket.send(osocket.recv())
            except Exception:
                # XXX: Should we raise the exceptions? or keep mimicing pyzmq?
                return -1
        return 0

    iprocess = gevent.spawn(process_isocket)
    oprocess = gevent.spawn(process_osocket)
    return gevent.joinall([iprocess, oprocess])
コード例 #3
0
 def socket(self, socket_type):
     if self.closed:
         raise zmq.ZMQError(zmq.ENOTSUP)
     return _Socket(self, socket_type)