<?xml version="1.0" encoding="ascii"?> <!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>flumotion.component.misc.porter.porter.HTTPPorterProtocol</title> <link rel="stylesheet" href="epydoc.css" type="text/css" /> <script type="text/javascript" src="epydoc.js"></script> </head> <body bgcolor="white" text="black" link="blue" vlink="#204080" alink="#204080"> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0"> <tr valign="top"> <td width="100%"> <span class="breadcrumbs"> Package flumotion :: <a href="flumotion.component-module.html">Package component</a> :: <a href="flumotion.component.misc-module.html">Package misc</a> :: <a href="flumotion.component.misc.porter-module.html">Package porter</a> :: <a href="flumotion.component.misc.porter.porter-module.html">Module porter</a> :: Class HTTPPorterProtocol </span> </td> <td> <table cellpadding="0" cellspacing="0"> <!-- hide/show private --> <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" onclick="toggle_private();">hide private</a>]</span></td></tr> </table> </td> </tr> </table> <!-- ==================== CLASS DESCRIPTION ==================== --> <h1 class="epydoc">Class HTTPPorterProtocol</h1><p class="nomargin-top"><span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol">source code</a></span></p> <pre class="base-tree"> twisted.internet.protocol.BaseProtocol --+ | twisted.internet.protocol.Protocol --+ | <a href="flumotion.extern.log.log.Loggable-class.html">extern.log.log.Loggable</a> --+ | <a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html">PorterProtocol</a> --+ | <strong class="uidshort">HTTPPorterProtocol</strong> </pre> <dl><dt>Known Subclasses:</dt> <dd> <ul class="subclass-list"> <li><a href="flumotion.component.misc.porter.porter.RTSPPorterProtocol-class.html">RTSPPorterProtocol</a></li> </ul> </dd></dl> <hr /> <!-- ==================== INSTANCE METHODS ==================== --> <a name="section-InstanceMethods"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Instance Methods</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-InstanceMethods" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.misc.porter.porter.HTTPPorterProtocol-class.html#parseLine" class="summary-sig-name">parseLine</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">line</span>)</span><br /> Parse the initial line of the request.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.parseLine">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.misc.porter.porter.HTTPPorterProtocol-class.html#unparseLine" class="summary-sig-name">unparseLine</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">parsed</span>)</span><br /> Recreate the initial request line from the parsed representation.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.unparseLine">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.misc.porter.porter.HTTPPorterProtocol-class.html#generateRequestId" class="summary-sig-name">generateRequestId</a>(<span class="summary-sig-arg">self</span>)</span><br /> Return a string that will uniquely identify the request.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.generateRequestId">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.misc.porter.porter.HTTPPorterProtocol-class.html#injectRequestId" class="summary-sig-name">injectRequestId</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">parsed</span>, <span class="summary-sig-arg">requestId</span>)</span><br /> Take the parsed representation of the first request line and a string token, return a parsed representation of the request line with the request-id possibly mixed into it.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.injectRequestId">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.misc.porter.porter.HTTPPorterProtocol-class.html#extractIdentifier" class="summary-sig-name">extractIdentifier</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">parsed</span>)</span><br /> Extract a string that uniquely identifies the requested stream from the parsed representation of the first request line.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.extractIdentifier">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.misc.porter.porter.HTTPPorterProtocol-class.html#writeNotFoundResponse" class="summary-sig-name">writeNotFoundResponse</a>(<span class="summary-sig-arg">self</span>)</span><br /> Write a response indicating that the requested resource was not found in this protocol.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.writeNotFoundResponse">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="flumotion.component.misc.porter.porter.HTTPPorterProtocol-class.html#writeServiceUnavailableResponse" class="summary-sig-name">writeServiceUnavailableResponse</a>(<span class="summary-sig-arg">self</span>)</span><br /> Write a response indicating that the requested resource was temporarily uavailable in this protocol.</td> <td align="right" valign="top"> <span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.writeServiceUnavailableResponse">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html">PorterProtocol</a></code></b>: <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#__init__">__init__</a></code>, <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#connectionLost">connectionLost</a></code>, <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#connectionMade">connectionMade</a></code>, <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#dataReceived">dataReceived</a></code> </p> <div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html">PorterProtocol</a></code></b> (private): <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#_timeout" onclick="show_private();">_timeout</a></code> </p></div> <p class="indent-wrapped-lines"><b>Inherited from <code>twisted.internet.protocol.BaseProtocol</code></b>: <code>__providedBy__</code>, <code>makeConnection</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.extern.log.log.Loggable-class.html">extern.log.log.Loggable</a></code></b>: <code><a href="flumotion.extern.log.log.Loggable-class.html#debug">debug</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#doLog">doLog</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#error">error</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#info">info</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#log">log</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#logFunction">logFunction</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#logObjectName">logObjectName</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#warning">warning</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#warningFailure">warningFailure</a></code>, <code><a href="flumotion.extern.log.log.Loggable-class.html#writeMarker">writeMarker</a></code> </p> </td> </tr> </table> <!-- ==================== CLASS VARIABLES ==================== --> <a name="section-ClassVariables"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Class Variables</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-ClassVariables" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="scheme"></a><span class="summary-name">scheme</span> = <code title="'http'"><code class="variable-quote">'</code><code class="variable-string">http</code><code class="variable-quote">'</code></code> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="protos"></a><span class="summary-name">protos</span> = <code title="['HTTP/1.0', 'HTTP/1.1']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">HTTP/1.0</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">HTTP/1.1</code><code class="variable-quote">'</code><code class="variable-group">]</code></code> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="requestIdParameter"></a><span class="summary-name">requestIdParameter</span> = <code title="'FLUREQID'"><code class="variable-quote">'</code><code class="variable-string">FLUREQID</code><code class="variable-quote">'</code></code> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="requestIdBitsNo"></a><span class="summary-name">requestIdBitsNo</span> = <code title="256">256</code> </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html">PorterProtocol</a></code></b>: <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#MAX_SIZE">MAX_SIZE</a></code>, <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#PORTER_CLIENT_TIMEOUT">PORTER_CLIENT_TIMEOUT</a></code>, <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#delimiters">delimiters</a></code>, <code><a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#logCategory">logCategory</a></code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>twisted.internet.protocol.Protocol</code></b>: <code>__implemented__</code>, <code>__provides__</code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>twisted.internet.protocol.BaseProtocol</code></b>: <code>connected</code>, <code>transport</code> </p> </td> </tr> </table> <!-- ==================== METHOD DETAILS ==================== --> <a name="section-MethodDetails"></a> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td colspan="2" class="table-header"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr valign="top"> <td align="left"><span class="table-header">Method Details</span></td> <td align="right" valign="top" ><span class="options">[<a href="#section-MethodDetails" class="privatelink" onclick="toggle_private();" >hide private</a>]</span></td> </tr> </table> </td> </tr> </table> <a name="parseLine"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">parseLine</span>(<span class="sig-arg">self</span>, <span class="sig-arg">line</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.parseLine">source code</a></span> </td> </tr></table> <p>Parse the initial line of the request. Return an object that can be used to uniquely identify the stream being requested by passing it to extractIdentifier, or None if the request is unreadable.</p> <p>Subclasses should override this.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#parseLine">PorterProtocol.parseLine</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <a name="unparseLine"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">unparseLine</span>(<span class="sig-arg">self</span>, <span class="sig-arg">parsed</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.unparseLine">source code</a></span> </td> </tr></table> <p>Recreate the initial request line from the parsed representation. The recreated line does not need to be exactly identical, but both parsedLine(unparseLine(line)) and line should contain the same information (i.e. unparseLine should not lose information).</p> <p>UnparseLine has to return a valid line from the porter protocol's scheme point of view (for instance, HTTP).</p> <p>Subclasses should override this.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#unparseLine">PorterProtocol.unparseLine</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <a name="generateRequestId"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">generateRequestId</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.generateRequestId">source code</a></span> </td> </tr></table> <p>Return a string that will uniquely identify the request.</p> <p>Subclasses should override this if they want to use request-ids and also implement injectRequestId.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#generateRequestId">PorterProtocol.generateRequestId</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <a name="injectRequestId"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">injectRequestId</span>(<span class="sig-arg">self</span>, <span class="sig-arg">parsed</span>, <span class="sig-arg">requestId</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.injectRequestId">source code</a></span> </td> </tr></table> <p>Take the parsed representation of the first request line and a string token, return a parsed representation of the request line with the request-id possibly mixed into it.</p> <p>Subclasses should override this if they generate request-ids.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#injectRequestId">PorterProtocol.injectRequestId</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <a name="extractIdentifier"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">extractIdentifier</span>(<span class="sig-arg">self</span>, <span class="sig-arg">parsed</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.extractIdentifier">source code</a></span> </td> </tr></table> <p>Extract a string that uniquely identifies the requested stream from the parsed representation of the first request line.</p> <p>Subclasses should override this, depending on how they implemented parseLine.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#extractIdentifier">PorterProtocol.extractIdentifier</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <a name="writeNotFoundResponse"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">writeNotFoundResponse</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.writeNotFoundResponse">source code</a></span> </td> </tr></table> <p>Write a response indicating that the requested resource was not found in this protocol.</p> <p>Subclasses should override this to use the correct protocol.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#writeNotFoundResponse">PorterProtocol.writeNotFoundResponse</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <a name="writeServiceUnavailableResponse"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">writeServiceUnavailableResponse</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="flumotion.component.misc.porter.porter-pysrc.html#HTTPPorterProtocol.writeServiceUnavailableResponse">source code</a></span> </td> </tr></table> <p>Write a response indicating that the requested resource was temporarily uavailable in this protocol.</p> <p>Subclasses should override this to use the correct protocol.</p> <dl class="fields"> <dt>Overrides: <a href="flumotion.component.misc.porter.porter.PorterProtocol-class.html#writeServiceUnavailableResponse">PorterProtocol.writeServiceUnavailableResponse</a> <dd><em class="note">(inherited documentation)</em></dd> </dt> </dl> </td></tr></table> </div> <br /> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> Generated by Epydoc 3.0.1 on Sun Sep 13 13:14:10 2009 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" >http://epydoc.sourceforge.net</a> </td> </tr> </table> <script type="text/javascript"> <!-- // Private objects are initially displayed (because if // javascript is turned off then we want them to be // visible); but by default, we want to hide them. So hide // them unless we have a cookie that says to show them. checkCookie(); // --> </script> </body> </html>