Esempio n. 1
0
    def __init__(self, loop, socket):
        self.loop = loop
        self.socket = socket

        # shortcircuit some socket methods
        self.bind = self.socket.bind
        self.bind_to_random_port = self.socket.bind_to_random_port
        self.connect = self.socket.connect
        self.setsockopt = self.socket.setsockopt
        self.getsockopt = self.socket.getsockopt
        self.setsockopt_string = self.socket.setsockopt_string
        self.getsockopt_string = self.socket.getsockopt_string
        self.setsockopt_unicode = self.socket.setsockopt_unicode
        self.getsockopt_unicode = self.socket.getsockopt_unicode

        self.fd = socket.getsockopt(zmq.FD)
        self._poll = pyuv.Poll(loop, self.fd)
        self._poll.start(pyuv.UV_READABLE, self._on_events)

        self._prepare_h = pyuv.Prepare(loop)
        self._waker = pyuv.Idle(self.loop)

        self._events = 0

        self._send_queue = deque()
        self._read_cb = None
        self._read_copy = True
        self._read_track = False
Esempio n. 2
0
    def test_async2(self):
        self.prepare_cb_called = 0
        self.check_cb_called = 0

        def prepare_cb(prepare):
            self.prepare_cb_called += 1
            self.thread = threading.Thread(target=thread_cb)
            self.thread.start()

        def check_cb(check):
            self.check_cb_called += 1
            self.loop.stop()

        def thread_cb():
            time.sleep(0.01)
            self. async .send()

        self. async = pyuv.Async(self.loop)
        self.prepare = pyuv.Prepare(self.loop)
        self.prepare.start(prepare_cb)
        self.check = pyuv.Check(self.loop)
        self.check.start(check_cb)
        self.loop.run()
        self.assertEqual(self.prepare_cb_called, 1)
        self.assertEqual(self.check_cb_called, 1)
Esempio n. 3
0
 def test_async1(self):
     self.async_cb_called = 0
     self.prepare_cb_called = 0
     def async_cb(async):
         with self.lock:
             self.async_cb_called += 1
             n = self.async_cb_called
         if n == 3:
             self.async.close()
             self.prepare.close()
     def prepare_cb(prepare):
         if self.prepare_cb_called:
             return
         self.prepare_cb_called += 1
         self.thread = threading.Thread(target=thread_cb)
         self.thread.start()
     def thread_cb():
         while True:
             with self.lock:
                 n = self.async_cb_called
                 if n == 3:
                     break
                 self.async.send()
     self.async = pyuv.Async(self.loop, async_cb)
     self.prepare = pyuv.Prepare(self.loop)
     self.prepare.start(prepare_cb)
     self.lock = threading.Lock()
     self.loop.run()
     self.assertEqual(self.async_cb_called, 3)
     self.assertEqual(self.prepare_cb_called, 1)
Esempio n. 4
0
    def test_stop(self):
        self.num_ticks = 10
        self.prepare_called = 0
        self.timer_called = 0

        def timer_cb(handle):
            self.timer_called += 1
            if self.timer_called == 1:
                self.loop.stop()
            elif self.timer_called == self.num_ticks:
                handle.close()

        def prepare_cb(handle):
            self.prepare_called += 1
            if self.prepare_called == self.num_ticks:
                handle.close()

        timer = pyuv.Timer(self.loop)
        timer.start(timer_cb, 0.1, 0.1)
        prepare = pyuv.Prepare(self.loop)
        prepare.start(prepare_cb)
        self.loop.run(pyuv.UV_RUN_DEFAULT)
        self.assertEqual(self.timer_called, 1)
        self.assertTrue(self.prepare_called >= 2)
        self.loop.run(pyuv.UV_RUN_NOWAIT)
        self.assertTrue(self.prepare_called >= 3)
        self.loop.run(pyuv.UV_RUN_DEFAULT)
        self.assertEqual(self.timer_called, 10)
        self.assertEqual(self.prepare_called, 10)
Esempio n. 5
0
    def test_loop_alive(self):
        def prepare_cb(handle):
            self.assertEqual(self.loop.alive, 1)
            handle.close()

        prepare = pyuv.Prepare(self.loop)
        prepare.start(prepare_cb)
        self.loop.run(pyuv.UV_RUN_ONCE)
Esempio n. 6
0
 def __init__(self, loop):
     self.loop = loop
     self._queue = deque()
     self._dispatcher = pyuv.Prepare(self.loop)
     self._dispatcher.start(self._send)
     if hasattr(self._dispatcher, 'unref'):
         self._dispatcher.unref()
     self._tick = pyuv.Async(loop, self._spin_up)
     self._spinner = pyuv.Idle(self.loop)
Esempio n. 7
0
 def test_prepare1(self):
     self.prepare_cb_called = 0
     def prepare_cb(prepare):
         self.prepare_cb_called += 1
         prepare.stop()
         prepare.close()
     prepare = pyuv.Prepare(self.loop)
     prepare.start(prepare_cb)
     self.loop.run()
     self.assertEqual(self.prepare_cb_called, 1)
Esempio n. 8
0
    def test_run_once(self):
        self.cb_called = 0

        def prepare_cb(handle):
            handle.close()
            self.cb_called += 1

        for i in range(500):
            prepare = pyuv.Prepare(self.loop)
            prepare.start(prepare_cb)
            self.loop.run(pyuv.UV_RUN_ONCE)
        self.assertEqual(self.cb_called, 500)
Esempio n. 9
0
    def __init__(self, loop, max_size=10000):
        self.loop = loop
        self._events = {}
        self._wildcards = set()

        self._queue = deque(maxlen=max_size)
        self._wqueue = deque(maxlen=max_size)

        self._event_dispatcher = pyuv.Prepare(self.loop)
        self._event_dispatcher.start(self._send)
        self._event_dispatcher.unref()
        self._spinner = pyuv.Idle(self.loop)
Esempio n. 10
0
    def test_poll1(self):
        self.cb_called = 0

        def prepare_cb(handle):
            handle.close()
            self.cb_called += 1

        loop = pyuv.Loop.default_loop()
        for i in range(500):
            prepare = pyuv.Prepare(loop)
            prepare.start(prepare_cb)
            loop.poll()
        self.assertEqual(self.cb_called, 500)
Esempio n. 11
0
 def initialize(self):
     self._loop = pyuv.Loop().default_loop()
     self._handlers = {}
     self._callbacks = []
     self._callback_lock = thread.allocate_lock()
     self._timeouts = set()
     self._stopped = False
     self._closing = False
     self._thread_ident = None
     self._cb_handle = pyuv.Prepare(self._loop)
     self._cb_handle.start(self._prepare_cb)
     self._waker = Waker(self._loop)
     self._fdwaker = FDWaker()
     self._signal_checker = pyuv.util.SignalChecker(self._loop, self._fdwaker.reader.fileno())
Esempio n. 12
0
    def __init__(self, impl=None, _loop=None):
        if impl is not None:
            raise RuntimeError(
                'When using pyuv the poller implementation cannot be specifiedi'
            )
        self._loop = _loop or pyuv.Loop()
        self._handlers = {}
        self._callbacks = deque()
        self._callback_lock = thread.allocate_lock()
        self._timeouts = set()
        self._running = False
        self._stopped = False
        self._thread_ident = None

        self._cb_handle = pyuv.Prepare(self._loop)
        self._waker = Waker(self._loop)
Esempio n. 13
0
    def test_multihandle1(self):
        self.close_cb_called = 0
        self.prepare_cb_called = 0

        def close_cb(handle):
            self.close_cb_called += 1

        def prepare_cb(prepare):
            self.prepare_cb_called += 1
            prepare.stop()
            prepare.close(close_cb)

        self.idle_cb_called = 0

        def idle_cb(idle):
            self.idle_cb_called += 1
            idle.stop()
            idle.close(close_cb)

        self.check_cb_called = 0

        def check_cb(check):
            self.check_cb_called += 1
            check.stop()
            check.close(close_cb)

        self.timer_cb_called = 0

        def timer_cb(timer):
            self.timer_cb_called += 1
            timer.stop()
            timer.close(close_cb)

        loop = pyuv.Loop.default_loop()
        prepare = pyuv.Prepare(loop)
        prepare.start(prepare_cb)
        idle = pyuv.Idle(loop)
        idle.start(idle_cb)
        check = pyuv.Check(loop)
        check.start(check_cb)
        timer = pyuv.Timer(loop)
        timer.start(timer_cb, 0.1, 0)
        loop.run()
        self.assertEqual(self.prepare_cb_called, 1)
        self.assertEqual(self.idle_cb_called, 1)
        self.assertEqual(self.check_cb_called, 1)
        self.assertEqual(self.close_cb_called, 4)
Esempio n. 14
0
 def initialize(self, loop=None, **kwargs):
     super(UVLoop, self).initialize(**kwargs)
     self._loop = loop or pyuv.Loop()
     self._handlers = {}
     self._callbacks = []
     self._callback_lock = thread.allocate_lock()
     #TODO: handle timeouts better
     self._timeouts = set()
     self._stopped = False
     self._running = False
     self._closing = False
     self._thread_ident = None
     self._cb_handle = pyuv.Prepare(self._loop)
     self._cb_handle.start(self._prepare_cb)
     self._waker = Waker(self._loop)
     self._fdwaker = FDWaker()
     self._signal_checker = pyuv.util.SignalChecker(
         self._loop, self._fdwaker.reader.fileno())
Esempio n. 15
0
 def __init__(self, flags=None, default=True):
     if default:
         self._loop = pyuv.Loop.default_loop()
     else:
         self._loop = pyuv.Loop()
     self._loop._poll_handles = {}
     self._loop.excepthook = functools.partial(self.handle_error, None)
     self._callback_watcher = pyuv.Prepare(self._loop)
     self._callback_spinner = pyuv.Idle(self._loop)
     self._callbacks = []
     self._child_watchers = {}
     self._watchers = set()
     self._sigchld_handle = None
     if _signal_check_rfd is not None:
         self._signal_checker = pyuv.util.SignalChecker(self._loop, _signal_check_rfd)
         self._signal_checker.start()
     else:
         self._signal_checker = None
Esempio n. 16
0
 def __init__(self, loop, ref=True):
     super(Prepare, self).__init__(loop, ref)
     self._handle = pyuv.Prepare(self.loop._loop)
import pyuv
import signal
import socket

reader, writer = socket.socketpair()
reader.setblocking(False)
writer.setblocking(False)

loop = pyuv.Loop.default_loop()
prepare = pyuv.Prepare(loop)
signal_checker = pyuv.util.SignalChecker(loop, reader.fileno())


def prepare_cb(handle):
    print('Inside prepare_cb()')


def excepthook(typ, val, tb):
    print('Inside excepthook()')
    if typ is KeyboardInterrupt:
        print('The type was KeyboardInterrupt')
        prepare.stop()
        signal_checker.stop()


def main():
    loop.excepthook = excepthook

    prepare.start(prepare_cb)

    signal.set_wakeup_fd(writer.fileno())