You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.9 KiB
74 lines
1.9 KiB
5 years ago
|
cimport cython
|
||
|
|
||
|
from gevent.__greenlet_primitives cimport SwitchOutGreenletWithLoop
|
||
|
from gevent.__hub_local cimport get_hub_noargs as get_hub
|
||
|
|
||
|
from gevent.__waiter cimport Waiter
|
||
|
from gevent.__waiter cimport MultipleWaiter
|
||
|
|
||
|
cdef InvalidSwitchError
|
||
|
cdef _waiter
|
||
|
cdef _greenlet_primitives
|
||
|
cdef traceback
|
||
|
cdef _timeout_error
|
||
|
cdef Timeout
|
||
|
|
||
|
|
||
|
cdef extern from "greenlet/greenlet.h":
|
||
|
|
||
|
ctypedef class greenlet.greenlet [object PyGreenlet]:
|
||
|
pass
|
||
|
|
||
|
# These are actually macros and so much be included
|
||
|
# (defined) in each .pxd, as are the two functions
|
||
|
# that call them.
|
||
|
greenlet PyGreenlet_GetCurrent()
|
||
|
void PyGreenlet_Import()
|
||
|
|
||
|
@cython.final
|
||
|
cdef inline greenlet getcurrent():
|
||
|
return PyGreenlet_GetCurrent()
|
||
|
|
||
|
cdef bint _greenlet_imported
|
||
|
|
||
|
cdef inline void greenlet_init():
|
||
|
global _greenlet_imported
|
||
|
if not _greenlet_imported:
|
||
|
PyGreenlet_Import()
|
||
|
_greenlet_imported = True
|
||
|
|
||
|
|
||
|
cdef class WaitOperationsGreenlet(SwitchOutGreenletWithLoop):
|
||
|
|
||
|
cpdef wait(self, watcher)
|
||
|
cpdef cancel_wait(self, watcher, error, close_watcher=*)
|
||
|
cpdef _cancel_wait(self, watcher, error, close_watcher)
|
||
|
|
||
|
cdef class _WaitIterator:
|
||
|
cdef SwitchOutGreenletWithLoop _hub
|
||
|
cdef MultipleWaiter _waiter
|
||
|
cdef _switch
|
||
|
cdef _timeout
|
||
|
cdef _objects
|
||
|
cdef _timer
|
||
|
cdef Py_ssize_t _count
|
||
|
cdef bint _begun
|
||
|
|
||
|
|
||
|
cdef _begin(self)
|
||
|
cdef _cleanup(self)
|
||
|
|
||
|
cpdef __enter__(self)
|
||
|
cpdef __exit__(self, typ, value, tb)
|
||
|
|
||
|
|
||
|
cpdef iwait_on_objects(objects, timeout=*, count=*)
|
||
|
cpdef wait_on_objects(objects=*, timeout=*, count=*)
|
||
|
|
||
|
cdef _primitive_wait(watcher, timeout, timeout_exc, WaitOperationsGreenlet hub)
|
||
|
cpdef wait_on_watcher(watcher, timeout=*, timeout_exc=*, WaitOperationsGreenlet hub=*)
|
||
|
cpdef wait_read(fileno, timeout=*, timeout_exc=*)
|
||
|
cpdef wait_write(fileno, timeout=*, timeout_exc=*, event=*)
|
||
|
cpdef wait_readwrite(fileno, timeout=*, timeout_exc=*, event=*)
|
||
|
cpdef wait_on_socket(socket, watcher, timeout_exc=*)
|