twisted.internet.win32eventreactor.html   [plain text]


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>twisted.internet.win32eventreactor</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css"></link>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">

<!-- =========== START OF NAVBAR =========== -->
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="center">
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="twisted.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar" align="right" width="100%">
      <table border="0" cellpadding="0" cellspacing="0">
      <tr><th class="navbar" align="center">
        <p class="nomargin">
          <a class="navbar" target="_top" href="http://twistedmatrix.com/">Twisted&nbsp;1.3.0rc1</a>
      </p></th></tr></table>
    </th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <font size="-1"><b class="breadcrumbs">
        <a href="twisted.html">Package&nbsp;twisted</a> ::
        <a href="twisted.internet.html">Package&nbsp;internet</a> ::
        Module&nbsp;win32eventreactor
      </b></font></br>
    </td>
    <td><table cellpadding="0" cellspacing="0">
      <tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="twisted.internet.win32eventreactor.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
    </table></td>
</tr></table>

<!-- =========== START OF MODULE DESCRIPTION =========== -->
<h2 class="module">Module twisted.internet.win32eventreactor</h2>

<p>A win32event based implementation of the Twisted main loop.</p>
<p>This requires win32all or ActivePython to be installed.</p>
<p>API Stability: semi-stable</p>
<p>Maintainer: <a href="mailto:twisted&#64;itamarst.org">Itamar 
Shtull-Trauring</a></p>
LIMITATIONS:
<ol start="1">
  <li>
    WaitForMultipleObjects and thus the event loop can only handle 64 
    objects.
  </li>
  <li>
    Process running has some problems (see Process docstring).
  </li>
</ol>
TODO:
<ol start="1">
  <li>
    Event loop handling of writes is *very* problematic (this is 
    causing failed tests). Switch to doing it the correct way, whatever 
    that means (see below).
  </li>
  <li>
    Replace icky socket loopback waker with event based waker (use 
    dummyEvent object)
  </li>
  <li>
    Switch everyone to using Free Software so we don't have to deal 
    with proprietary APIs.
  </li>
</ol>
ALTERNATIVE SOLUTIONS:
<ul>
  <li>
    IIRC, sockets can only be registered once. So we switch to a 
    structure like the poll() reactor, thus allowing us to deal with 
    write events in a decent fashion. This should allow us to pass tests, 
    but we're still limited to 64 events.
  </li>
</ul>
Or:
<ul>
  <li>
    Instead of doing a reactor, we make this an addon to the default 
    reactor. The WFMO event loop runs in a separate thread. This means no 
    need to maintain separate code for networking, 64 event limit doesn't 
    apply to sockets, we can run processes and other win32 stuff in 
    default event loop. The only problem is that we're stuck with the 
    icky socket based waker. Another benefit is that this could be 
    extended to support &gt;64 events in a simpler manner than the 
    previous solution.
  </li>
</ul>
The 2nd solution is probably what will get implemented.
<hr/>

<!-- =========== START OF CLASSES =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
  <th colspan="2">Classes</th></tr>
<tr><td width="15%">
  <b><a href="twisted.internet.win32eventreactor.Process.html"><code>Process</code></a></b></td>
  <td>A process that integrates with the Twisted event loop.</td></tr>
<tr><td width="15%">
  <b><a href="twisted.internet.win32eventreactor.Win32Reactor.html"><code>Win32Reactor</code></a></b></td>
  <td>Reactor that uses Win32 event APIs.</td></tr>
</table><br />


<!-- =========== START OF FUNCTION SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
  <th colspan="2">Function Summary</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
  <td><code><a name="install"></a><span class="summary-sig"><span class="summary-sig-name">install</span>()</span></code>
</td></tr>
</table><br />


<!-- =========== START OF VARIABLE SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
  <th colspan="2">Variable Summary</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
<td><b><a href="twisted.internet.win32eventreactor.html#events"><code>events</code></a></b> = <span title="{}"><code>{}                                              </code>
</span></td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
<td><b><a href="twisted.internet.win32eventreactor.html#reads"><code>reads</code></a></b> = <span title="{}"><code>{}                                               </code>
</span></td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
<td><b><a href="twisted.internet.win32eventreactor.html#writes"><code>writes</code></a></b> = <span title="{}"><code>{}                                              </code>
</span></td></tr>
</table><br />


<!-- =========== START OF VARIABLE DETAILS =========== -->
<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="details">
  <th colspan="2">Variable Details</th></tr>
</table>
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
<a name="events"></a>
<h3>events</h3>
<dl>
  <dt></dt>
  <dd>
    <dl>
      <dt><b>Type:</b></dt>
      <dd>
          <code>dict</code>

      </dd>
<span title="{}">      <dt><b>Value:</b></dt>
      <dd><table><tr><td>
<pre class="variable">
{}                                                                     </pre>
        </td></tr></table></dd>
</span>    </dl>
  </dd>
</dl></td></tr></table>
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
<a name="reads"></a>
<h3>reads</h3>
<dl>
  <dt></dt>
  <dd>
    <dl>
      <dt><b>Type:</b></dt>
      <dd>
          <code>dict</code>

      </dd>
<span title="{}">      <dt><b>Value:</b></dt>
      <dd><table><tr><td>
<pre class="variable">
{}                                                                     </pre>
        </td></tr></table></dd>
</span>    </dl>
  </dd>
</dl></td></tr></table>
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
<a name="writes"></a>
<h3>writes</h3>
<dl>
  <dt></dt>
  <dd>
    <dl>
      <dt><b>Type:</b></dt>
      <dd>
          <code>dict</code>

      </dd>
<span title="{}">      <dt><b>Value:</b></dt>
      <dd><table><tr><td>
<pre class="variable">
{}                                                                     </pre>
        </td></tr></table></dd>
</span>    </dl>
  </dd>
</dl></td></tr></table>
<br />


<!-- =========== START OF NAVBAR =========== -->
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="center">
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="twisted.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
    <th class="navbar" align="right" width="100%">
      <table border="0" cellpadding="0" cellspacing="0">
      <tr><th class="navbar" align="center">
        <p class="nomargin">
          <a class="navbar" target="_top" href="http://twistedmatrix.com/">Twisted&nbsp;1.3.0rc1</a>
      </p></th></tr></table>
    </th>
  </tr>
</table>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td align="left"><font size="-2">Generated by Epydoc 2.0 on Sat May 15 20:08:01 2004</font></td>
    <td align="right"><a href="http://epydoc.sourceforge.net"
                      ><font size="-2">http://epydoc.sf.net</font></a></td>
  </tr>
</table>
</body>
</html>