<?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>VisionEgg.TCPController.SocketListenController</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"> <!-- Home link --> <th> <a href="VisionEgg-module.html">Home</a> </th> <!-- 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> <!-- Project homepage --> <th class="navbar" align="right" width="100%"> <table border="0" cellpadding="0" cellspacing="0"> <tr><th class="navbar" align="center" ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th> </tr></table></th> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0"> <tr valign="top"> <td width="100%"> <span class="breadcrumbs"> <a href="VisionEgg-module.html">Package VisionEgg</a> :: <a href="VisionEgg.TCPController-module.html">Module TCPController</a> :: Class SocketListenController </span> </td> <td> <table cellpadding="0" cellspacing="0"> <!-- hide/show private --> <tr><td align="right"><span class="options" >[<a href="frames.html" target="_top">frames</a >] | <a href="VisionEgg.TCPController.SocketListenController-class.html" target="_top">no frames</a>]</span></td></tr> </table> </td> </tr> </table> <!-- ==================== CLASS DESCRIPTION ==================== --> <h1 class="epydoc">Class SocketListenController</h1><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController">source code</a></span><br /><br /> <pre class="base-tree"> object --+ | <a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+ | <strong class="uidshort">SocketListenController</strong> </pre> <hr /> <pre class="literalblock"> Handle connection from remote machine, control TCPControllers. This meta controller handles a TCP socket to control zero to many instances of TCPController. As a subclass of Controller, it gets called at specified moments in time via the Presentation class. When called in this way, it checks for any strings from the TCP socket. It parses this information into a command or fails and sends an error. This class is analagous to VisionEgg.PyroHelpers.PyroListenController. TCP commands (sent over network socket) ======================================= close -- close the connection exit -- close the connection quit -- quit the server program help -- print help message <name> -- show the value of the controller of <name> <name>=const(<args>) -- assign a new ConstantController to <name> <name>=eval_str(<args>) -- assign a new EvalStringController to <name> <name>=exec_str(<args>) -- assign a new ExecStringController to <name> <name>=exec_str(*<args>) -- assign a new unrestricted namespace ExecStringController to <name> TCP commands are always on a single line. (Newlines in string literals can be specified by using "\n" without the quotes.) The assignment commands share common behavior: <name> -- value passed as argument "tcp_name" to method create_tcp_controller <args> -- during_go [, between_go [, eval_frequency [, temporal_variables [, return_type ]]]] The <args> string is parsed by the Python's eval() function. If you don't want to explicitly set an argument early in the argument list, but you need to set one late in the list, use "None". If not set, the optional arguments default to: eval_frequency = EVERY_FRAME temporal_variables = TIME_SEC_SINCE_GO return_type = (evaluates during_go function to find) between_go = (see below, depends on assignment type) The only difference between the assignment commands are in the first two arguments. For "const(...)", the first two arguments are constant values, for "eval_str(...)" they are strings that evaluate to a single variable, and for "exec_str(...)", they are strings that set the variable "x" in their local namespace, which is then returned. (An unrestricted namespace is available with "exec_str(*...)".) If the argument between_go is set to None or is not defined, the behavior depends on the assignment command. If this is a <name>=const(...) assignment, between_go_value is set to during_go_value. If this is a <name>=eval_str(...) or <name>=exec_str(...) assignment, the correct value cannot be guessed, and therefore the between_go_eval function will never be called (the eval_frequency flag NOT_BETWEEN_GO is set). Because the default value for temporal_variables is TIME_SEC_SINCE_GO, the variable "t" may be safely used in the during_go string for the eval_str or exec_str assignment commands. See the documentation for VisionEgg.FlowControl.EvalStringController for more information. Example commands from TCP port (try with telnet): <name>=const(1.0) <name>=eval_str("t*360.0") <name>=exec_str("x=t*360.0") <name>=const(0.,1.,EVERY_FRAME) <name>=const(1,None,ONCE) <name>=const(1.0,0.0,EVERY_FRAME,TIME_INDEPENDENT,types.FloatType) <name>=eval_str("t*360.0","t_abs*360.0",None,TIME_SEC_ABSOLUTE|TIME_SEC_SINCE_GO) <name>=eval_str("t_abs*360.0","t_abs*360.0",EVERY_FRAME,TIME_SEC_ABSOLUTE,types.FloatType) <name>=exec_str("x=t*360.0","x=0.0",EVERY_FRAME,TIME_SEC_SINCE_GO) <name>=exec_str("print 'Time since go=%f'%(t,)\nx=t*360.0","x=0.0",EVERY_FRAME,TIME_SEC_SINCE_GO) </pre><br /><br /> <!-- ==================== 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 align="left" colspan="2" class="table-header"> <span class="table-header">Instance Methods</span></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="VisionEgg.TCPController.SocketListenController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">socket</span>, <span class="summary-sig-arg">disconnect_ok</span>=<span class="summary-sig-default">0</span>, <span class="summary-sig-arg">server_socket</span>=<span class="summary-sig-default">None</span>, <span class="summary-sig-arg">temporal_variables</span>=<span class="summary-sig-default">VisionEgg.FlowControl.Controller.TIME_INDEPENDENT</span>, <span class="summary-sig-arg">eval_frequency</span>=<span class="summary-sig-default">VisionEgg.FlowControl.Controller.EVERY_FRAME</span>)</span><br /> Instantiated by TCPServer.</td> <td align="right" valign="top"> <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.__init__">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 name="send_raw_text"></a><span class="summary-sig-name">send_raw_text</span>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">text</span>)</span><br /> Send text over the TCP socket.</td> <td align="right" valign="top"> <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.send_raw_text">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="VisionEgg.TCPController.SocketListenController-class.html#create_tcp_controller" class="summary-sig-name">create_tcp_controller</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">tcp_name</span>=<span class="summary-sig-default">None</span>, <span class="summary-sig-arg">initial_controller</span>=<span class="summary-sig-default">None</span>, <span class="summary-sig-arg">require_type</span>=<span class="summary-sig-default">None</span>)</span><br /> Create new instance of TCPController.</td> <td align="right" valign="top"> <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.create_tcp_controller">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="VisionEgg.TCPController.SocketListenController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br /> Check socket and act accordingly.</td> <td align="right" valign="top"> <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.during_go_eval">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="VisionEgg.TCPController.SocketListenController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br /> Check socket and act accordingly.</td> <td align="right" valign="top"> <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.between_go_eval">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="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>: <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code> </p> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__delattr__</code>, <code>__getattribute__</code>, <code>__hash__</code>, <code>__new__</code>, <code>__reduce__</code>, <code>__reduce_ex__</code>, <code>__repr__</code>, <code>__setattr__</code>, <code>__str__</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 align="left" colspan="2" class="table-header"> <span class="table-header">Class Variables</span></td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a href="VisionEgg.TCPController.SocketListenController-class.html#help_string" class="summary-name">help_string</a> = <code title="r""" TCP commands (sent over network socket): close -- close the connection exit -- close the connection quit -- quit the server program help -- print this message <name> -- show the value of the controller of <name> <name>=const(<args>) -- assign a new ConstantController to <name> ...">r""" TCP commands (sent over network socke<code class="variable-ellipsis">...</code></code> </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>: <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>, <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code> </p> </td> </tr> </table> <!-- ==================== PROPERTIES ==================== --> <a name="section-Properties"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Properties</span></td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>: <code>__class__</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 align="left" colspan="2" class="table-header"> <span class="table-header">Method Details</span></td> </tr> </table> <a name="__init__"></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">__init__</span>(<span class="sig-arg">self</span>, <span class="sig-arg">socket</span>, <span class="sig-arg">disconnect_ok</span>=<span class="sig-default">0</span>, <span class="sig-arg">server_socket</span>=<span class="sig-default">None</span>, <span class="sig-arg">temporal_variables</span>=<span class="sig-default">VisionEgg.FlowControl.Controller.TIME_INDEPENDENT</span>, <span class="sig-arg">eval_frequency</span>=<span class="sig-default">VisionEgg.FlowControl.Controller.EVERY_FRAME</span>)</span> <br /><em class="fname">(Constructor)</em> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.__init__">source code</a></span> </td> </table> <pre class="literalblock"> Instantiated by TCPServer. </pre> <dl class="fields"> <dt>Overrides: <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a> </dt> </dl> </td></tr></table> </div> <a name="create_tcp_controller"></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">create_tcp_controller</span>(<span class="sig-arg">self</span>, <span class="sig-arg">tcp_name</span>=<span class="sig-default">None</span>, <span class="sig-arg">initial_controller</span>=<span class="sig-default">None</span>, <span class="sig-arg">require_type</span>=<span class="sig-default">None</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.create_tcp_controller">source code</a></span> </td> </table> <pre class="literalblock"> Create new instance of TCPController. Arguments: tcp_name -- String to reference new TCPController over TCP Optional arguments: initial_controller -- Initial value of TCPController instance require_type -- force this as TCPController instance's return_type </pre> <dl class="fields"> </dl> </td></tr></table> </div> <a name="during_go_eval"></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">during_go_eval</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.during_go_eval">source code</a></span> </td> </table> <pre class="literalblock"> Check socket and act accordingly. Called by instance of Presentation. Overrides base class Controller method. </pre> <dl class="fields"> <dt>Overrides: <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a> </dt> </dl> </td></tr></table> </div> <a name="between_go_eval"></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">between_go_eval</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.between_go_eval">source code</a></span> </td> </table> <pre class="literalblock"> Check socket and act accordingly. Called by instance of Presentation. Overrides base class Controller method. </pre> <dl class="fields"> <dt>Overrides: <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">FlowControl.Controller.between_go_eval</a> </dt> </dl> </td></tr></table> </div> <br /> <!-- ==================== CLASS VARIABLE DETAILS ==================== --> <a name="section-ClassVariableDetails"></a> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Class Variable Details</span></td> </tr> </table> <a name="help_string"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <h3 class="epydoc">help_string</h3> <dl class="fields"> </dl> <dl class="fields"> <dt>Value:</dt> <dd><table><tr><td><pre class="variable"> r""" TCP commands (sent over network socket): close -- close the connection exit -- close the connection quit -- quit the server program help -- print this message <name> -- show the value of the controller of <name> <name>=const(<args>) -- assign a new ConstantController to <name> <code class="variable-ellipsis">...</code> </pre></td></tr></table> </dd> </dl> </td></tr></table> </div> <br /> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Home link --> <th> <a href="VisionEgg-module.html">Home</a> </th> <!-- 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> <!-- Project homepage --> <th class="navbar" align="right" width="100%"> <table border="0" cellpadding="0" cellspacing="0"> <tr><th class="navbar" align="center" ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th> </tr></table></th> </tr> </table> <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> Generated by Epydoc 3.0beta1 on Sat Jun 7 15:40:10 2008 </td> <td align="right" class="footer"> <a 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>