Index: third_party/twisted_8_1/twisted/python/_epoll.pyx |
diff --git a/third_party/twisted_8_1/twisted/python/_epoll.pyx b/third_party/twisted_8_1/twisted/python/_epoll.pyx |
deleted file mode 100644 |
index 3a3b1cecac5d519ebdcd1c9d5b609538fa268f33..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/python/_epoll.pyx |
+++ /dev/null |
@@ -1,181 +0,0 @@ |
-# Copyright (c) 2001-2006 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
-""" |
-Interface to epoll I/O event notification facility. |
-""" |
- |
-# NOTE: The version of Pyrex you are using probably _does not work_ with |
-# Python 2.5. If you need to recompile this file, _make sure you are using |
-# a version of Pyrex which works with Python 2.5_. I am using 0.9.4.1 from |
-# <http://codespeak.net/svn/lxml/pyrex/>. -exarkun |
- |
-cdef extern from "stdio.h": |
- cdef extern void *malloc(int) |
- cdef extern void free(void *) |
- cdef extern int close(int) |
- |
-cdef extern from "errno.h": |
- cdef extern int errno |
- cdef extern char *strerror(int) |
- |
-cdef extern from "string.h": |
- cdef extern void *memset(void* s, int c, int n) |
- |
-cdef extern from "stdint.h": |
- ctypedef unsigned long uint32_t |
- ctypedef unsigned long long uint64_t |
- |
-cdef extern from "sys/epoll.h": |
- |
- cdef enum: |
- EPOLL_CTL_ADD = 1 |
- EPOLL_CTL_DEL = 2 |
- EPOLL_CTL_MOD = 3 |
- |
- cdef enum EPOLL_EVENTS: |
- EPOLLIN = 0x001 |
- EPOLLPRI = 0x002 |
- EPOLLOUT = 0x004 |
- EPOLLRDNORM = 0x040 |
- EPOLLRDBAND = 0x080 |
- EPOLLWRNORM = 0x100 |
- EPOLLWRBAND = 0x200 |
- EPOLLMSG = 0x400 |
- EPOLLERR = 0x008 |
- EPOLLHUP = 0x010 |
- EPOLLET = (1 << 31) |
- |
- ctypedef union epoll_data_t: |
- void *ptr |
- int fd |
- uint32_t u32 |
- uint64_t u64 |
- |
- cdef struct epoll_event: |
- uint32_t events |
- epoll_data_t data |
- |
- int epoll_create(int size) |
- int epoll_ctl(int epfd, int op, int fd, epoll_event *event) |
- int epoll_wait(int epfd, epoll_event *events, int maxevents, int timeout) |
- |
-cdef extern from "Python.h": |
- ctypedef struct PyThreadState |
- cdef extern PyThreadState *PyEval_SaveThread() |
- cdef extern void PyEval_RestoreThread(PyThreadState*) |
- |
-cdef class epoll: |
- """ |
- Represent a set of file descriptors being monitored for events. |
- """ |
- |
- cdef int fd |
- cdef int initialized |
- |
- def __init__(self, int size): |
- self.fd = epoll_create(size) |
- if self.fd == -1: |
- raise IOError(errno, strerror(errno)) |
- self.initialized = 1 |
- |
- def __dealloc__(self): |
- if self.initialized: |
- close(self.fd) |
- self.initialized = 0 |
- |
- def close(self): |
- """ |
- Close the epoll file descriptor. |
- """ |
- if self.initialized: |
- if close(self.fd) == -1: |
- raise IOError(errno, strerror(errno)) |
- self.initialized = 0 |
- |
- def fileno(self): |
- """ |
- Return the epoll file descriptor number. |
- """ |
- return self.fd |
- |
- def _control(self, int op, int fd, int events): |
- """ |
- Modify the monitored state of a particular file descriptor. |
- |
- Wrap epoll_ctl(2). |
- |
- @type op: C{int} |
- @param op: One of CTL_ADD, CTL_DEL, or CTL_MOD |
- |
- @type fd: C{int} |
- @param fd: File descriptor to modify |
- |
- @type events: C{int} |
- @param events: A bit set of IN, OUT, PRI, ERR, HUP, and ET. |
- |
- @raise IOError: Raised if the underlying epoll_ctl() call fails. |
- """ |
- cdef int result |
- cdef epoll_event evt |
- evt.events = events |
- evt.data.fd = fd |
- result = epoll_ctl(self.fd, op, fd, &evt) |
- if result == -1: |
- raise IOError(errno, strerror(errno)) |
- |
- def wait(self, unsigned int maxevents, int timeout): |
- """ |
- Wait for an I/O event, wrap epoll_wait(2). |
- |
- @type maxevents: C{int} |
- @param maxevents: Maximum number of events returned. |
- |
- @type timeout: C{int} |
- @param timeout: Maximum time waiting for events. 0 makes it return |
- immediately whereas -1 makes it wait indefinitely. |
- |
- @raise IOError: Raised if the underlying epoll_wait() call fails. |
- """ |
- cdef epoll_event *events |
- cdef int result |
- cdef int nbytes |
- cdef int fd |
- cdef PyThreadState *_save |
- |
- nbytes = sizeof(epoll_event) * maxevents |
- events = <epoll_event*>malloc(nbytes) |
- memset(events, 0, nbytes) |
- try: |
- fd = self.fd |
- |
- _save = PyEval_SaveThread() |
- result = epoll_wait(fd, events, maxevents, timeout) |
- PyEval_RestoreThread(_save) |
- |
- if result == -1: |
- raise IOError(errno, strerror(errno)) |
- results = [] |
- for i from 0 <= i < result: |
- results.append((events[i].data.fd, <int>events[i].events)) |
- return results |
- finally: |
- free(events) |
- |
-CTL_ADD = EPOLL_CTL_ADD |
-CTL_DEL = EPOLL_CTL_DEL |
-CTL_MOD = EPOLL_CTL_MOD |
- |
-IN = EPOLLIN |
-OUT = EPOLLOUT |
-PRI = EPOLLPRI |
-ERR = EPOLLERR |
-HUP = EPOLLHUP |
-ET = EPOLLET |
- |
-RDNORM = EPOLLRDNORM |
-RDBAND = EPOLLRDBAND |
-WRNORM = EPOLLWRNORM |
-WRBAND = EPOLLWRBAND |
-MSG = EPOLLMSG |
- |