Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 727fa15453fcace956b835e2377d4269 > files > 729

player-doc-3.0.2-5.fc14.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html>
<!-- $Id: header.html 8799 2010-06-28 04:12:42Z jpgr87 $ -->

<HEAD>


<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=utf-8">
<meta name="keywords" content="stage, robot, simulation, player, player/stage">
<link href="doxygen.css" rel="stylesheet" type="text/css">

<style type="text/css">

.floatright { float: right; margin: 0 0 1em 1em; }

body {
  font-family: sans-serif;
  #font-family: Geneva, Verdana, Helvetica, Arial, sans-serif;
  background-color: #FFF;
  color:#000;
}


a:link { 
	color: #A00;
}

a:visited { 
	color: #800;
}

a { text-decoration: none; }
a:hover { text-decoration: underline; }


.timestamp { text-align:right; background-color: #DDD; font-size:75%;}

h1 { 
  font-size:160%; 
}

h2 {
  font-size:110%;
  #color: #FFF;
  #background-color: #666;
  #padding:3px;
}

h3 { text-align:left; }

img {
  border: 0;
}

ul.menu { 
    position:relative;
    left:-2.5em;
    margin-bottom:0px;
    margin-top:0px;
}

ul.menu1 { 
    position:relative;
    left:-2.1em;
    margin-bottom:0px;
    margin-top:0px;
}

li.menu { 
    list-style-type: none;
    position:relative;
    #left:-0.5em;
}


#sidebar { position: absolute; left:0px; padding:2em; top:0em; width:12em;}

#content { position: absolute; left:12em; top:0em; padding-left:3em; padding-right:3em; padding-bottom:2em; margin-top:1em; margin-right:2em; }

div.box { background-color:#EEE; border: 1px solid #000; padding: 0.5ex 0.4em 0.5ex 0.6em; margin:1em;  }
div.title { font-weight:bold; background-color:#eee; margin-bottom:2px;}

div.topbar { position: absolute; top:0px; left:9em; margin:1em; }

</style>

<TITLE>Player Manual</TITLE>

</HEAD>

<body>

<div id="sidebar"> 

<h2 style="text-align:center;">
<a href="index.html">
<img width=140 src="http://playerstage.sourceforge.net/images/player_button_v3.png" alt="Player logo"><br></a>
</h2>



<div class="box">
<div class=title>Player</div>

<ul class=menu>
<li class=menu><a href="index.html">Frontpage</a>
<li class=menu><a href="modules.html">Contents</a>
</ul>
</div>

<div class="box">
<div class=title>User</div>

<ul class=menu>
<li class=menu><a href="install.html">Installation</a>
<li class=menu><a href="start.html">Quick start</a>
<li class=menu><a href="supported_hardware.html">Supported&nbsp;devices</a>
<li class=menu><a href="group__tutorials.html">Tutorials</a>
<li class=menu><a href="group__utils.html">Utilities</a>
<li class=menu><a href="group__clientlibs.html">Client&nbsp;libraries</a>
<li class=menu><a href="http://playerstage.sourceforge.net/wiki/Basic_FAQ">FAQ</a>
<li class=menu><a href="help.html">Help</a>

</ul>
</div>

<div class=box>
<div class="title">Developer</div>
<ul class=menu>
<li class=menu><a href="architecture.html">Architecture</a>
<li class=menu><a href="group__libplayercore.html">libplayercore</a>
<ul class=menu1>
<li class=menu><a href="group__interfaces.html">interfaces</a></li>
</ul>
<li class=menu><a href="group__libplayerdrivers.html">libplayerdrivers</a>
<ul class=menu1>
<li class=menu><a href="group__drivers.html">drivers</a></li>
</ul>
<li class=menu><a href="group__libplayercommon.html">libplayercommon</a>
<li class=menu><a href="group__libplayerutils.html">libplayerutils</a>
<li class=menu><a href="group__libplayersd.html">libplayersd</a>
<li class=menu><a href="group__libplayertcp.html">libplayertcp</a>
<li class=menu><a href="group__libplayerxdr.html">libplayerxdr</a>
<li class=menu><a href="todo.html">TODO</a>
</ul>
</div>

<div class=box>
<!-- <a href="http://sourceforge.net"><img border=0 src="http://sourceforge.net/sflogo.php?group_id=42445&type=1"></a> -->
<div class="title">Online</div>
<a href="http://playerstage.sourceforge.net">Homepage</a><br>
<a href="http://sourceforge.net/project/showfiles.php?group_id=42445">Download</a><br>
<a href="http://sourceforge.net/projects/playerstage">Project</a><br>
<a href="http://sourceforge.net/tracker/?group_id=42445">Bugs</a><br>
<a href="http://sourceforge.net/mail/?group_id=42445">Help</a>
</div>


</div>

<div id="content" >
<!-- Generated by Doxygen 1.7.1 -->
<div class="header">
  <div class="headertitle">
<h1>libplayertcp</h1>  </div>
</div>
<div class="contents">

<p>Player TCP library.  
<a href="#_details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><p><a class="anchor" id="amgrpd41d8cd98f00b204e9800998ecf8427e"></a> </p>
<br/><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0b8f1e24c88d94a636b23e19d2f89dfb"></a><!-- doxytag: member="libplayertcp::PLAYERTCP_EXPORT" ref="ga0b8f1e24c88d94a636b23e19d2f89dfb" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayertcp.html#ga0b8f1e24c88d94a636b23e19d2f89dfb">PLAYERTCP_EXPORT</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default TCP port. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad17dc747d07c14be2cc95969031fe2ed"></a><!-- doxytag: member="libplayertcp::PLAYERTCP_DEFAULT_PORT" ref="gad17dc747d07c14be2cc95969031fe2ed" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayertcp.html#gad17dc747d07c14be2cc95969031fe2ed">PLAYERTCP_DEFAULT_PORT</a>&nbsp;&nbsp;&nbsp;6665</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default TCP port. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayertcp.html#gab1d9776d83146f1a598dfd47fee044dc">PLAYERTCP_READBUFFER_SIZE</a>&nbsp;&nbsp;&nbsp;65536</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">We try to read() incoming messages in chunks of this size.  <a href="#gab1d9776d83146f1a598dfd47fee044dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libplayertcp.html#ga091e4697561ad9aaf65f31591cf071a7">PLAYERTCP_WRITEBUFFER_SIZE</a>&nbsp;&nbsp;&nbsp;65536</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">We try to write() outgoing messages in chunks of this size.  <a href="#ga091e4697561ad9aaf65f31591cf071a7"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Player TCP library. </p>
<p>This library moves messages between Player message queues and TCP sockets.</p>
<h2><a class="anchor" id="datamode_protocol"></a>
Data modes</h2>
<p>Clients can use two modes for receiving data. These are PUSH and PULL modes. There are some important differences between them. These are summarised here. These modes only affect the clients' message queues, that is they do not affect how messages are received from clients.</p>
<p>In PUSH mode all messages are sent as soon as possible. This is usually when there is room in the operating system's buffer for the message. Clients should read these messages as usual. For example, the libplayerc client library will read exactly one message for each call to the client read function.</p>
<p>In PULL mode: </p>
<ul>
<li>
Messages are only sent to the client when they are marked as ready in the client's message queue. </li>
<li>
PLAYER_MSGTYPE_DATA messages are not marked as ready until the client requests data. </li>
<li>
All other messages (PLAYER_MSGTYPE_RESP_ACK and PLAYER_MSGTYPE_RESP_NACK messages) are marked as ready upon entering the queue. </li>
<li>
When a PLAYER_PLAYER_REQ_DATA message is received, all messages in the client's queue are marked as ready. A PLAYER_MSGTYPE_SYNCH message is pushed onto the end of the queue. </li>
</ul>
<p>A client in PULL mode should request data before performing a read by sending a PLAYER_PLAYER_REQ_DATA request message. The client should then continue to receive and handle all messages until it receives the PLAYER_MSGTYPE_SYNCH message. Note that the PLAYER_MSGTYPE_RESP_ACK for the PLAYER_PLAYER_REQ_DATA will come at the <em>end</em> of all other waiting data (but <em>before</em> the PLAYER_MSGTYPE_SYNCH message), due to the way the message queue system functions. This means that client libraries should read and store all other messages when waiting for a PLAYER_MSGTYPE_RESP_ACK, then process them at the beginning of their read function after sending the PLAYER_PLAYER_REQ_DATA message.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000041">Todo:</a></b></dt><dd><ul>
<li>More verbose documentation on this library, including the protocol </li>
</ul>
</dd></dl>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gab1d9776d83146f1a598dfd47fee044dc"></a><!-- doxytag: member="playertcp.h::PLAYERTCP_READBUFFER_SIZE" ref="gab1d9776d83146f1a598dfd47fee044dc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PLAYERTCP_READBUFFER_SIZE&nbsp;&nbsp;&nbsp;65536</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>We try to read() incoming messages in chunks of this size. </p>
<p>We also calloc() and realloc() read buffers in multiples of this size. </p>

</div>
</div>
<a class="anchor" id="ga091e4697561ad9aaf65f31591cf071a7"></a><!-- doxytag: member="playertcp.h::PLAYERTCP_WRITEBUFFER_SIZE" ref="ga091e4697561ad9aaf65f31591cf071a7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PLAYERTCP_WRITEBUFFER_SIZE&nbsp;&nbsp;&nbsp;65536</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>We try to write() outgoing messages in chunks of this size. </p>
<p>We also calloc() and realloc() write buffers in multiples of this size. </p>

</div>
</div>
</div>
<!-- render the modification time of the source file -->


<div class="timestamp">
<hr>

<table style="width:100%;">
<tr>
<td style="text-align:left;">
Last updated 12 September 2005 21:38:45
<!--
<td style="text-align:right;">
<a href="http://validator.w3.org/check/referer"><img style="vertical-align:middle;border:0;width:88px;height:31px"
          src="http://www.w3.org/Icons/valid-html401"
          alt="Valid HTML 4.01!"></a>

 <a href="http://jigsaw.w3.org/css-validator/">
  <img style="vertical-align:middle;border:0;width:88px;height:31px"
       src="http://jigsaw.w3.org/css-validator/images/vcss"
       alt="Valid CSS!">
 </a>
-->
</tr>
</table>
</div>


</tr>
</table>

</BODY>
</HTML>