Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 """Interfaces for platform-specific functionality.
00018 
00019 This module exists primarily for documentation purposes and as base classes
00020 for other tornado.platform modules.  Most code should import the appropriate
00021 implementation from `tornado.platform.auto`.
00022 """
00023 
00024 from __future__ import absolute_import, division, with_statement
00025 
00026 
00027 def set_close_exec(fd):
00028     """Sets the close-on-exec bit (``FD_CLOEXEC``)for a file descriptor."""
00029     raise NotImplementedError()
00030 
00031 
00032 class Waker(object):
00033     """A socket-like object that can wake another thread from ``select()``.
00034 
00035     The `~tornado.ioloop.IOLoop` will add the Waker's `fileno()` to
00036     its ``select`` (or ``epoll`` or ``kqueue``) calls.  When another
00037     thread wants to wake up the loop, it calls `wake`.  Once it has woken
00038     up, it will call `consume` to do any necessary per-wake cleanup.  When
00039     the ``IOLoop`` is closed, it closes its waker too.
00040     """
00041     def fileno(self):
00042         """Returns a file descriptor for this waker.
00043 
00044         Must be suitable for use with ``select()`` or equivalent on the
00045         local platform.
00046         """
00047         raise NotImplementedError()
00048 
00049     def wake(self):
00050         """Triggers activity on the waker's file descriptor."""
00051         raise NotImplementedError()
00052 
00053     def consume(self):
00054         """Called after the listen has woken up to do any necessary cleanup."""
00055         raise NotImplementedError()
00056 
00057     def close(self):
00058         """Closes the waker's file descriptor(s)."""
00059         raise NotImplementedError()