diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/fdesc.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/fdesc.py | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/fdesc.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/fdesc.py deleted file mode 100755 index f4b0cdf6..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/internet/fdesc.py +++ /dev/null @@ -1,118 +0,0 @@ -# -*- test-case-name: twisted.test.test_fdesc -*- -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - - -""" -Utility functions for dealing with POSIX file descriptors. -""" - -import os -import errno -try: - import fcntl -except ImportError: - fcntl = None - -# twisted imports -from twisted.internet.main import CONNECTION_LOST, CONNECTION_DONE -from twisted.python.runtime import platformType - -def setNonBlocking(fd): - """ - Make a file descriptor non-blocking. - """ - flags = fcntl.fcntl(fd, fcntl.F_GETFL) - flags = flags | os.O_NONBLOCK - fcntl.fcntl(fd, fcntl.F_SETFL, flags) - - -def setBlocking(fd): - """ - Make a file descriptor blocking. - """ - flags = fcntl.fcntl(fd, fcntl.F_GETFL) - flags = flags & ~os.O_NONBLOCK - fcntl.fcntl(fd, fcntl.F_SETFL, flags) - - -if fcntl is None: - # fcntl isn't available on Windows. By default, handles aren't - # inherited on Windows, so we can do nothing here. - _setCloseOnExec = _unsetCloseOnExec = lambda fd: None -else: - def _setCloseOnExec(fd): - """ - Make a file descriptor close-on-exec. - """ - flags = fcntl.fcntl(fd, fcntl.F_GETFD) - flags = flags | fcntl.FD_CLOEXEC - fcntl.fcntl(fd, fcntl.F_SETFD, flags) - - - def _unsetCloseOnExec(fd): - """ - Make a file descriptor close-on-exec. - """ - flags = fcntl.fcntl(fd, fcntl.F_GETFD) - flags = flags & ~fcntl.FD_CLOEXEC - fcntl.fcntl(fd, fcntl.F_SETFD, flags) - - -def readFromFD(fd, callback): - """ - Read from file descriptor, calling callback with resulting data. - - If successful, call 'callback' with a single argument: the - resulting data. - - Returns same thing FileDescriptor.doRead would: CONNECTION_LOST, - CONNECTION_DONE, or None. - - @type fd: C{int} - @param fd: non-blocking file descriptor to be read from. - @param callback: a callable which accepts a single argument. If - data is read from the file descriptor it will be called with this - data. Handling exceptions from calling the callback is up to the - caller. - - Note that if the descriptor is still connected but no data is read, - None will be returned but callback will not be called. - - @return: CONNECTION_LOST on error, CONNECTION_DONE when fd is - closed, otherwise None. - """ - try: - output = os.read(fd, 8192) - except (OSError, IOError), ioe: - if ioe.args[0] in (errno.EAGAIN, errno.EINTR): - return - else: - return CONNECTION_LOST - if not output: - return CONNECTION_DONE - callback(output) - - -def writeToFD(fd, data): - """ - Write data to file descriptor. - - Returns same thing FileDescriptor.writeSomeData would. - - @type fd: C{int} - @param fd: non-blocking file descriptor to be written to. - @type data: C{str} or C{buffer} - @param data: bytes to write to fd. - - @return: number of bytes written, or CONNECTION_LOST. - """ - try: - return os.write(fd, data) - except (OSError, IOError), io: - if io.errno in (errno.EAGAIN, errno.EINTR): - return 0 - return CONNECTION_LOST - - -__all__ = ["setNonBlocking", "setBlocking", "readFromFD", "writeToFD"] |