\section{RCF::Rcf\-Server Class Reference}
\label{class_r_c_f_1_1_rcf_server}\index{RCF::RcfServer@{RCF::RcfServer}}
{\tt \#include $<$Rcf\-Server.hpp$>$}
Inheritance diagram for RCF::Rcf\-Server::\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2cm]{class_r_c_f_1_1_rcf_server}
\end{center}
\end{figure}
\subsection{Detailed Description}
Server class, supporting pluggable transports and services.
\subsection*{Public Member Functions}
\begin{CompactItemize}
\item
{\bf Rcf\-Server} (const {\bf I\_\-Endpoint} \&endpoint)
\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item
{\bf Rcf\-Server} (Service\-Ptr service\-Ptr)
\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item
{\bf Rcf\-Server} (Server\-Transport\-Ptr server\-Transport\-Ptr)
\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item
{\bf $\sim$Rcf\-Server} ()\label{class_r_c_f_1_1_rcf_server_0a78239b3654810132ab27c1c8b91e05}
\begin{CompactList}\small\item\em Destructor. \item\end{CompactList}\item
void {\bf start} (bool spawn\-Threads=true)
\begin{CompactList}\small\item\em Starts the server, by starting all services, including transports. \item\end{CompactList}\item
void {\bf add\-Join\-Functor} (Join\-Functor join\-Functor)
\begin{CompactList}\small\item\em Adds a join functor to the server, to be called when stopping the server. \item\end{CompactList}\item
void {\bf start\-In\-This\-Thread} ()
\begin{CompactList}\small\item\em Starts the server, by taking over the current thread. \item\end{CompactList}\item
void {\bf start\-In\-This\-Thread} (Join\-Functor join\-Functor)
\begin{CompactList}\small\item\em Starts the server, by taking over the current thread. \item\end{CompactList}\item
void {\bf stop} (bool wait=true)
\begin{CompactList}\small\item\em Stops the server. \item\end{CompactList}\item
bool {\bf cycle} (int timeout\-Ms=0)
\begin{CompactList}\small\item\em Cycles all services, including transports. \item\end{CompactList}\item
void {\bf cycle\-Sessions} (int timeout\-Ms, const volatile bool \&stop\-Flag)
\begin{CompactList}\small\item\em Cycles the server's thread-specific session queue. \item\end{CompactList}\item
void {\bf open} ()\label{class_r_c_f_1_1_rcf_server_bc236d7592f97be4031af3df84fa602a}
\begin{CompactList}\small\item\em Opens all services, including transports. \item\end{CompactList}\item
void {\bf close} ()\label{class_r_c_f_1_1_rcf_server_188bb2749480028e2c32415766917412}
\begin{CompactList}\small\item\em Closes all services, including transports. \item\end{CompactList}\item
{\bf I\_\-Server\-Transport} \& {\bf get\-Server\-Transport} ()
\begin{CompactList}\small\item\em Returns a reference to the primary server transport. \item\end{CompactList}\item
boost::shared\_\-ptr$<$ {\bf I\_\-Server\-Transport} $>$ {\bf get\-Server\-Transport\-Ptr} ()
\begin{CompactList}\small\item\em Returns a shared pointer to the primary server transport. \item\end{CompactList}\item
template$<$typename Interface\-T, typename Implementation\-T$>$ bool {\bf bind} (Implementation\-T \&x, const std::string \&name=\char`\"{}\char`\"{})
\begin{CompactList}\small\item\em Binds a reference to an object, to an interface. \item\end{CompactList}\item
template$<$typename Interface\-T, typename Implementation\-T$>$ bool {\bf bind} (boost::shared\_\-ptr$<$ Implementation\-T $>$ px, const std::string \&name=\char`\"{}\char`\"{})
\begin{CompactList}\small\item\em Binds a shared pointer to an object, to an interface. \item\end{CompactList}\item
template$<$typename Interface\-T, typename Implementation\-T$>$ bool {\bf bind} (boost::weak\_\-ptr$<$ Implementation\-T $>$ px, const std::string \&name=\char`\"{}\char`\"{})
\begin{CompactList}\small\item\em Binds a weak pointer to an object, to an interface. \item\end{CompactList}\item
template$<$typename Interface\-T, typename Implementation\-T$>$ bool {\bf bind} (std::auto\_\-ptr$<$ Implementation\-T $>$ px, const std::string \&name=\char`\"{}\char`\"{})
\begin{CompactList}\small\item\em Binds a auto pointer to an object, to an interface. \item\end{CompactList}\item
template$<$typename Interface\-T$>$ bool {\bf unbind} (const std::string \&name=\char`\"{}\char`\"{})
\begin{CompactList}\small\item\em Removes a binding from the server. \item\end{CompactList}\item
bool {\bf add\-Service} (Service\-Ptr service\-Ptr)
\begin{CompactList}\small\item\em Adds a service to the server. \item\end{CompactList}\item
bool {\bf remove\-Service} (Service\-Ptr service\-Ptr)
\begin{CompactList}\small\item\em Removes a service from the server. \item\end{CompactList}\item
void {\bf set\-Start\-Callback} (Start\-Callback start\-Callback)\label{class_r_c_f_1_1_rcf_server_05e5beac138dc9b23f563f36ccd8c604}
\begin{CompactList}\small\item\em Sets the start callback, which is invoked by each worker thread when it starts. \item\end{CompactList}\item
template$<$typename T$>$ void {\bf set\-Start\-Callback} (void(T::$\ast$pfn)({\bf Rcf\-Server} \&), T \&t)\label{class_r_c_f_1_1_rcf_server_a86a45528ea16cbeb9c77aee081ba3c1}
\begin{CompactList}\small\item\em Sets the start callback, which is invoked by each worker thread when it starts. \item\end{CompactList}\item
bool {\bf get\-Stop\-Flag} ()\label{class_r_c_f_1_1_rcf_server_d5175de05a5001b81d03447a5994f3a1}
\begin{CompactList}\small\item\em Returns a value indicating whether or not all server threads should terminate their activities. \item\end{CompactList}\item
void {\bf wait\-For\-Stop\-Event} ()\label{class_r_c_f_1_1_rcf_server_cafe176e066105d7d5a5b65c50b94c24}
\begin{CompactList}\small\item\em Waits for the server to be stopped. \item\end{CompactList}\item
void {\bf wait\-For\-Start\-Event} ()\label{class_r_c_f_1_1_rcf_server_839331111f9f4acf7b1b6c5a9364743f}
\begin{CompactList}\small\item\em Waits for the server to be started. \item\end{CompactList}\end{CompactItemize}
\subsection{Constructor \& Destructor Documentation}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!RcfServer@{RcfServer}}
\index{RcfServer@{RcfServer}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}RCF::Rcf\-Server::Rcf\-Server (const {\bf I\_\-Endpoint} \& {\em endpoint})}\label{class_r_c_f_1_1_rcf_server_30dccd4586556317befa986411eb7908}
Constructor.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em endpoint}]Represents endpoint location of the server. Determines which server transport will be created and used. \end{description}
\end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!RcfServer@{RcfServer}}
\index{RcfServer@{RcfServer}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}RCF::Rcf\-Server::Rcf\-Server (Service\-Ptr {\em service\-Ptr})}\label{class_r_c_f_1_1_rcf_server_17b1fdbdd68baa513a934dbf65f1f9ad}
Constructor.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em service\-Ptr}]Service to load, typically a server transport. \end{description}
\end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!RcfServer@{RcfServer}}
\index{RcfServer@{RcfServer}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}RCF::Rcf\-Server::Rcf\-Server (Server\-Transport\-Ptr {\em server\-Transport\-Ptr})}\label{class_r_c_f_1_1_rcf_server_9bd676bca69d6389dc702fd34b6882e1}
Constructor.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em server\-Transport\-Ptr}]Server transport to load. \end{description}
\end{Desc}
\subsection{Member Function Documentation}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!addJoinFunctor@{addJoinFunctor}}
\index{addJoinFunctor@{addJoinFunctor}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void RCF::Rcf\-Server::add\-Join\-Functor (Join\-Functor {\em join\-Functor})}\label{class_r_c_f_1_1_rcf_server_810f898e957abbc4c469139a4fb5565e}
Adds a join functor to the server, to be called when stopping the server.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em join\-Functor}]Join functor. \end{description}
\end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!addService@{addService}}
\index{addService@{addService}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool RCF::Rcf\-Server::add\-Service (Service\-Ptr {\em service\-Ptr})}\label{class_r_c_f_1_1_rcf_server_92d8f1e4cffe32eeb16cfcd5d5fdf30d}
Adds a service to the server.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em service\-Ptr}]Service to be added. E.g. ... \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true if service added successfully, false otherwise (probably because the service has already been added). \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!bind@{bind}}
\index{bind@{bind}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Interface\-T, typename Implementation\-T$>$ bool RCF::Rcf\-Server::bind (std::auto\_\-ptr$<$ Implementation\-T $>$ {\em px}, const std::string \& {\em name} = {\tt \char`\"{}\char`\"{}})}\label{class_r_c_f_1_1_rcf_server_a0cd491f624c3a3343d0253bac52538d}
Binds a auto pointer to an object, to an interface.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em px}]Auto pointer to be bound. \item[{\em name}]Name to assign to the binding. \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true if binding succeeded, false otherwise (probably because of a name collision). \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!bind@{bind}}
\index{bind@{bind}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Interface\-T, typename Implementation\-T$>$ bool RCF::Rcf\-Server::bind (boost::weak\_\-ptr$<$ Implementation\-T $>$ {\em px}, const std::string \& {\em name} = {\tt \char`\"{}\char`\"{}})}\label{class_r_c_f_1_1_rcf_server_bfd91216ed26b93387837f60658b2d7d}
Binds a weak pointer to an object, to an interface.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em px}]Weak pointer to be bound. \item[{\em name}]Name to assign to the binding. \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true if binding succeeded, false otherwise (probably because of a name collision). \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!bind@{bind}}
\index{bind@{bind}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Interface\-T, typename Implementation\-T$>$ bool RCF::Rcf\-Server::bind (boost::shared\_\-ptr$<$ Implementation\-T $>$ {\em px}, const std::string \& {\em name} = {\tt \char`\"{}\char`\"{}})}\label{class_r_c_f_1_1_rcf_server_1dd822f4d2d254cfcef933d8c10e8e4c}
Binds a shared pointer to an object, to an interface.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em px}]Shared pointer to be bound. \item[{\em name}]Name to assign to the binding. \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true if binding succeeded, false otherwise (probably because of a name collision). \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!bind@{bind}}
\index{bind@{bind}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Interface\-T, typename Implementation\-T$>$ bool RCF::Rcf\-Server::bind (Implementation\-T \& {\em x}, const std::string \& {\em name} = {\tt \char`\"{}\char`\"{}})}\label{class_r_c_f_1_1_rcf_server_5d606416d4505fe8691e7f57d46a2d61}
Binds a reference to an object, to an interface.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em x}]Object to be bound. \item[{\em name}]Name to assign to the binding. \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true if binding succeeded, false otherwise (probably because of a name collision). \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!cycle@{cycle}}
\index{cycle@{cycle}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool RCF::Rcf\-Server::cycle (int {\em timeout\-Ms} = {\tt 0})}\label{class_r_c_f_1_1_rcf_server_1df12cd9c50a0a2b9b5c34faefa8cece}
Cycles all services, including transports.
May or may not result in the dispatching of a client request. \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em timeout\-Ms}]Maximum waiting time, in milliseconds, for any blocking operations. \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]boolean value indicating if the server is being stopped. \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!cycleSessions@{cycleSessions}}
\index{cycleSessions@{cycleSessions}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void RCF::Rcf\-Server::cycle\-Sessions (int {\em timeout\-Ms}, const volatile bool \& {\em stop\-Flag})}\label{class_r_c_f_1_1_rcf_server_b57706df5e0a6ed3ecff290eb14f31ba}
Cycles the server's thread-specific session queue.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em timeout\-Ms}]Maximum waiting time, in milliseconds, for any blocking operations. \item[{\em stop\-Flag}]Reference to boolean value that, when set, indicates that all server threads should terminate as soon as possible. \end{description}
\end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!getServerTransport@{getServerTransport}}
\index{getServerTransport@{getServerTransport}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf I\_\-Server\-Transport}\& RCF::Rcf\-Server::get\-Server\-Transport ()}\label{class_r_c_f_1_1_rcf_server_f8dd420bf0f38b002557b6e0159bf9df}
Returns a reference to the primary server transport.
\begin{Desc}
\item[Returns:]Reference to primary server transport. \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!getServerTransportPtr@{getServerTransportPtr}}
\index{getServerTransportPtr@{getServerTransportPtr}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}boost::shared\_\-ptr$<${\bf I\_\-Server\-Transport}$>$ RCF::Rcf\-Server::get\-Server\-Transport\-Ptr ()}\label{class_r_c_f_1_1_rcf_server_89e9512cfa798dd5106eb41023090be9}
Returns a shared pointer to the primary server transport.
\begin{Desc}
\item[Returns:]Shared pointer to primary server transport. \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!removeService@{removeService}}
\index{removeService@{removeService}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool RCF::Rcf\-Server::remove\-Service (Service\-Ptr {\em service\-Ptr})}\label{class_r_c_f_1_1_rcf_server_140f6cffd2b2c5b67fde6365972e8b08}
Removes a service from the server.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em service\-Ptr}]Service to be removed. \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true. \end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!start@{start}}
\index{start@{start}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void RCF::Rcf\-Server::start (bool {\em spawn\-Threads} = {\tt true})}\label{class_r_c_f_1_1_rcf_server_98e104395628f6854b419f163676588d}
Starts the server, by starting all services, including transports.
Synchronized: yes, idempotent: yes. \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em spawn\-Threads}]Indicates whether any server threads should be spawned. \end{description}
\end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!startInThisThread@{startInThisThread}}
\index{startInThisThread@{startInThisThread}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void RCF::Rcf\-Server::start\-In\-This\-Thread (Join\-Functor {\em join\-Functor})}\label{class_r_c_f_1_1_rcf_server_d94367f7d2741cc409307e8fd0b22ff3}
Starts the server, by taking over the current thread.
All server tasks will be run sequentially in the calling thread. Synchronized: no, idempotent: no. \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em join\-Functor}]Functor to call in order to join this thread. \end{description}
\end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!startInThisThread@{startInThisThread}}
\index{startInThisThread@{startInThisThread}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void RCF::Rcf\-Server::start\-In\-This\-Thread ()}\label{class_r_c_f_1_1_rcf_server_3247d4f82a31b7281f0ad9afb6efba65}
Starts the server, by taking over the current thread.
All server tasks will be run sequentially in the calling thread. Synchronized: no, idempotent: no. \index{RCF::RcfServer@{RCF::Rcf\-Server}!stop@{stop}}
\index{stop@{stop}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void RCF::Rcf\-Server::stop (bool {\em wait} = {\tt true})}\label{class_r_c_f_1_1_rcf_server_993d42d38cd846e81c3b04ac119078ee}
Stops the server.
Optionally waits until all server threads have terminated. Synchronized: yes, idempotent: yes \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em wait}]True to wait for server threads to terminate, false to return immediately. \end{description}
\end{Desc}
\index{RCF::RcfServer@{RCF::Rcf\-Server}!unbind@{unbind}}
\index{unbind@{unbind}!RCF::RcfServer@{RCF::Rcf\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Interface\-T$>$ bool RCF::Rcf\-Server::unbind (const std::string \& {\em name} = {\tt \char`\"{}\char`\"{}})\hspace{0.3cm}{\tt [inline]}}\label{class_r_c_f_1_1_rcf_server_6fb3c713e3d877413a0e150fa01e7d51}
Removes a binding from the server.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em name}]Name of the binding \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]true \end{Desc}
The documentation for this class was generated from the following files:\begin{CompactItemize}
\item
Rcf\-Server.hpp\item
Rcf\-Server.inl\end{CompactItemize}