<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>RCF: RCF::RcfServer Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.5 -->
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main Page</span></a></li>
<li id="current"><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="dirs.html"><span>Directories</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="classes.html"><span>Alphabetical List</span></a></li>
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
<li><a href="functions.html"><span>Data Fields</span></a></li>
</ul></div>
<div class="nav">
<b>RCF</b>::<a class="el" href="class_r_c_f_1_1_rcf_server.html">RcfServer</a></div>
<h1>RCF::RcfServer Class Reference</h1><!-- doxytag: class="RCF::RcfServer" --><!-- doxytag: inherits="RCF::I_SessionManager" --><code>#include <<a class="el" href="_rcf_server_8hpp-source.html">RcfServer.hpp</a>></code>
<p>
<p>Inheritance diagram for RCF::RcfServer:
<p><center><img src="class_r_c_f_1_1_rcf_server.png" usemap="#RCF::RcfServer_map" border="0" alt=""></center>
<map name="RCF::RcfServer_map">
<area href="class_r_c_f_1_1_i___session_manager.html" alt="RCF::I_SessionManager" shape="rect" coords="0,0,148,24">
</map>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Server class, supporting pluggable transports and services.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#30dccd4586556317befa986411eb7908">RcfServer</a> (const <a class="el" href="class_r_c_f_1_1_i___endpoint.html">I_Endpoint</a> &endpoint)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#30dccd4586556317befa986411eb7908"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#17b1fdbdd68baa513a934dbf65f1f9ad">RcfServer</a> (ServicePtr servicePtr)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#17b1fdbdd68baa513a934dbf65f1f9ad"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#9bd676bca69d6389dc702fd34b6882e1">RcfServer</a> (ServerTransportPtr serverTransportPtr)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#9bd676bca69d6389dc702fd34b6882e1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0a78239b3654810132ab27c1c8b91e05"></a><!-- doxytag: member="RCF::RcfServer::~RcfServer" ref="0a78239b3654810132ab27c1c8b91e05" args="()" -->
</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#0a78239b3654810132ab27c1c8b91e05">~RcfServer</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#98e104395628f6854b419f163676588d">start</a> (bool spawnThreads=true)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Starts the server, by starting all services, including transports. <a href="#98e104395628f6854b419f163676588d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#810f898e957abbc4c469139a4fb5565e">addJoinFunctor</a> (JoinFunctor joinFunctor)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a join functor to the server, to be called when stopping the server. <a href="#810f898e957abbc4c469139a4fb5565e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#3247d4f82a31b7281f0ad9afb6efba65">startInThisThread</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Starts the server, by taking over the current thread. <a href="#3247d4f82a31b7281f0ad9afb6efba65"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#d94367f7d2741cc409307e8fd0b22ff3">startInThisThread</a> (JoinFunctor joinFunctor)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Starts the server, by taking over the current thread. <a href="#d94367f7d2741cc409307e8fd0b22ff3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#993d42d38cd846e81c3b04ac119078ee">stop</a> (bool wait=true)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Stops the server. <a href="#993d42d38cd846e81c3b04ac119078ee"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#1df12cd9c50a0a2b9b5c34faefa8cece">cycle</a> (int timeoutMs=0)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Cycles all services, including transports. <a href="#1df12cd9c50a0a2b9b5c34faefa8cece"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#b57706df5e0a6ed3ecff290eb14f31ba">cycleSessions</a> (int timeoutMs, const volatile bool &stopFlag)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Cycles the server's thread-specific session queue. <a href="#b57706df5e0a6ed3ecff290eb14f31ba"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bc236d7592f97be4031af3df84fa602a"></a><!-- doxytag: member="RCF::RcfServer::open" ref="bc236d7592f97be4031af3df84fa602a" args="()" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#bc236d7592f97be4031af3df84fa602a">open</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Opens all services, including transports. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="188bb2749480028e2c32415766917412"></a><!-- doxytag: member="RCF::RcfServer::close" ref="188bb2749480028e2c32415766917412" args="()" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#188bb2749480028e2c32415766917412">close</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Closes all services, including transports. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_r_c_f_1_1_i___server_transport.html">I_ServerTransport</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#f8dd420bf0f38b002557b6e0159bf9df">getServerTransport</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a reference to the primary server transport. <a href="#f8dd420bf0f38b002557b6e0159bf9df"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">boost::shared_ptr< <a class="el" href="class_r_c_f_1_1_i___server_transport.html">I_ServerTransport</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#89e9512cfa798dd5106eb41023090be9">getServerTransportPtr</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a shared pointer to the primary server transport. <a href="#89e9512cfa798dd5106eb41023090be9"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template<typename InterfaceT, typename ImplementationT> </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#5d606416d4505fe8691e7f57d46a2d61">bind</a> (ImplementationT &x, const std::string &name="")</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Binds a reference to an object, to an interface. <a href="#5d606416d4505fe8691e7f57d46a2d61"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template<typename InterfaceT, typename ImplementationT> </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#1dd822f4d2d254cfcef933d8c10e8e4c">bind</a> (boost::shared_ptr< ImplementationT > px, const std::string &name="")</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Binds a shared pointer to an object, to an interface. <a href="#1dd822f4d2d254cfcef933d8c10e8e4c"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template<typename InterfaceT, typename ImplementationT> </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#bfd91216ed26b93387837f60658b2d7d">bind</a> (boost::weak_ptr< ImplementationT > px, const std::string &name="")</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Binds a weak pointer to an object, to an interface. <a href="#bfd91216ed26b93387837f60658b2d7d"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template<typename InterfaceT, typename ImplementationT> </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#a0cd491f624c3a3343d0253bac52538d">bind</a> (std::auto_ptr< ImplementationT > px, const std::string &name="")</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Binds a auto pointer to an object, to an interface. <a href="#a0cd491f624c3a3343d0253bac52538d"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template<typename InterfaceT> </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#6fb3c713e3d877413a0e150fa01e7d51">unbind</a> (const std::string &name="")</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a binding from the server. <a href="#6fb3c713e3d877413a0e150fa01e7d51"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#92d8f1e4cffe32eeb16cfcd5d5fdf30d">addService</a> (ServicePtr servicePtr)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a service to the server. <a href="#92d8f1e4cffe32eeb16cfcd5d5fdf30d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#140f6cffd2b2c5b67fde6365972e8b08">removeService</a> (ServicePtr servicePtr)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a service from the server. <a href="#140f6cffd2b2c5b67fde6365972e8b08"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="05e5beac138dc9b23f563f36ccd8c604"></a><!-- doxytag: member="RCF::RcfServer::setStartCallback" ref="05e5beac138dc9b23f563f36ccd8c604" args="(StartCallback startCallback)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#05e5beac138dc9b23f563f36ccd8c604">setStartCallback</a> (StartCallback startCallback)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the start callback, which is invoked by each worker thread when it starts. <br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="a86a45528ea16cbeb9c77aee081ba3c1"></a><!-- doxytag: member="RCF::RcfServer::setStartCallback" ref="a86a45528ea16cbeb9c77aee081ba3c1" args="(void(T::*pfn)(RcfServer &), T &t)" -->
template<typename T> </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#a86a45528ea16cbeb9c77aee081ba3c1">setStartCallback</a> (void(T::*pfn)(<a class="el" href="class_r_c_f_1_1_rcf_server.html">RcfServer</a> &), T &t)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the start callback, which is invoked by each worker thread when it starts. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d5175de05a5001b81d03447a5994f3a1"></a><!-- doxytag: member="RCF::RcfServer::getStopFlag" ref="d5175de05a5001b81d03447a5994f3a1" args="()" -->
bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#d5175de05a5001b81d03447a5994f3a1">getStopFlag</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a value indicating whether or not all server threads should terminate their activities. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cafe176e066105d7d5a5b65c50b94c24"></a><!-- doxytag: member="RCF::RcfServer::waitForStopEvent" ref="cafe176e066105d7d5a5b65c50b94c24" args="()" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#cafe176e066105d7d5a5b65c50b94c24">waitForStopEvent</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Waits for the server to be stopped. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="839331111f9f4acf7b1b6c5a9364743f"></a><!-- doxytag: member="RCF::RcfServer::waitForStartEvent" ref="839331111f9f4acf7b1b6c5a9364743f" args="()" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_c_f_1_1_rcf_server.html#839331111f9f4acf7b1b6c5a9364743f">waitForStartEvent</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Waits for the server to be started. <br></td></tr>
</table>
<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="30dccd4586556317befa986411eb7908"></a><!-- doxytag: member="RCF::RcfServer::RcfServer" ref="30dccd4586556317befa986411eb7908" args="(const I_Endpoint &endpoint)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">RCF::RcfServer::RcfServer </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const <a class="el" href="class_r_c_f_1_1_i___endpoint.html">I_Endpoint</a> & </td>
<td class="mdname1" valign="top" nowrap> <em>endpoint</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Constructor.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>endpoint</em> </td><td>Represents endpoint location of the server. Determines which server transport will be created and used. </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="17b1fdbdd68baa513a934dbf65f1f9ad"></a><!-- doxytag: member="RCF::RcfServer::RcfServer" ref="17b1fdbdd68baa513a934dbf65f1f9ad" args="(ServicePtr servicePtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">RCF::RcfServer::RcfServer </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">ServicePtr </td>
<td class="mdname1" valign="top" nowrap> <em>servicePtr</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Constructor.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>servicePtr</em> </td><td>Service to load, typically a server transport. </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="9bd676bca69d6389dc702fd34b6882e1"></a><!-- doxytag: member="RCF::RcfServer::RcfServer" ref="9bd676bca69d6389dc702fd34b6882e1" args="(ServerTransportPtr serverTransportPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">RCF::RcfServer::RcfServer </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">ServerTransportPtr </td>
<td class="mdname1" valign="top" nowrap> <em>serverTransportPtr</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Constructor.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>serverTransportPtr</em> </td><td>Server transport to load. </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="810f898e957abbc4c469139a4fb5565e"></a><!-- doxytag: member="RCF::RcfServer::addJoinFunctor" ref="810f898e957abbc4c469139a4fb5565e" args="(JoinFunctor joinFunctor)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void RCF::RcfServer::addJoinFunctor </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">JoinFunctor </td>
<td class="mdname1" valign="top" nowrap> <em>joinFunctor</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Adds a join functor to the server, to be called when stopping the server.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>joinFunctor</em> </td><td>Join functor. </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="92d8f1e4cffe32eeb16cfcd5d5fdf30d"></a><!-- doxytag: member="RCF::RcfServer::addService" ref="92d8f1e4cffe32eeb16cfcd5d5fdf30d" args="(ServicePtr servicePtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">bool RCF::RcfServer::addService </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">ServicePtr </td>
<td class="mdname1" valign="top" nowrap> <em>servicePtr</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Adds a service to the server.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>servicePtr</em> </td><td>Service to be added. E.g. ... </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>true if service added successfully, false otherwise (probably because the service has already been added). </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="a0cd491f624c3a3343d0253bac52538d"></a><!-- doxytag: member="RCF::RcfServer::bind" ref="a0cd491f624c3a3343d0253bac52538d" args="(std::auto_ptr< ImplementationT > px, const std::string &name="")" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="mdPrefix" colspan="4">
template<typename InterfaceT, typename ImplementationT> </td>
</tr>
<tr>
<td class="md" nowrap valign="top">bool RCF::RcfServer::bind </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">std::auto_ptr< ImplementationT > </td>
<td class="mdname" nowrap> <em>px</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>const std::string & </td>
<td class="mdname" nowrap> <em>name</em> = <code>""</code></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Binds a auto pointer to an object, to an interface.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>px</em> </td><td>Auto pointer to be bound. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Name to assign to the binding. </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>true if binding succeeded, false otherwise (probably because of a name collision). </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="bfd91216ed26b93387837f60658b2d7d"></a><!-- doxytag: member="RCF::RcfServer::bind" ref="bfd91216ed26b93387837f60658b2d7d" args="(boost::weak_ptr< ImplementationT > px, const std::string &name="")" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="mdPrefix" colspan="4">
template<typename InterfaceT, typename ImplementationT> </td>
</tr>
<tr>
<td class="md" nowrap valign="top">bool RCF::RcfServer::bind </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">boost::weak_ptr< ImplementationT > </td>
<td class="mdname" nowrap> <em>px</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>const std::string & </td>
<td class="mdname" nowrap> <em>name</em> = <code>""</code></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Binds a weak pointer to an object, to an interface.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>px</em> </td><td>Weak pointer to be bound. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Name to assign to the binding. </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>true if binding succeeded, false otherwise (probably because of a name collision). </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="1dd822f4d2d254cfcef933d8c10e8e4c"></a><!-- doxytag: member="RCF::RcfServer::bind" ref="1dd822f4d2d254cfcef933d8c10e8e4c" args="(boost::shared_ptr< ImplementationT > px, const std::string &name="")" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="mdPrefix" colspan="4">
template<typename InterfaceT, typename ImplementationT> </td>
</tr>
<tr>
<td class="md" nowrap valign="top">bool RCF::RcfServer::bind </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">boost::shared_ptr< ImplementationT > </td>
<td class="mdname" nowrap> <em>px</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>const std::string & </td>
<td class="mdname" nowrap> <em>name</em> = <code>""</code></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Binds a shared pointer to an object, to an interface.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>px</em> </td><td>Shared pointer to be bound. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Name to assign to the binding. </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>true if binding succeeded, false otherwise (probably because of a name collision). </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="5d606416d4505fe8691e7f57d46a2d61"></a><!-- doxytag: member="RCF::RcfServer::bind" ref="5d606416d4505fe8691e7f57d46a2d61" args="(ImplementationT &x, const std::string &name="")" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="mdPrefix" colspan="4">
template<typename InterfaceT, typename ImplementationT> </td>
</tr>
<tr>
<td class="md" nowrap valign="top">bool RCF::RcfServer::bind </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">ImplementationT & </td>
<td class="mdname" nowrap> <em>x</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>const std::string & </td>
<td class="mdname" nowrap> <em>name</em> = <code>""</code></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Binds a reference to an object, to an interface.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>Object to be bound. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Name to assign to the binding. </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>true if binding succeeded, false otherwise (probably because of a name collision). </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="1df12cd9c50a0a2b9b5c34faefa8cece"></a><!-- doxytag: member="RCF::RcfServer::cycle" ref="1df12cd9c50a0a2b9b5c34faefa8cece" args="(int timeoutMs=0)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">bool RCF::RcfServer::cycle </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">int </td>
<td class="mdname1" valign="top" nowrap> <em>timeoutMs</em> = <code>0</code> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Cycles all services, including transports.
<p>
May or may not result in the dispatching of a client request. <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>timeoutMs</em> </td><td>Maximum waiting time, in milliseconds, for any blocking operations. </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>boolean value indicating if the server is being stopped. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="b57706df5e0a6ed3ecff290eb14f31ba"></a><!-- doxytag: member="RCF::RcfServer::cycleSessions" ref="b57706df5e0a6ed3ecff290eb14f31ba" args="(int timeoutMs, const volatile bool &stopFlag)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void RCF::RcfServer::cycleSessions </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">int </td>
<td class="mdname" nowrap> <em>timeoutMs</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>const volatile bool & </td>
<td class="mdname" nowrap> <em>stopFlag</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Cycles the server's thread-specific session queue.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>timeoutMs</em> </td><td>Maximum waiting time, in milliseconds, for any blocking operations. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>stopFlag</em> </td><td>Reference to boolean value that, when set, indicates that all server threads should terminate as soon as possible. </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="f8dd420bf0f38b002557b6e0159bf9df"></a><!-- doxytag: member="RCF::RcfServer::getServerTransport" ref="f8dd420bf0f38b002557b6e0159bf9df" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"><a class="el" href="class_r_c_f_1_1_i___server_transport.html">I_ServerTransport</a>& RCF::RcfServer::getServerTransport </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Returns a reference to the primary server transport.
<p>
<dl compact><dt><b>Returns:</b></dt><dd>Reference to primary server transport. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="89e9512cfa798dd5106eb41023090be9"></a><!-- doxytag: member="RCF::RcfServer::getServerTransportPtr" ref="89e9512cfa798dd5106eb41023090be9" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">boost::shared_ptr<<a class="el" href="class_r_c_f_1_1_i___server_transport.html">I_ServerTransport</a>> RCF::RcfServer::getServerTransportPtr </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Returns a shared pointer to the primary server transport.
<p>
<dl compact><dt><b>Returns:</b></dt><dd>Shared pointer to primary server transport. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="140f6cffd2b2c5b67fde6365972e8b08"></a><!-- doxytag: member="RCF::RcfServer::removeService" ref="140f6cffd2b2c5b67fde6365972e8b08" args="(ServicePtr servicePtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">bool RCF::RcfServer::removeService </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">ServicePtr </td>
<td class="mdname1" valign="top" nowrap> <em>servicePtr</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Removes a service from the server.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>servicePtr</em> </td><td>Service to be removed. </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>true. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="98e104395628f6854b419f163676588d"></a><!-- doxytag: member="RCF::RcfServer::start" ref="98e104395628f6854b419f163676588d" args="(bool spawnThreads=true)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void RCF::RcfServer::start </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">bool </td>
<td class="mdname1" valign="top" nowrap> <em>spawnThreads</em> = <code>true</code> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Starts the server, by starting all services, including transports.
<p>
Synchronized: yes, idempotent: yes. <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>spawnThreads</em> </td><td>Indicates whether any server threads should be spawned. </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="d94367f7d2741cc409307e8fd0b22ff3"></a><!-- doxytag: member="RCF::RcfServer::startInThisThread" ref="d94367f7d2741cc409307e8fd0b22ff3" args="(JoinFunctor joinFunctor)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void RCF::RcfServer::startInThisThread </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">JoinFunctor </td>
<td class="mdname1" valign="top" nowrap> <em>joinFunctor</em> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Starts the server, by taking over the current thread.
<p>
All server tasks will be run sequentially in the calling thread. Synchronized: no, idempotent: no. <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>joinFunctor</em> </td><td>Functor to call in order to join this thread. </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="3247d4f82a31b7281f0ad9afb6efba65"></a><!-- doxytag: member="RCF::RcfServer::startInThisThread" ref="3247d4f82a31b7281f0ad9afb6efba65" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void RCF::RcfServer::startInThisThread </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Starts the server, by taking over the current thread.
<p>
All server tasks will be run sequentially in the calling thread. Synchronized: no, idempotent: no. </td>
</tr>
</table>
<a class="anchor" name="993d42d38cd846e81c3b04ac119078ee"></a><!-- doxytag: member="RCF::RcfServer::stop" ref="993d42d38cd846e81c3b04ac119078ee" args="(bool wait=true)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void RCF::RcfServer::stop </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">bool </td>
<td class="mdname1" valign="top" nowrap> <em>wait</em> = <code>true</code> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Stops the server.
<p>
Optionally waits until all server threads have terminated. Synchronized: yes, idempotent: yes <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>wait</em> </td><td>True to wait for server threads to terminate, false to return immediately. </td></tr>
</table>
</dl>
</td>
</tr>
</table>
<a class="anchor" name="6fb3c713e3d877413a0e150fa01e7d51"></a><!-- doxytag: member="RCF::RcfServer::unbind" ref="6fb3c713e3d877413a0e150fa01e7d51" args="(const std::string &name="")" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="mdPrefix" colspan="4">
template<typename InterfaceT> </td>
</tr>
<tr>
<td class="md" nowrap valign="top">bool RCF::RcfServer::unbind </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const std::string & </td>
<td class="mdname1" valign="top" nowrap> <em>name</em> = <code>""</code> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Removes a binding from the server.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Name of the binding </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>true </dd></dl>
</td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="_rcf_server_8hpp-source.html">RcfServer.hpp</a><li>RcfServer.inl</ul>
<hr size="1"><address style="align: right;"><small>Generated on Tue Sep 19 19:02:38 2006 for RCF by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.5 </small></address>
</body>
</html>