Updated Python I2P version 0.91 by sunshine

This commit is contained in:
sunshine
2004-08-02 13:55:41 +00:00
committed by zzz
parent 36fb99a00d
commit 4373956a3f
8 changed files with 53 additions and 892 deletions

View File

@ -0,0 +1,18 @@
#!/usr/local/bin/python
#
# Call the command line interface for Epydoc.
#
# We have to do some path magic to prevent Python from getting
# confused about the difference between this epydoc module, and the
# real epydoc package. So sys.path[0], which contains the directory
# of the script.
import sys, os.path
script_path = os.path.abspath(sys.path[0])
sys.path = [p for p in sys.path if
os.path.abspath(p) != script_path]
from epydoc.cli import cli
cli()

View File

@ -0,0 +1,35 @@
#! /usr/bin/env python
"""
Make epydoc HTML documentation in the 'html' subdirectory.
"""
import epydoc as epydoc_
import inspect
import os, sys
def epydoc(args):
"""Run epydoc (command line) with given argument string."""
os.system('python calldoc.py ' + args)
def makedoc():
"""Make all epydoc HTML documentation for Python I2P library."""
modlist = [
'i2p',
'i2p.eep',
'i2p.tunnel',
'i2p.router',
'i2p.socket',
'i2p.select',
'i2p.samclasses',
'i2p.CGIHTTPServer',
'i2p.SimpleHTTPServer',
'i2p.BaseHTTPServer',
'i2p.SocketServer',
'i2p.pylib'
]
modlist.reverse()
epydoc('--html ' + ' '.join(modlist))
if __name__ == '__main__':
makedoc()

View File

@ -1,40 +0,0 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module i2p.eep</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="i2p.html"><font color="#ffffff">i2p</font></a>.eep</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:///D|/code/i2p/i2p/eep.py">d:\code\i2p\i2p\eep.py</a></font></td></tr></table>
<p><tt>Eeproxy&nbsp;Python&nbsp;API</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="urllib2.html">urllib2</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-urlget"><strong>urlget</strong></a>(url, eepaddr<font color="#909090">='127.0.0.1:4444'</font>)</dt><dd><tt>Get&nbsp;contents&nbsp;of&nbsp;an&nbsp;eepsite.<br>
Example:&nbsp;<a href="#-urlget">urlget</a>('<a href="http://duck.i2p/">http://duck.i2p/</a>').</tt></dd></dl>
<dl><dt><a name="-urlopen"><strong>urlopen</strong></a>(url, eepaddr<font color="#909090">='127.0.0.1:4444'</font>)</dt><dd><tt>Like&nbsp;urllib2.<a href="#-urlopen">urlopen</a>(url),&nbsp;but&nbsp;only&nbsp;works&nbsp;for&nbsp;eep-sites.<br>
Example:&nbsp;f&nbsp;=&nbsp;<a href="#-urlopen">urlopen</a>('<a href="http://duck.i2p/index.html">http://duck.i2p/index.html</a>')</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>eepaddr</strong> = '127.0.0.1:4444'</td></tr></table>
</body></html>

View File

@ -1,90 +0,0 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: package i2p</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>i2p</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:///D|/code/i2p/i2p/__init__.py">d:\code\i2p\i2p\__init__.py</a></font></td></tr></table>
<p><tt>i2p&nbsp;--&nbsp;I2P&nbsp;Python&nbsp;interface</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Package Contents</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="i2p.eep.html">eep</a><br>
</td><td width="25%" valign=top><a href="i2p.router.html">router</a><br>
</td><td width="25%" valign=top><a href="i2p.sam.html">sam</a><br>
</td><td width="25%" valign=top><a href="i2p.samclasses.html">samclasses</a><br>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="i2p.html#Error">Error</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="i2p.html#RouterError">RouterError</a>
</font></dt></dl>
</dd>
</dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Error">class <strong>Error</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Base&nbsp;class&nbsp;for&nbsp;all&nbsp;I2P&nbsp;errors.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="Error-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="Error-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="Error-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="RouterError">class <strong>RouterError</strong></a>(<a href="i2p.html#Error">Error</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Could&nbsp;not&nbsp;connect&nbsp;to&nbsp;router.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="i2p.html#RouterError">RouterError</a></dd>
<dd><a href="i2p.html#Error">Error</a></dd>
<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
</dl>
<hr>
Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="RouterError-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="RouterError-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="RouterError-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>__all__</strong> = ['Error', 'RouterError', 'sam', 'eep', 'router']</td></tr></table>
</body></html>

View File

@ -1,38 +0,0 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module i2p.router</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="i2p.html"><font color="#ffffff">i2p</font></a>.router</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:///D|/code/i2p/i2p/router.py">d:\code\i2p\i2p\router.py</a></font></td></tr></table>
<p><tt>Router&nbsp;Control&nbsp;API&nbsp;for&nbsp;Python</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="i2p.html">i2p</a><br>
<a href="os.html">os</a><br>
</td><td width="25%" valign=top><a href="socket.html">socket</a><br>
<a href="sys.html">sys</a><br>
</td><td width="25%" valign=top><a href="threading.html">threading</a><br>
<a href="time.html">time</a><br>
</td><td width="25%" valign=top><a href="urllib2.html">urllib2</a><br>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>check_addrlist</strong> = ['127.0.0.1:7656', '127.0.0.1:4444']<br>
<strong>our_router</strong> = False<br>
<strong>our_router_lock</strong> = &lt;thread.lock object at 0x008AD0F0&gt;<br>
<strong>router_config</strong> = 'router.config'</td></tr></table>
</body></html>

View File

@ -1,374 +0,0 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module i2p.sam</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="i2p.html"><font color="#ffffff">i2p</font></a>.sam</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:///D|/code/i2p/i2p/sam.py">d:\code\i2p\i2p\sam.py</a></font></td></tr></table>
<p><tt>SAM&nbsp;Python&nbsp;API</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="Queue.html">Queue</a><br>
<a href="copy.html">copy</a><br>
<a href="i2p.html">i2p</a><br>
</td><td width="25%" valign=top><a href="select.html">select</a><br>
<a href="socket.html">socket</a><br>
<a href="i2p.samclasses.html">i2p.samclasses</a><br>
</td><td width="25%" valign=top><a href="thread.html">thread</a><br>
<a href="threading.html">threading</a><br>
<a href="time.html">time</a><br>
</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="i2p.html#Error">i2p.Error</a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="i2p.sam.html#Error">Error</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="i2p.sam.html#BlockError">BlockError</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.sam.html#ClosedError">ClosedError</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.sam.html#NetworkError">NetworkError</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.sam.html#Timeout">Timeout</a>
</font></dt></dl>
</dd>
</dl>
</dd>
<dt><font face="helvetica, arial"><a href="i2p.sam.html#Poll">Poll</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.sam.html#Socket">Socket</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.sam.html#Tunnel">Tunnel</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="i2p.sam.html#TunnelClient">TunnelClient</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.sam.html#TunnelServer">TunnelServer</a>
</font></dt></dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="BlockError">class <strong>BlockError</strong></a>(<a href="i2p.sam.html#Error">Error</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt><a href="#Socket">Socket</a>&nbsp;call&nbsp;would&nbsp;have&nbsp;blocked.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="i2p.sam.html#BlockError">BlockError</a></dd>
<dd><a href="i2p.sam.html#Error">Error</a></dd>
<dd><a href="i2p.html#Error">i2p.Error</a></dd>
<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
</dl>
<hr>
Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="BlockError-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="BlockError-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="BlockError-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ClosedError">class <strong>ClosedError</strong></a>(<a href="i2p.sam.html#Error">Error</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;command&nbsp;was&nbsp;used&nbsp;on&nbsp;a&nbsp;socket&nbsp;that&nbsp;closed&nbsp;gracefully.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="i2p.sam.html#ClosedError">ClosedError</a></dd>
<dd><a href="i2p.sam.html#Error">Error</a></dd>
<dd><a href="i2p.html#Error">i2p.Error</a></dd>
<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
</dl>
<hr>
Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="ClosedError-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="ClosedError-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="ClosedError-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Error">class <strong>Error</strong></a>(<a href="i2p.html#Error">i2p.Error</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Base&nbsp;class&nbsp;for&nbsp;all&nbsp;SAM&nbsp;errors.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="i2p.sam.html#Error">Error</a></dd>
<dd><a href="i2p.html#Error">i2p.Error</a></dd>
<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
</dl>
<hr>
Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="Error-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="Error-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="Error-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="NetworkError">class <strong>NetworkError</strong></a>(<a href="i2p.sam.html#Error">Error</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Network&nbsp;error&nbsp;occurred&nbsp;within&nbsp;I2P.<br>
The&nbsp;error&nbsp;object&nbsp;is&nbsp;a&nbsp;2-tuple:&nbsp;(errtag,&nbsp;errdesc).<br>
errtag&nbsp;is&nbsp;a&nbsp;SAM&nbsp;error&nbsp;string,<br>
errdesc&nbsp;is&nbsp;a&nbsp;human&nbsp;readable&nbsp;error&nbsp;description.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="i2p.sam.html#NetworkError">NetworkError</a></dd>
<dd><a href="i2p.sam.html#Error">Error</a></dd>
<dd><a href="i2p.html#Error">i2p.Error</a></dd>
<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
</dl>
<hr>
Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="NetworkError-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="NetworkError-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="NetworkError-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Poll">class <strong>Poll</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Class&nbsp;implementing&nbsp;poll&nbsp;interface.&nbsp;&nbsp;Works&nbsp;for&nbsp;Python&nbsp;sockets<br>
and&nbsp;SAM&nbsp;sockets.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Poll-__init__"><strong>__init__</strong></a>(self)</dt></dl>
<dl><dt><a name="Poll-poll"><strong>poll</strong></a>(self, timeout<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="Poll-register"><strong>register</strong></a>(self, fd, eventmask<font color="#909090">=13</font>)</dt></dl>
<dl><dt><a name="Poll-unregister"><strong>unregister</strong></a>(self, fd)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Socket">class <strong>Socket</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;socket&nbsp;object.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Socket-__deepcopy__"><strong>__deepcopy__</strong></a>(self, memo)</dt></dl>
<dl><dt><a name="Socket-__init__"><strong>__init__</strong></a>(self, session, type, samaddr<font color="#909090">='127.0.0.1:7656'</font>, **kwargs)</dt><dd><tt>Equivalent&nbsp;to&nbsp;socket().</tt></dd></dl>
<dl><dt><a name="Socket-accept"><strong>accept</strong></a>(self)</dt></dl>
<dl><dt><a name="Socket-bind"><strong>bind</strong></a>(self, address)</dt></dl>
<dl><dt><a name="Socket-close"><strong>close</strong></a>(self)</dt></dl>
<dl><dt><a name="Socket-connect"><strong>connect</strong></a>(self, address)</dt></dl>
<dl><dt><a name="Socket-connect_ex"><strong>connect_ex</strong></a>(self, address)</dt></dl>
<dl><dt><a name="Socket-getpeername"><strong>getpeername</strong></a>(self)</dt></dl>
<dl><dt><a name="Socket-getsockname"><strong>getsockname</strong></a>(self)</dt></dl>
<dl><dt><a name="Socket-gettimeout"><strong>gettimeout</strong></a>(self)</dt></dl>
<dl><dt><a name="Socket-listen"><strong>listen</strong></a>(self, backlog)</dt></dl>
<dl><dt><a name="Socket-makefile"><strong>makefile</strong></a>(self, mode<font color="#909090">='r'</font>, bufsize<font color="#909090">=-1</font>)</dt></dl>
<dl><dt><a name="Socket-recv"><strong>recv</strong></a>(self, bufsize, flags<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="Socket-recvfrom"><strong>recvfrom</strong></a>(self, bufsize, flags<font color="#909090">=0</font>)</dt><dd><tt>For&nbsp;a&nbsp;datagram&nbsp;or&nbsp;raw&nbsp;socket,&nbsp;bufsize&nbsp;=&nbsp;-1&nbsp;indicates&nbsp;that&nbsp;the<br>
entire&nbsp;packet&nbsp;should&nbsp;be&nbsp;retrieved.</tt></dd></dl>
<dl><dt><a name="Socket-send"><strong>send</strong></a>(self, string, flags<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="Socket-sendall"><strong>sendall</strong></a>(self, string, flags<font color="#909090">=0</font>)</dt></dl>
<dl><dt><a name="Socket-sendto"><strong>sendto</strong></a>(self, string, flags, address)</dt></dl>
<dl><dt><a name="Socket-setblocking"><strong>setblocking</strong></a>(self, flag)</dt></dl>
<dl><dt><a name="Socket-settimeout"><strong>settimeout</strong></a>(self, value)</dt></dl>
<hr>
Properties defined here:<br>
<dl><dt><strong>dest</strong></dt>
<dd><tt>Local&nbsp;I2P&nbsp;Destination&nbsp;of&nbsp;socket</tt></dd>
</dl>
<dl><dt><strong>session</strong></dt>
<dd><tt>Session&nbsp;name</tt></dd>
</dl>
<dl><dt><strong>type</strong></dt>
<dd><tt><a href="#Socket">Socket</a>&nbsp;type:&nbsp;SOCK_STREAM,&nbsp;SOCK_DGRAM,&nbsp;or&nbsp;SOCK_RAW.</tt></dd>
</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Timeout">class <strong>Timeout</strong></a>(<a href="i2p.sam.html#Error">Error</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Time&nbsp;out&nbsp;occurred&nbsp;for&nbsp;a&nbsp;socket&nbsp;which&nbsp;had&nbsp;timeouts&nbsp;enabled<br>
via&nbsp;a&nbsp;prior&nbsp;call&nbsp;to&nbsp;settimeout().<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="i2p.sam.html#Timeout">Timeout</a></dd>
<dd><a href="i2p.sam.html#Error">Error</a></dd>
<dd><a href="i2p.html#Error">i2p.Error</a></dd>
<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
</dl>
<hr>
Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><a name="Timeout-__getitem__"><strong>__getitem__</strong></a>(...)</dt></dl>
<dl><dt><a name="Timeout-__init__"><strong>__init__</strong></a>(...)</dt></dl>
<dl><dt><a name="Timeout-__str__"><strong>__str__</strong></a>(...)</dt></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Tunnel">class <strong>Tunnel</strong></a></font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Tunnel-__init__"><strong>__init__</strong></a>(self, receive, make_send, nconnect<font color="#909090">=-1</font>, timeout<font color="#909090">=60.0</font>)</dt><dd><tt>A&nbsp;<a href="#Tunnel">Tunnel</a>&nbsp;relays&nbsp;connections&nbsp;from&nbsp;a&nbsp;'receive'&nbsp;socket&nbsp;to&nbsp;one<br>
or&nbsp;more&nbsp;'send'&nbsp;sockets.&nbsp;&nbsp;The&nbsp;receive&nbsp;socket&nbsp;must&nbsp;be&nbsp;bound<br>
and&nbsp;listening.&nbsp;&nbsp;For&nbsp;each&nbsp;incoming&nbsp;connection,&nbsp;a&nbsp;new&nbsp;send<br>
socket&nbsp;is&nbsp;created&nbsp;by&nbsp;calling&nbsp;make_send().&nbsp;&nbsp;Data&nbsp;is&nbsp;then<br>
exchanged&nbsp;between&nbsp;the&nbsp;created&nbsp;streams&nbsp;until&nbsp;one&nbsp;socket&nbsp;is<br>
closed.&nbsp;&nbsp;nconnect&nbsp;is&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;simultaneous<br>
connections&nbsp;(-1&nbsp;for&nbsp;infinite),&nbsp;and&nbsp;timeout&nbsp;is&nbsp;the&nbsp;time&nbsp;that<br>
a&nbsp;single&nbsp;connection&nbsp;can&nbsp;last&nbsp;for&nbsp;(None&nbsp;allows&nbsp;a&nbsp;connection<br>
to&nbsp;last&nbsp;forever).<br>
&nbsp;<br>
Sockets&nbsp;must&nbsp;accept&nbsp;stream&nbsp;traffic&nbsp;and&nbsp;support&nbsp;the&nbsp;Python<br>
socket&nbsp;interface.&nbsp;&nbsp;A&nbsp;separate&nbsp;daemonic&nbsp;thread&nbsp;is&nbsp;created&nbsp;to<br>
manage&nbsp;the&nbsp;tunnel.&nbsp;&nbsp;For&nbsp;high&nbsp;performance,&nbsp;make_send()&nbsp;should<br>
make&nbsp;a&nbsp;socket&nbsp;and&nbsp;connect&nbsp;in&nbsp;non-blocking&nbsp;mode&nbsp;(you&nbsp;should<br>
catch&nbsp;and&nbsp;discard&nbsp;the&nbsp;sam.<a href="#BlockError">BlockError</a>&nbsp;or&nbsp;socket.error&nbsp;due&nbsp;to<br>
executing&nbsp;connect&nbsp;on&nbsp;a&nbsp;non-blocking&nbsp;socket).<br>
&nbsp;<br>
Security&nbsp;Note:<br>
A&nbsp;firewall&nbsp;is&nbsp;needed&nbsp;to&nbsp;maintain&nbsp;the&nbsp;end&nbsp;user's&nbsp;anonymity.<br>
An&nbsp;attacker&nbsp;could&nbsp;keep&nbsp;a&nbsp;tunnel&nbsp;socket&nbsp;open&nbsp;by&nbsp;pinging&nbsp;it<br>
regularly.&nbsp;&nbsp;The&nbsp;accepted&nbsp;sockets&nbsp;from&nbsp;'receive'&nbsp;must&nbsp;prevent<br>
this&nbsp;by&nbsp;closing&nbsp;down&nbsp;eventually.<br>
&nbsp;<br>
<a href="#Socket">Socket</a>&nbsp;errors&nbsp;do&nbsp;not&nbsp;cause&nbsp;the&nbsp;<a href="#Tunnel">Tunnel</a>&nbsp;to&nbsp;shut&nbsp;down.</tt></dd></dl>
<dl><dt><a name="Tunnel-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;all&nbsp;connections&nbsp;made&nbsp;for&nbsp;this&nbsp;tunnel.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="TunnelClient">class <strong>TunnelClient</strong></a>(<a href="i2p.sam.html#Tunnel">Tunnel</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="TunnelClient-__init__"><strong>__init__</strong></a>(self, session, port, dest, samaddr<font color="#909090">='127.0.0.1:7656'</font>, nconnect<font color="#909090">=-1</font>, timeout<font color="#909090">=None</font>, **kwargs)</dt><dd><tt>Tunnels&nbsp;localhost:port&nbsp;--&gt;&nbsp;I2P&nbsp;Destination&nbsp;dest.<br>
&nbsp;<br>
A&nbsp;session&nbsp;named&nbsp;'session'&nbsp;is&nbsp;created&nbsp;locally,&nbsp;for&nbsp;purposes<br>
of&nbsp;routing&nbsp;to&nbsp;'dest'.&nbsp;&nbsp;nconnect&nbsp;and&nbsp;timeout&nbsp;are&nbsp;the&nbsp;maximum<br>
number&nbsp;of&nbsp;connections&nbsp;and&nbsp;maximum&nbsp;time&nbsp;per&nbsp;connection.&nbsp;&nbsp;All<br>
other&nbsp;arguments&nbsp;are&nbsp;passed&nbsp;to&nbsp;sam.socket().&nbsp;&nbsp;This&nbsp;call&nbsp;blocks<br>
until&nbsp;the&nbsp;tunnel&nbsp;is&nbsp;ready.</tt></dd></dl>
<hr>
Properties defined here:<br>
<dl><dt><strong>dest</strong></dt>
<dd><strong><em>get</em></strong> = 'Local Destination used for routing.'</dd>
</dl>
<dl><dt><strong>remotedest</strong></dt>
<dd><tt>Remote&nbsp;Destination.</tt></dd>
</dl>
<dl><dt><strong>session</strong></dt>
<dd><strong><em>get</em></strong> = 'Session name for local Destination.'</dd>
</dl>
<hr>
Methods inherited from <a href="i2p.sam.html#Tunnel">Tunnel</a>:<br>
<dl><dt><a name="TunnelClient-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;all&nbsp;connections&nbsp;made&nbsp;for&nbsp;this&nbsp;tunnel.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="TunnelServer">class <strong>TunnelServer</strong></a>(<a href="i2p.sam.html#Tunnel">Tunnel</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="TunnelServer-__init__"><strong>__init__</strong></a>(self, session, port, samaddr<font color="#909090">='127.0.0.1:7656'</font>, nconnect<font color="#909090">=-1</font>, timeout<font color="#909090">=None</font>, **kwargs)</dt><dd><tt>Tunnels&nbsp;incoming&nbsp;SAM&nbsp;streams&nbsp;--&gt;&nbsp;localhost:port.<br>
&nbsp;<br>
nconnect&nbsp;and&nbsp;timeout&nbsp;are&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;connections<br>
and&nbsp;maximum&nbsp;time&nbsp;per&nbsp;connection.&nbsp;&nbsp;All&nbsp;other&nbsp;arguments&nbsp;are<br>
passed&nbsp;to&nbsp;sam.socket().&nbsp;&nbsp;This&nbsp;call&nbsp;blocks&nbsp;until&nbsp;the&nbsp;tunnel<br>
is&nbsp;ready.</tt></dd></dl>
<hr>
Properties defined here:<br>
<dl><dt><strong>dest</strong></dt>
<dd><tt>I2P&nbsp;Destination&nbsp;of&nbsp;server.</tt></dd>
</dl>
<dl><dt><strong>session</strong></dt>
<dd><tt>Session&nbsp;name&nbsp;for&nbsp;server.</tt></dd>
</dl>
<hr>
Methods inherited from <a href="i2p.sam.html#Tunnel">Tunnel</a>:<br>
<dl><dt><a name="TunnelServer-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;all&nbsp;connections&nbsp;made&nbsp;for&nbsp;this&nbsp;tunnel.</tt></dd></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>MAX_DGRAM</strong> = 31744<br>
<strong>MAX_RAW</strong> = 32768<br>
<strong>MSG_DONTWAIT</strong> = 128<br>
<strong>MSG_PEEK</strong> = 2<br>
<strong>MSG_WAITALL</strong> = 64<br>
<strong>POLLERR</strong> = 8<br>
<strong>POLLHUP</strong> = 16<br>
<strong>POLLIN</strong> = 1<br>
<strong>POLLNVAL</strong> = 32<br>
<strong>POLLOUT</strong> = 4<br>
<strong>POLLPRI</strong> = 1<br>
<strong>SOCK_DGRAM</strong> = 2<br>
<strong>SOCK_RAW</strong> = 3<br>
<strong>SOCK_STREAM</strong> = 1<br>
<strong>samaddr</strong> = '127.0.0.1:7656'<br>
<strong>samver</strong> = 1.0</td></tr></table>
</body></html>

View File

@ -1,314 +0,0 @@
<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module i2p.samclasses</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="i2p.html"><font color="#ffffff">i2p</font></a>.samclasses</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:///D|/code/i2p/i2p/samclasses.py">d:\code\i2p\i2p\samclasses.py</a></font></td></tr></table>
<p><tt>Lower-level&nbsp;SAM&nbsp;API,&nbsp;interfaces&nbsp;with&nbsp;SAM&nbsp;Bridge.<br>
&nbsp;<br>
For&nbsp;internal&nbsp;use&nbsp;only.<br>
&nbsp;<br>
Use&nbsp;the&nbsp;higher&nbsp;level&nbsp;i2p.sam&nbsp;module&nbsp;for&nbsp;your&nbsp;own&nbsp;programs.<br>
&nbsp;<br>
For&nbsp;details&nbsp;on&nbsp;SAM,&nbsp;see&nbsp;"Simple&nbsp;Anonymous&nbsp;Messaging&nbsp;(SAM)&nbsp;v1.0,"<br>
as&nbsp;published&nbsp;by&nbsp;jrandom.<br>
&nbsp;<br>
Class&nbsp;Overview:<br>
&nbsp;<br>
&nbsp;&nbsp;<a href="#SAMTerminal">SAMTerminal</a>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Message&nbsp;sender/reader,&nbsp;talks&nbsp;to&nbsp;SAM&nbsp;Bridge<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;through&nbsp;a&nbsp;single&nbsp;socket.<br>
&nbsp;&nbsp;<a href="#StringBuffer">StringBuffer</a>:&nbsp;&nbsp;&nbsp;&nbsp;Queue&nbsp;for&nbsp;character&nbsp;data.<br>
&nbsp;&nbsp;<a href="#BaseSession">BaseSession</a>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAM&nbsp;session&nbsp;classes&nbsp;are&nbsp;derived&nbsp;from&nbsp;this.<br>
&nbsp;&nbsp;<a href="#StreamSession">StreamSession</a>:&nbsp;&nbsp;&nbsp;Manipulate&nbsp;a&nbsp;SAM&nbsp;stream&nbsp;session&nbsp;through&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadsafe,&nbsp;high-level&nbsp;interface.<br>
&nbsp;&nbsp;<a href="#DatagramSession">DatagramSession</a>:&nbsp;SAM&nbsp;datagram&nbsp;session,&nbsp;threadsafe,&nbsp;high&nbsp;level.<br>
&nbsp;&nbsp;<a href="#RawSession">RawSession</a>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAM&nbsp;raw&nbsp;session,&nbsp;threadsafe,&nbsp;high&nbsp;level.<br>
&nbsp;<br>
Note&nbsp;that&nbsp;a&nbsp;'None'&nbsp;timeout&nbsp;is&nbsp;an&nbsp;infinite&nbsp;timeout:&nbsp;it<br>
blocks&nbsp;forever&nbsp;if&nbsp;necessary.<br>
&nbsp;<br>
Todo:<br>
&nbsp;&nbsp;*&nbsp;Error&nbsp;handling&nbsp;is&nbsp;a&nbsp;huge&nbsp;mess.&nbsp;&nbsp;Neaten&nbsp;it&nbsp;up.<br>
&nbsp;&nbsp;&nbsp;&nbsp;Subclass&nbsp;a&nbsp;ErrorMixin&nbsp;class,&nbsp;then&nbsp;use&nbsp;set_error(e),<br>
&nbsp;&nbsp;&nbsp;&nbsp;check_error(),&nbsp;get_error().<br>
&nbsp;&nbsp;*&nbsp;Streams&nbsp;are&nbsp;a&nbsp;huge&nbsp;mess.&nbsp;&nbsp;Neaten&nbsp;them&nbsp;up.<br>
&nbsp;&nbsp;*&nbsp;This&nbsp;whole&nbsp;interface&nbsp;is&nbsp;a&nbsp;tad&nbsp;confusing.&nbsp;&nbsp;Neaten&nbsp;it&nbsp;up.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="Queue.html">Queue</a><br>
<a href="i2p.html">i2p</a><br>
<a href="random.html">random</a><br>
</td><td width="25%" valign=top><a href="shlex.html">shlex</a><br>
<a href="socket.html">socket</a><br>
<a href="string.html">string</a><br>
</td><td width="25%" valign=top><a href="sys.html">sys</a><br>
<a href="thread.html">thread</a><br>
<a href="threading.html">threading</a><br>
</td><td width="25%" valign=top><a href="time.html">time</a><br>
<a href="traceback.html">traceback</a><br>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="i2p.samclasses.html#BaseSession">BaseSession</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="i2p.samclasses.html#DatagramSession">DatagramSession</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.samclasses.html#RawSession">RawSession</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.samclasses.html#StreamSession">StreamSession</a>
</font></dt></dl>
</dd>
<dt><font face="helvetica, arial"><a href="i2p.samclasses.html#Deque">Deque</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="i2p.samclasses.html#StringBuffer">StringBuffer</a>
</font></dt></dl>
</dd>
<dt><font face="helvetica, arial"><a href="i2p.samclasses.html#SAMTerminal">SAMTerminal</a>
</font></dt><dt><font face="helvetica, arial"><a href="i2p.samclasses.html#Stream">Stream</a>
</font></dt></dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="BaseSession">class <strong>BaseSession</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Base&nbsp;session,&nbsp;from&nbsp;which&nbsp;<a href="#StreamSession">StreamSession</a>,&nbsp;<a href="#DatagramSession">DatagramSession</a>,<br>
and&nbsp;<a href="#RawSession">RawSession</a>&nbsp;are&nbsp;derived.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="BaseSession-__init__"><strong>__init__</strong></a>(self, addr<font color="#909090">=''</font>)</dt></dl>
<dl><dt><a name="BaseSession-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;session.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="DatagramSession">class <strong>DatagramSession</strong></a>(<a href="i2p.samclasses.html#BaseSession">BaseSession</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Datagram&nbsp;session.&nbsp;&nbsp;All&nbsp;methods&nbsp;are&nbsp;blocking&nbsp;and&nbsp;threadsafe.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="DatagramSession-__init__"><strong>__init__</strong></a>(self, name, addr<font color="#909090">=''</font>, **kwargs)</dt></dl>
<dl><dt><a name="DatagramSession-__len__"><strong>__len__</strong></a>(self)</dt><dd><tt>Number&nbsp;of&nbsp;packets&nbsp;in&nbsp;read&nbsp;buffer.</tt></dd></dl>
<dl><dt><a name="DatagramSession-recv"><strong>recv</strong></a>(self, timeout<font color="#909090">=None</font>, peek<font color="#909090">=False</font>)</dt><dd><tt>Get&nbsp;a&nbsp;single&nbsp;packet.&nbsp;&nbsp;Blocks&nbsp;for&nbsp;up&nbsp;to&nbsp;timeout&nbsp;seconds&nbsp;if<br>
n&nbsp;&gt;&nbsp;0&nbsp;and&nbsp;no&nbsp;packet&nbsp;is&nbsp;available&nbsp;(timeout=None&nbsp;means&nbsp;wait<br>
forever).&nbsp;&nbsp;If&nbsp;still&nbsp;no&nbsp;packet&nbsp;is&nbsp;available,&nbsp;raises&nbsp;BlockError<br>
or&nbsp;Timeout.&nbsp;&nbsp;Returns&nbsp;the&nbsp;pair&nbsp;(data,&nbsp;address).&nbsp;&nbsp;If&nbsp;peek&nbsp;is<br>
True,&nbsp;the&nbsp;data&nbsp;is&nbsp;not&nbsp;removed.</tt></dd></dl>
<dl><dt><a name="DatagramSession-send"><strong>send</strong></a>(self, s, dest)</dt><dd><tt>Send&nbsp;packet&nbsp;with&nbsp;contents&nbsp;s&nbsp;to&nbsp;given&nbsp;destination.</tt></dd></dl>
<hr>
Methods inherited from <a href="i2p.samclasses.html#BaseSession">BaseSession</a>:<br>
<dl><dt><a name="DatagramSession-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;session.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Deque">class <strong>Deque</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;double-ended&nbsp;queue.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Deque-__init__"><strong>__init__</strong></a>(self)</dt></dl>
<dl><dt><a name="Deque-__len__"><strong>__len__</strong></a>(self)</dt><dd><tt>Number&nbsp;of&nbsp;items&nbsp;in&nbsp;the&nbsp;deque.</tt></dd></dl>
<dl><dt><a name="Deque-pop_first"><strong>pop_first</strong></a>(self)</dt><dd><tt>Pop&nbsp;an&nbsp;item&nbsp;off&nbsp;the&nbsp;beginning&nbsp;of&nbsp;the&nbsp;deque,&nbsp;and&nbsp;return&nbsp;it.</tt></dd></dl>
<dl><dt><a name="Deque-pop_last"><strong>pop_last</strong></a>(self)</dt><dd><tt>Pop&nbsp;an&nbsp;item&nbsp;off&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;deque,&nbsp;and&nbsp;return&nbsp;it.</tt></dd></dl>
<dl><dt><a name="Deque-push_first"><strong>push_first</strong></a>(self, obj)</dt><dd><tt>Prepend&nbsp;obj&nbsp;to&nbsp;the&nbsp;beginning&nbsp;of&nbsp;the&nbsp;deque.</tt></dd></dl>
<dl><dt><a name="Deque-push_last"><strong>push_last</strong></a>(self, obj)</dt><dd><tt>Append&nbsp;obj&nbsp;to&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;deque.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="RawSession">class <strong>RawSession</strong></a>(<a href="i2p.samclasses.html#BaseSession">BaseSession</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Raw&nbsp;session.&nbsp;&nbsp;All&nbsp;methods&nbsp;are&nbsp;blocking&nbsp;and&nbsp;threadsafe.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="RawSession-__init__"><strong>__init__</strong></a>(self, name, addr<font color="#909090">=''</font>, **kwargs)</dt></dl>
<dl><dt><a name="RawSession-__len__"><strong>__len__</strong></a>(self)</dt><dd><tt>Number&nbsp;of&nbsp;packets&nbsp;in&nbsp;read&nbsp;buffer.</tt></dd></dl>
<dl><dt><a name="RawSession-recv"><strong>recv</strong></a>(self, timeout<font color="#909090">=None</font>, peek<font color="#909090">=False</font>)</dt><dd><tt>Identical&nbsp;to&nbsp;DatagramSocket.recv.&nbsp;&nbsp;The&nbsp;from&nbsp;address&nbsp;is&nbsp;an<br>
empty&nbsp;string.</tt></dd></dl>
<dl><dt><a name="RawSession-send"><strong>send</strong></a>(self, s, dest)</dt><dd><tt>Send&nbsp;packet&nbsp;with&nbsp;contents&nbsp;s&nbsp;to&nbsp;given&nbsp;destination.</tt></dd></dl>
<hr>
Methods inherited from <a href="i2p.samclasses.html#BaseSession">BaseSession</a>:<br>
<dl><dt><a name="RawSession-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;session.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="SAMTerminal">class <strong>SAMTerminal</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Message-by-message&nbsp;communication&nbsp;with&nbsp;SAM&nbsp;through&nbsp;a&nbsp;single<br>
socket.&nbsp;&nbsp;_on_*&nbsp;messages&nbsp;are&nbsp;dispatched&nbsp;to&nbsp;msgobj.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="SAMTerminal-__init__"><strong>__init__</strong></a>(self, addr, msgobj)</dt></dl>
<dl><dt><a name="SAMTerminal-check"><strong>check</strong></a>(self)</dt><dd><tt>Raise&nbsp;an&nbsp;error&nbsp;if&nbsp;terminal&nbsp;was&nbsp;closed,&nbsp;otherwise&nbsp;do<br>
nothing.</tt></dd></dl>
<dl><dt><a name="SAMTerminal-check_message"><strong>check_message</strong></a>(self, kwargs)</dt><dd><tt>Raises&nbsp;an&nbsp;error&nbsp;if&nbsp;kwargs['RESULT']&nbsp;!=&nbsp;'OK'.</tt></dd></dl>
<dl><dt><a name="SAMTerminal-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;SAM&nbsp;terminal.</tt></dd></dl>
<dl><dt><a name="SAMTerminal-on_message"><strong>on_message</strong></a>(self, msg, kwargs)</dt><dd><tt>Process&nbsp;a&nbsp;SAM&nbsp;message&nbsp;that&nbsp;was&nbsp;received.&nbsp;&nbsp;Dispatch&nbsp;to<br>
_on_MESSAGE_NAME(**kwargs).</tt></dd></dl>
<dl><dt><a name="SAMTerminal-queue_get"><strong>queue_get</strong></a>(self, q)</dt><dd><tt>Identical&nbsp;to&nbsp;q.get()&nbsp;unless&nbsp;a&nbsp;call&nbsp;to&nbsp;<a href="#SAMTerminal-check">check</a>()&nbsp;fails,<br>
in&nbsp;which&nbsp;case&nbsp;the&nbsp;waiting&nbsp;is&nbsp;cut&nbsp;short&nbsp;with&nbsp;an&nbsp;error.</tt></dd></dl>
<dl><dt><a name="SAMTerminal-send_message"><strong>send_message</strong></a>(self, msg)</dt><dd><tt>Send&nbsp;a&nbsp;message&nbsp;to&nbsp;the&nbsp;SAM&nbsp;bridge.&nbsp;&nbsp;A&nbsp;newline&nbsp;will&nbsp;be<br>
automatically&nbsp;added&nbsp;if&nbsp;none&nbsp;is&nbsp;present.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Stream">class <strong>Stream</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Receives&nbsp;and&nbsp;sends&nbsp;data&nbsp;for&nbsp;an&nbsp;individual&nbsp;stream.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Stream-__del__"><strong>__del__</strong></a>(self)</dt></dl>
<dl><dt><a name="Stream-__init__"><strong>__init__</strong></a>(self, parent, remotedest, id, didconnect<font color="#909090">=True</font>)</dt></dl>
<dl><dt><a name="Stream-__len__"><strong>__len__</strong></a>(self)</dt><dd><tt>Current&nbsp;length&nbsp;of&nbsp;read&nbsp;buffer.</tt></dd></dl>
<dl><dt><a name="Stream-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;stream.&nbsp;&nbsp;Threadsafe.</tt></dd></dl>
<dl><dt><a name="Stream-on_close"><strong>on_close</strong></a>(self, e)</dt></dl>
<dl><dt><a name="Stream-on_receive"><strong>on_receive</strong></a>(self, s)</dt></dl>
<dl><dt><a name="Stream-recv"><strong>recv</strong></a>(self, n, timeout<font color="#909090">=None</font>, peek<font color="#909090">=False</font>, waitall<font color="#909090">=False</font>)</dt><dd><tt>Reads&nbsp;up&nbsp;to&nbsp;n&nbsp;bytes&nbsp;in&nbsp;a&nbsp;manner&nbsp;identical&nbsp;to&nbsp;socket.recv.<br>
Blocks&nbsp;for&nbsp;up&nbsp;to&nbsp;timeout&nbsp;seconds&nbsp;if&nbsp;n&nbsp;&gt;&nbsp;0&nbsp;and&nbsp;no&nbsp;data&nbsp;is<br>
available&nbsp;(timeout=None&nbsp;means&nbsp;wait&nbsp;forever).&nbsp;&nbsp;If&nbsp;still&nbsp;no&nbsp;data<br>
is&nbsp;available,&nbsp;raises&nbsp;BlockError&nbsp;or&nbsp;Timeout.&nbsp;&nbsp;For&nbsp;a&nbsp;closed<br>
stream,&nbsp;recv&nbsp;will&nbsp;read&nbsp;the&nbsp;data&nbsp;stored&nbsp;in&nbsp;the&nbsp;buffer&nbsp;until<br>
EOF,&nbsp;at&nbsp;which&nbsp;point&nbsp;the&nbsp;read&nbsp;data&nbsp;will&nbsp;be&nbsp;truncated.&nbsp;&nbsp;If&nbsp;peek<br>
is&nbsp;True,&nbsp;the&nbsp;data&nbsp;is&nbsp;not&nbsp;removed.&nbsp;&nbsp;If&nbsp;waitall&nbsp;is&nbsp;True,&nbsp;reads<br>
exactly&nbsp;n&nbsp;bytes,&nbsp;or&nbsp;raises&nbsp;BlockError&nbsp;or&nbsp;Timeout&nbsp;as<br>
appropriate.&nbsp;&nbsp;Returns&nbsp;data.</tt></dd></dl>
<dl><dt><a name="Stream-send"><strong>send</strong></a>(self, s)</dt><dd><tt>Sends&nbsp;the&nbsp;string&nbsp;s,&nbsp;blocking&nbsp;if&nbsp;necessary.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="StreamSession">class <strong>StreamSession</strong></a>(<a href="i2p.samclasses.html#BaseSession">BaseSession</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt><a href="#Stream">Stream</a>&nbsp;session.&nbsp;&nbsp;All&nbsp;methods&nbsp;are&nbsp;blocking&nbsp;and&nbsp;threadsafe.<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="StreamSession-__init__"><strong>__init__</strong></a>(self, name, addr<font color="#909090">=''</font>, **kwargs)</dt></dl>
<dl><dt><a name="StreamSession-__len__"><strong>__len__</strong></a>(self)</dt><dd><tt>Unconnected&nbsp;session;&nbsp;has&nbsp;no&nbsp;read&nbsp;data&nbsp;available.</tt></dd></dl>
<dl><dt><a name="StreamSession-accept"><strong>accept</strong></a>(self, timeout<font color="#909090">=None</font>)</dt><dd><tt>Wait&nbsp;for&nbsp;incoming&nbsp;connection,&nbsp;and&nbsp;return&nbsp;a&nbsp;<a href="#Stream">Stream</a>&nbsp;object<br>
for&nbsp;it.</tt></dd></dl>
<dl><dt><a name="StreamSession-connect"><strong>connect</strong></a>(self, dest, timeout<font color="#909090">=None</font>)</dt><dd><tt>Create&nbsp;a&nbsp;stream&nbsp;connected&nbsp;to&nbsp;remote&nbsp;destination&nbsp;'dest'.&nbsp;&nbsp;The<br>
id&nbsp;is&nbsp;random.&nbsp;&nbsp;If&nbsp;the&nbsp;timeout&nbsp;is&nbsp;exceeded,&nbsp;do&nbsp;NOT&nbsp;raise&nbsp;an<br>
error;&nbsp;rather,&nbsp;return&nbsp;a&nbsp;<a href="#Stream">Stream</a>&nbsp;object&nbsp;with&nbsp;.didconnect&nbsp;set<br>
to&nbsp;False.</tt></dd></dl>
<dl><dt><a name="StreamSession-listen"><strong>listen</strong></a>(self, backlog)</dt><dd><tt>Set&nbsp;maximum&nbsp;number&nbsp;of&nbsp;queued&nbsp;connections.</tt></dd></dl>
<hr>
Methods inherited from <a href="i2p.samclasses.html#BaseSession">BaseSession</a>:<br>
<dl><dt><a name="StreamSession-close"><strong>close</strong></a>(self)</dt><dd><tt>Close&nbsp;the&nbsp;session.</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="StringBuffer">class <strong>StringBuffer</strong></a>(<a href="i2p.samclasses.html#Deque">Deque</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;FIFO&nbsp;for&nbsp;characters.&nbsp;&nbsp;Strings&nbsp;can&nbsp;be&nbsp;efficiently<br>
appended&nbsp;to&nbsp;the&nbsp;end,&nbsp;and&nbsp;read&nbsp;from&nbsp;the&nbsp;beginning.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;B&nbsp;=&nbsp;<a href="#StringBuffer">StringBuffer</a>('Hello&nbsp;W')<br>
&nbsp;&nbsp;B.<a href="#StringBuffer-append">append</a>('orld!')<br>
&nbsp;&nbsp;print&nbsp;B.<a href="#StringBuffer-read">read</a>(5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;'Hello'<br>
&nbsp;&nbsp;print&nbsp;B.<a href="#StringBuffer-read">read</a>()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;'World!'<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="StringBuffer-__init__"><strong>__init__</strong></a>(self, s<font color="#909090">=''</font>)</dt></dl>
<dl><dt><a name="StringBuffer-__len__"><strong>__len__</strong></a>(self)</dt></dl>
<dl><dt><a name="StringBuffer-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="StringBuffer-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<dl><dt><a name="StringBuffer-append"><strong>append</strong></a>(self, s)</dt><dd><tt>Append&nbsp;string&nbsp;data&nbsp;to&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;buffer.</tt></dd></dl>
<dl><dt><a name="StringBuffer-peek"><strong>peek</strong></a>(self, n<font color="#909090">=None</font>)</dt><dd><tt>Like&nbsp;<a href="#StringBuffer-read">read</a>(),&nbsp;but&nbsp;do&nbsp;not&nbsp;remove&nbsp;the&nbsp;data&nbsp;that&nbsp;is&nbsp;returned.</tt></dd></dl>
<dl><dt><a name="StringBuffer-prepend"><strong>prepend</strong></a>(self, s)</dt><dd><tt>Prepend&nbsp;string&nbsp;data&nbsp;to&nbsp;the&nbsp;beginning&nbsp;of&nbsp;the&nbsp;buffer.</tt></dd></dl>
<dl><dt><a name="StringBuffer-read"><strong>read</strong></a>(self, n<font color="#909090">=None</font>)</dt><dd><tt>Read&nbsp;n&nbsp;bytes&nbsp;of&nbsp;data&nbsp;(or&nbsp;less&nbsp;if&nbsp;less&nbsp;data&nbsp;available)&nbsp;from&nbsp;the<br>
beginning&nbsp;of&nbsp;the&nbsp;buffer.&nbsp;&nbsp;The&nbsp;data&nbsp;is&nbsp;removed.&nbsp;&nbsp;If&nbsp;n&nbsp;is<br>
omitted,&nbsp;read&nbsp;the&nbsp;entire&nbsp;buffer.</tt></dd></dl>
<hr>
Methods inherited from <a href="i2p.samclasses.html#Deque">Deque</a>:<br>
<dl><dt><a name="StringBuffer-pop_first"><strong>pop_first</strong></a>(self)</dt><dd><tt>Pop&nbsp;an&nbsp;item&nbsp;off&nbsp;the&nbsp;beginning&nbsp;of&nbsp;the&nbsp;deque,&nbsp;and&nbsp;return&nbsp;it.</tt></dd></dl>
<dl><dt><a name="StringBuffer-pop_last"><strong>pop_last</strong></a>(self)</dt><dd><tt>Pop&nbsp;an&nbsp;item&nbsp;off&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;deque,&nbsp;and&nbsp;return&nbsp;it.</tt></dd></dl>
<dl><dt><a name="StringBuffer-push_first"><strong>push_first</strong></a>(self, obj)</dt><dd><tt>Prepend&nbsp;obj&nbsp;to&nbsp;the&nbsp;beginning&nbsp;of&nbsp;the&nbsp;deque.</tt></dd></dl>
<dl><dt><a name="StringBuffer-push_last"><strong>push_last</strong></a>(self, obj)</dt><dd><tt>Append&nbsp;obj&nbsp;to&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;deque.</tt></dd></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>sam_log</strong> = False</td></tr></table>
</body></html>

View File

@ -1,36 +0,0 @@
# -------------------------------------------------------------
# makedoc.py: Make pydoc documentation for Python SAM API
# -------------------------------------------------------------
import os, inspect
import pydoc as pydoc_
def pydoc(args):
"""Run pydoc (command line) with given argument string."""
filename = inspect.getsourcefile(pydoc_)
os.system('python ' + filename + ' ' + args)
def move(f1, f2):
"""Moves filename f1 to filename f2, overwriting if f2 already exists."""
try: os.remove(f2)
except: pass
os.rename(f1, f2)
def makedoc():
"""Make all HTML documentation for Python I2P library."""
modules = ['i2p', 'i2p.sam', 'i2p.eep', 'i2p.router', 'i2p.samclasses']
origdir = os.getcwd()
os.chdir('../..')
for m in modules:
pydoc('-w ' + m)
os.chdir(origdir)
for m in modules:
move('../../' + m + '.html', './' + m + '.html')
if __name__ == '__main__':
makedoc()