Sophie

Sophie

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

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>MultiClient<br/>
<small>
[<a class="el" href="group__player__clientlib__cplusplus.html">libplayerc++</a>]</small>
</h1>  </div>
</div>
<div class="contents">

<p>How to easily connect to multiple servers.  
<a href="#_details">More...</a></p>
<table class="memberdecls">
</table>
<p>How to easily connect to multiple servers. </p>
<p>The C++ does not have a specific Client class for connecting to multiple servers. This is because the task can be easily accomplished with classes already contained in the STL. The following example shows how this can be done. After the initial setup and adding the clients to the list, the for_each loop needs to be called each time a multi-read is performed.</p>
<div class="fragment"><pre class="fragment"><span class="comment">/*</span>
<span class="comment">Copyright (c) 2005, Brad Kratochvil, Toby Collett, Brian Gerkey, Andrew Howard, ...</span>
<span class="comment">All rights reserved.</span>
<span class="comment"></span>
<span class="comment">Redistribution and use in source and binary forms, with or without</span>
<span class="comment">modification, are permitted provided that the following conditions are met:</span>
<span class="comment"></span>
<span class="comment">    * Redistributions of source code must retain the above copyright notice,</span>
<span class="comment">      this list of conditions and the following disclaimer.</span>
<span class="comment">    * Redistributions in binary form must reproduce the above copyright notice,</span>
<span class="comment">      this list of conditions and the following disclaimer in the documentation</span>
<span class="comment">      and/or other materials provided with the distribution.</span>
<span class="comment">    * Neither the name of the Player Project nor the names of its contributors</span>
<span class="comment">      may be used to endorse or promote products derived from this software</span>
<span class="comment">      without specific prior written permission.</span>
<span class="comment"></span>
<span class="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND</span>
<span class="comment">ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span>
<span class="comment">WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<span class="comment">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR</span>
<span class="comment">ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="comment">(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<span class="comment">LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON</span>
<span class="comment">ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span>
<span class="comment">(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span>
<span class="comment">SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<span class="comment">*/</span>

<span class="preprocessor">#include &lt;libplayerc++/playerc++.h&gt;</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;list&gt;</span>
<span class="preprocessor">#include &lt;algorithm&gt;</span>
<span class="preprocessor">#include &lt;functional&gt;</span>

<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)
{
  <span class="keywordflow">try</span>
  {
    <span class="keyword">using namespace </span>PlayerCc;
    <span class="comment">// Let&#39;s subscribe to a couple of different clients, and</span>
    <span class="comment">// set up a proxy or two.</span>
    PlayerClient client1(<span class="stringliteral">&quot;feyd&quot;</span>);
    CameraProxy  cp1(&amp;client1);

    PlayerClient client2(<span class="stringliteral">&quot;rabban&quot;</span>);
    CameraProxy  cp2(&amp;client2);

    <span class="comment">// We can now create a list of pointers to PlayerClient,</span>
    <span class="comment">// and add two elements</span>
    std::list&lt;PlayerClient*&gt; m_client;
    m_client.push_back(&amp;client1);
    m_client.push_back(&amp;client2);

    <span class="keywordflow">while</span> (1)
    {
      <span class="comment">// this will now iterate through the list of clients and read from</span>
      <span class="comment">// all of them that have data waiting</span>
      std::for_each(m_client.begin(),
                    m_client.end(),
                    std::mem_fun(&amp;<a class="code" href="classPlayerCc_1_1PlayerClient.html#a5950f93871543b416289d66f8eb5b388" title="A nonblocking Read.">PlayerClient::ReadIfWaiting</a>));

      <span class="comment">// output the proxies just for fun</span>
      std::cout &lt;&lt; cp1 &lt;&lt; std::endl;
      std::cout &lt;&lt; cp2 &lt;&lt; std::endl;
    }

  }
  <span class="keywordflow">catch</span> (<a class="code" href="classPlayerCc_1_1PlayerError.html" title="The C++ exception class.">PlayerCc::PlayerError</a> &amp; e)
  {
    std::cerr &lt;&lt; e &lt;&lt; std::endl;
    <span class="keywordflow">return</span> -1;
  }
  <span class="keywordflow">return</span> 1;
}
</pre></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>