\hypertarget{classFinderClient}{
\section{FinderClient Class Reference}
\label{classFinderClient}\index{FinderClient@{FinderClient}}
}


Class that represents clients of \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}.  




{\ttfamily \#include $<$finder\_\-client.hh$>$}

Inheritance diagram for FinderClient:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classFinderClient}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{classFinderClient_1_1InstanceInfo}{InstanceInfo}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classFinderClient_af1625efc0883011e1c2bc0a0a386a350}{
typedef XorpCallback2$<$ void, const \hyperlink{classXrlError}{XrlError} \&, const \hyperlink{classFinderDBEntry}{FinderDBEntry} $\ast$ $>$::RefPtr {\bfseries QueryCallback}}
\label{classFinderClient_af1625efc0883011e1c2bc0a0a386a350}

\item 
\hypertarget{classFinderClient_ab604d6251bdb937e5bc119661c2d9d41}{
typedef \hyperlink{classref__ptr}{ref\_\-ptr}$<$ \hyperlink{classFinderClientOp}{FinderClientOp} $>$ {\bfseries Operation}}
\label{classFinderClient_ab604d6251bdb937e5bc119661c2d9d41}

\item 
\hypertarget{classFinderClient_a87510821993e9041f23ea78f712644ad}{
typedef list$<$ \hyperlink{classref__ptr}{Operation} $>$ {\bfseries OperationQueue}}
\label{classFinderClient_a87510821993e9041f23ea78f712644ad}

\item 
\hypertarget{classFinderClient_abfdbcb207e89847459d44d5f827ab791}{
typedef map$<$ string, \hyperlink{classFinderDBEntry}{FinderDBEntry} $>$ {\bfseries ResolvedTable}}
\label{classFinderClient_abfdbcb207e89847459d44d5f827ab791}

\item 
\hypertarget{classFinderClient_aa1dc8a30a72fb4d1e925698946f88284}{
typedef map$<$ string, string $>$ {\bfseries LocalResolvedTable}}
\label{classFinderClient_aa1dc8a30a72fb4d1e925698946f88284}

\item 
\hypertarget{classFinderClient_a692b2ae63066f8fabaed0fef5bcca806}{
typedef vector$<$ \hyperlink{classFinderClient_1_1InstanceInfo}{InstanceInfo} $>$ {\bfseries InstanceList}}
\label{classFinderClient_a692b2ae63066f8fabaed0fef5bcca806}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classFinderClient_a1d6ff1505691b8eb7cd5bcee39575a27}{
\hyperlink{classFinderClient_a1d6ff1505691b8eb7cd5bcee39575a27}{FinderClient} ()}
\label{classFinderClient_a1d6ff1505691b8eb7cd5bcee39575a27}

\begin{DoxyCompactList}\small\item\em Constructor. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a555b7131ea85010e2da6f0e021b39dfa}{
virtual \hyperlink{classFinderClient_a555b7131ea85010e2da6f0e021b39dfa}{$\sim$FinderClient} ()}
\label{classFinderClient_a555b7131ea85010e2da6f0e021b39dfa}

\begin{DoxyCompactList}\small\item\em Destructor. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFinderClient_aa3608da6a55187dc7708ef949a743950}{register\_\-xrl\_\-target} (const string \&instance\_\-name, const string \&class\_\-name, const \hyperlink{classXrlDispatcher}{XrlDispatcher} $\ast$dispatcher)
\begin{DoxyCompactList}\small\item\em Register an \hyperlink{classXrl}{Xrl} Target with \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClient}{FinderClient} and place request with \hyperlink{classFinder}{Finder} to perform registration. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFinderClient_a2bf9ccd3321bb20f912d88c8fe151b0e}{unregister\_\-xrl\_\-target} (const string \&instance\_\-name)
\begin{DoxyCompactList}\small\item\em Unregister \hyperlink{classXrl}{Xrl} Target with \hyperlink{classFinderClient}{FinderClient} and place a request with \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} to remove registration. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFinderClient_a51bc486d26db45eb8d649e6963984f00}{register\_\-xrl} (const string \&instance\_\-name, const string \&xrl, const string \&pf\_\-name, const string \&pf\_\-args)
\begin{DoxyCompactList}\small\item\em Register an \hyperlink{classXrl}{Xrl} with \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFinderClient_a57aee941db018b68aa346fd26e740fe0}{enable\_\-xrls} (const string \&instance\_\-name)
\begin{DoxyCompactList}\small\item\em Request \hyperlink{classFinder}{Finder} advertise Xrls associated with an \hyperlink{classXrl}{Xrl} Target instance to other XORP \hyperlink{classXrl}{Xrl} targets. \item\end{DoxyCompactList}\item 
void \hyperlink{classFinderClient_a04e6417434c1114f867e495d5b306ba6}{query} (\hyperlink{classEventLoop}{EventLoop} \&eventloop, const string \&xrl, const QueryCallback \&qcb)
\begin{DoxyCompactList}\small\item\em Request resolution of an \hyperlink{classXrl}{Xrl}. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_ae040b38be1980a34ee5284873f3c58bd}{
uint32\_\-t \hyperlink{classFinderClient_ae040b38be1980a34ee5284873f3c58bd}{queries\_\-pending} () const }
\label{classFinderClient_ae040b38be1980a34ee5284873f3c58bd}

\begin{DoxyCompactList}\small\item\em Get number of asynchonous queries pending resolution. \item\end{DoxyCompactList}\item 
const \hyperlink{classFinderDBEntry}{FinderDBEntry} $\ast$ \hyperlink{classFinderClient_a222c38e540c5b9bcb035e6a1c13afd18}{query\_\-cache} (const string \&xrl) const 
\begin{DoxyCompactList}\small\item\em Attempt to resolve \hyperlink{classXrl}{Xrl} from cache. \item\end{DoxyCompactList}\item 
void \hyperlink{classFinderClient_a06e8cf7f4ed11bc60e8ff703dd7bba05}{uncache\_\-result} (const \hyperlink{classFinderDBEntry}{FinderDBEntry} $\ast$dbe)
\begin{DoxyCompactList}\small\item\em Remove an resolved entry from cache. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFinderClient_a80eedfd93e798cdb7c9255de6b3c5639}{query\_\-self} (const string \&incoming\_\-xrl\_\-command, string \&local\_\-xrl\_\-command) const 
\begin{DoxyCompactList}\small\item\em Resolve \hyperlink{classXrl}{Xrl} that an \hyperlink{classXrl}{Xrl} Target associated with \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClient}{FinderClient} registered. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFinderClient_a70cae76069a2c7bf87bee04b6c713a6c}{forward\_\-finder\_\-xrl} (const \hyperlink{classXrl}{Xrl} \&x, const XrlPFSender::SendCallback \&cb)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} an \hyperlink{classXrl}{Xrl} for \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} to dispatch. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a81dc45495b9736d86ab6d7500b3d0240}{
\hyperlink{classFinderMessengerBase}{FinderMessengerBase} $\ast$ \hyperlink{classFinderClient_a81dc45495b9736d86ab6d7500b3d0240}{messenger} ()}
\label{classFinderClient_a81dc45495b9736d86ab6d7500b3d0240}

\begin{DoxyCompactList}\small\item\em Accessor for \hyperlink{classFinder}{Finder} Messenger used by \hyperlink{classFinderClient}{FinderClient} instance. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a7e5fbcad574fc7c9b844cdfd55e34c86}{
OperationQueue \& \hyperlink{classFinderClient_a7e5fbcad574fc7c9b844cdfd55e34c86}{todo\_\-list} ()}
\label{classFinderClient_a7e5fbcad574fc7c9b844cdfd55e34c86}

\begin{DoxyCompactList}\small\item\em Get list of operations pending. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a73f3287747207d3159764b67d929aeef}{
OperationQueue \& \hyperlink{classFinderClient_a73f3287747207d3159764b67d929aeef}{done\_\-list} ()}
\label{classFinderClient_a73f3287747207d3159764b67d929aeef}

\begin{DoxyCompactList}\small\item\em Get List of operations done and are repeatable. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_af977d2327313134b8d3cf5629afa1f7c}{
void \hyperlink{classFinderClient_af977d2327313134b8d3cf5629afa1f7c}{notify\_\-done} (const \hyperlink{classFinderClientOp}{FinderClientOp} $\ast$completed)}
\label{classFinderClient_af977d2327313134b8d3cf5629afa1f7c}

\begin{DoxyCompactList}\small\item\em Notify successful completion of an operation on \hyperlink{protocolthe-p}{the} todo list. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a311db0e5cd1835a7e7ab92dd81d9ff16}{
void \hyperlink{classFinderClient_a311db0e5cd1835a7e7ab92dd81d9ff16}{notify\_\-failed} (const \hyperlink{classFinderClientOp}{FinderClientOp} $\ast$completed)}
\label{classFinderClient_a311db0e5cd1835a7e7ab92dd81d9ff16}

\begin{DoxyCompactList}\small\item\em Notify failed completion of an operation on \hyperlink{protocolthe-p}{the} todo list. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a4fe9f77be10e72d9312de2377c47c8af}{
\hyperlink{classXrlCmdMap}{XrlCmdMap} \& \hyperlink{classFinderClient_a4fe9f77be10e72d9312de2377c47c8af}{commands} ()}
\label{classFinderClient_a4fe9f77be10e72d9312de2377c47c8af}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} \hyperlink{classXrl}{Xrl} Commands implemented by \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClient}{FinderClient}. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFinderClient_a7584a65a93e2f4eaf9f367555ddd1126}{ready} () const 
\item 
bool \hyperlink{classFinderClient_ac51eab633b7e94fc7e3483ee4dcfbddb}{connected} () const 
\item 
bool \hyperlink{classFinderClient_a9295d835fbef8d7d45f72d3b2d944668}{attach\_\-observer} (\hyperlink{classFinderClientObserver}{FinderClientObserver} $\ast$o)
\begin{DoxyCompactList}\small\item\em Attach a \hyperlink{classFinderClientObserver}{FinderClientObserver} instance to receive event notifications. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFinderClient_ada44408700d245114064d503972817fd}{detach\_\-observer} (\hyperlink{classFinderClientObserver}{FinderClientObserver} $\ast$o)
\begin{DoxyCompactList}\small\item\em Detach \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClientObserver}{FinderClientObserver} instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classFinderClient_a4179afc9fd09bf4c3d1bd29577d3a437}{
void \hyperlink{classFinderClient_a4179afc9fd09bf4c3d1bd29577d3a437}{messenger\_\-birth\_\-event} (\hyperlink{classFinderMessengerBase}{FinderMessengerBase} $\ast$)}
\label{classFinderClient_a4179afc9fd09bf4c3d1bd29577d3a437}

\begin{DoxyCompactList}\small\item\em Method called by messenger constructor. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a4820363cef4ba0919be8720be6c0d822}{
void \hyperlink{classFinderClient_a4820363cef4ba0919be8720be6c0d822}{messenger\_\-death\_\-event} (\hyperlink{classFinderMessengerBase}{FinderMessengerBase} $\ast$)}
\label{classFinderClient_a4820363cef4ba0919be8720be6c0d822}

\begin{DoxyCompactList}\small\item\em Method called by messenger destructor. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a067029ac67f710b794759c54e3bddfa6}{
void \hyperlink{classFinderClient_a067029ac67f710b794759c54e3bddfa6}{messenger\_\-active\_\-event} (\hyperlink{classFinderMessengerBase}{FinderMessengerBase} $\ast$)}
\label{classFinderClient_a067029ac67f710b794759c54e3bddfa6}

\begin{DoxyCompactList}\small\item\em Method called before \hyperlink{classXrl}{Xrl} is dispatched. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_ad20f10ede9419f4d45cbff5cefeb6380}{
void \hyperlink{classFinderClient_ad20f10ede9419f4d45cbff5cefeb6380}{messenger\_\-inactive\_\-event} (\hyperlink{classFinderMessengerBase}{FinderMessengerBase} $\ast$)}
\label{classFinderClient_ad20f10ede9419f4d45cbff5cefeb6380}

\begin{DoxyCompactList}\small\item\em Method called immediately after \hyperlink{classXrl}{Xrl} is dispatched. \item\end{DoxyCompactList}\item 
void \hyperlink{classFinderClient_a7aeec4774aa48c4b905340c5790a16c0}{messenger\_\-stopped\_\-event} (\hyperlink{classFinderMessengerBase}{FinderMessengerBase} $\ast$)
\begin{DoxyCompactList}\small\item\em Method called when Messenger is unable to continue. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_addd452280f5ef2c51d1a539fa1ce55d1}{
bool \hyperlink{classFinderClient_addd452280f5ef2c51d1a539fa1ce55d1}{manages} (const \hyperlink{classFinderMessengerBase}{FinderMessengerBase} $\ast$) const }
\label{classFinderClient_addd452280f5ef2c51d1a539fa1ce55d1}

\begin{DoxyCompactList}\small\item\em Method called to tell if \hyperlink{classFinderMessengerManager}{FinderMessengerManager} instance manages a particular messenger. \item\end{DoxyCompactList}\item 
\hypertarget{classFinderClient_a8c5408bf3812b5406781d8942eb19946}{
void {\bfseries uncache\_\-xrl} (const string \&xrl)}
\label{classFinderClient_a8c5408bf3812b5406781d8942eb19946}

\item 
\hypertarget{classFinderClient_ab4690fe42646b252d5cf7127c48d62c2}{
void {\bfseries uncache\_\-xrls\_\-from\_\-target} (const string \&target)}
\label{classFinderClient_ab4690fe42646b252d5cf7127c48d62c2}

\item 
\hypertarget{classFinderClient_ad723c0cdd2581ad682ec3888dc2f9a73}{
\hyperlink{structXrlCmdError}{XrlCmdError} {\bfseries dispatch\_\-tunneled\_\-xrl} (const string \&xrl)}
\label{classFinderClient_ad723c0cdd2581ad682ec3888dc2f9a73}

\item 
\hypertarget{classFinderClient_a860d74ae6869039f52abcd8f87bb37a9}{
void {\bfseries crank} ()}
\label{classFinderClient_a860d74ae6869039f52abcd8f87bb37a9}

\item 
\hypertarget{classFinderClient_ac89adafb62a7c8919c06756e97852e3a}{
void {\bfseries prepare\_\-for\_\-restart} ()}
\label{classFinderClient_ac89adafb62a7c8919c06756e97852e3a}

\item 
\hypertarget{classFinderClient_a4dbee94ab39657a4715458ca21de321a}{
InstanceList::iterator {\bfseries find\_\-instance} (const string \&instance)}
\label{classFinderClient_a4dbee94ab39657a4715458ca21de321a}

\item 
\hypertarget{classFinderClient_a3c8ec0ee4b7a7c7b2419ae46ceb97ecd}{
InstanceList::const\_\-iterator {\bfseries find\_\-instance} (const string \&instance) const }
\label{classFinderClient_a3c8ec0ee4b7a7c7b2419ae46ceb97ecd}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classFinderClient_aa51ed8077113142458673fe04a2f69a7}{
OperationQueue {\bfseries \_\-todo\_\-list}}
\label{classFinderClient_aa51ed8077113142458673fe04a2f69a7}

\item 
\hypertarget{classFinderClient_a868020cb8c95e2c67c8032ea53ab09f9}{
OperationQueue {\bfseries \_\-done\_\-list}}
\label{classFinderClient_a868020cb8c95e2c67c8032ea53ab09f9}

\item 
\hypertarget{classFinderClient_a92778bac32a32807895bb6f5636dfb5c}{
ResolvedTable {\bfseries \_\-rt}}
\label{classFinderClient_a92778bac32a32807895bb6f5636dfb5c}

\item 
\hypertarget{classFinderClient_a271bb2c120259a30d6aaf66ddec73634}{
LocalResolvedTable {\bfseries \_\-lrt}}
\label{classFinderClient_a271bb2c120259a30d6aaf66ddec73634}

\item 
\hypertarget{classFinderClient_acd5088ca03f1d9b3ca5b72ceb13ddfe4}{
InstanceList {\bfseries \_\-ids}}
\label{classFinderClient_acd5088ca03f1d9b3ca5b72ceb13ddfe4}

\item 
\hypertarget{classFinderClient_a7d81e0dd0317656b3b9cf8a2cb15f960}{
\hyperlink{classXrlCmdMap}{XrlCmdMap} {\bfseries \_\-commands}}
\label{classFinderClient_a7d81e0dd0317656b3b9cf8a2cb15f960}

\item 
\hypertarget{classFinderClient_aa2819a7086ccea2cf11c6a62e541e869}{
\hyperlink{classFinderMessengerBase}{FinderMessengerBase} $\ast$ {\bfseries \_\-messenger}}
\label{classFinderClient_aa2819a7086ccea2cf11c6a62e541e869}

\item 
\hypertarget{classFinderClient_a99ed6eba0817457837e6bf99eaa27f2c}{
bool {\bfseries \_\-pending\_\-result}}
\label{classFinderClient_a99ed6eba0817457837e6bf99eaa27f2c}

\item 
\hypertarget{classFinderClient_ade12e119cf3f62e6e66560423cabf608}{
bool {\bfseries \_\-xrls\_\-registered}}
\label{classFinderClient_ade12e119cf3f62e6e66560423cabf608}

\item 
\hypertarget{classFinderClient_a4f2bd837f760a2bc206566d76108126d}{
\hyperlink{classFinderClientObserver}{FinderClientObserver} $\ast$ {\bfseries \_\-observer}}
\label{classFinderClient_a4f2bd837f760a2bc206566d76108126d}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classFinderClient_af11d5dde871a110400bb1f5e0466ea41}{
void {\bfseries dispatch\_\-tunneled\_\-xrl\_\-cb} (const \hyperlink{classXrlError}{XrlError} \&e, const \hyperlink{classXrlArgs}{XrlArgs} $\ast$a) const }
\label{classFinderClient_af11d5dde871a110400bb1f5e0466ea41}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Class that represents clients of \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}. The \hyperlink{classFinderClient}{FinderClient} class performs communication processing with \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} on behalf of XORP processes. It handles XRL registration and resolution requests. 

\subsection{Member Function Documentation}
\hypertarget{classFinderClient_a9295d835fbef8d7d45f72d3b2d944668}{
\index{FinderClient@{FinderClient}!attach\_\-observer@{attach\_\-observer}}
\index{attach\_\-observer@{attach\_\-observer}!FinderClient@{FinderClient}}
\subsubsection[{attach\_\-observer}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::attach\_\-observer (
\begin{DoxyParamCaption}
\item[{{\bf FinderClientObserver} $\ast$}]{o}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_a9295d835fbef8d7d45f72d3b2d944668}


Attach a \hyperlink{classFinderClientObserver}{FinderClientObserver} instance to receive event notifications. 


\begin{DoxyParams}{Parameters}
{\em o} & pointer to observer to receive notifications.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, false if an observer is already present. 
\end{DoxyReturn}
\hypertarget{classFinderClient_ac51eab633b7e94fc7e3483ee4dcfbddb}{
\index{FinderClient@{FinderClient}!connected@{connected}}
\index{connected@{connected}!FinderClient@{FinderClient}}
\subsubsection[{connected}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::connected (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classFinderClient_ac51eab633b7e94fc7e3483ee4dcfbddb}
\begin{DoxyReturn}{Returns}
true if a connection is established with \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}. 
\end{DoxyReturn}
\hypertarget{classFinderClient_ada44408700d245114064d503972817fd}{
\index{FinderClient@{FinderClient}!detach\_\-observer@{detach\_\-observer}}
\index{detach\_\-observer@{detach\_\-observer}!FinderClient@{FinderClient}}
\subsubsection[{detach\_\-observer}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::detach\_\-observer (
\begin{DoxyParamCaption}
\item[{{\bf FinderClientObserver} $\ast$}]{o}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_ada44408700d245114064d503972817fd}


Detach \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClientObserver}{FinderClientObserver} instance. 


\begin{DoxyParams}{Parameters}
{\em o} & pointer to \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClientObserver}{FinderClientObserver} be removed.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, false if \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClientObserver}{FinderClientObserver} is not \hyperlink{protocolthe-p}{the} current observer. 
\end{DoxyReturn}
\hypertarget{classFinderClient_a57aee941db018b68aa346fd26e740fe0}{
\index{FinderClient@{FinderClient}!enable\_\-xrls@{enable\_\-xrls}}
\index{enable\_\-xrls@{enable\_\-xrls}!FinderClient@{FinderClient}}
\subsubsection[{enable\_\-xrls}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::enable\_\-xrls (
\begin{DoxyParamCaption}
\item[{const string \&}]{instance\_\-name}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_a57aee941db018b68aa346fd26e740fe0}


Request \hyperlink{classFinder}{Finder} advertise Xrls associated with an \hyperlink{classXrl}{Xrl} Target instance to other XORP \hyperlink{classXrl}{Xrl} targets. 

Until \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} has satisfied this request \hyperlink{protocolthe-p}{the} \hyperlink{classXrl}{Xrl} Target has no visibility in \hyperlink{protocolthe-p}{the} \hyperlink{classXrl}{Xrl} universe.


\begin{DoxyParams}{Parameters}
{\em instance\_\-name} & unique name associated with \hyperlink{classXrl}{Xrl} Target to be advertised.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, false if instance\_\-name has not previously been registered with \hyperlink{classFinderClient}{FinderClient}. 
\end{DoxyReturn}
\hypertarget{classFinderClient_a70cae76069a2c7bf87bee04b6c713a6c}{
\index{FinderClient@{FinderClient}!forward\_\-finder\_\-xrl@{forward\_\-finder\_\-xrl}}
\index{forward\_\-finder\_\-xrl@{forward\_\-finder\_\-xrl}!FinderClient@{FinderClient}}
\subsubsection[{forward\_\-finder\_\-xrl}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::forward\_\-finder\_\-xrl (
\begin{DoxyParamCaption}
\item[{const {\bf Xrl} \&}]{x, }
\item[{const XrlPFSender::SendCallback \&}]{cb}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_a70cae76069a2c7bf87bee04b6c713a6c}


\hyperlink{structSend}{Send} an \hyperlink{classXrl}{Xrl} for \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} to dispatch. 

This is \hyperlink{protocolthe-p}{the} mechanism that allows clients of \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} to interrogate \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} through an \hyperlink{classXrl}{Xrl} interface.


\begin{DoxyParams}{Parameters}
{\em x} & \hyperlink{classXrl}{Xrl} to be dispatched. \\
\hline
{\em cb} & callback to be called with dispatch result. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success. 
\end{DoxyReturn}
\hypertarget{classFinderClient_a7aeec4774aa48c4b905340c5790a16c0}{
\index{FinderClient@{FinderClient}!messenger\_\-stopped\_\-event@{messenger\_\-stopped\_\-event}}
\index{messenger\_\-stopped\_\-event@{messenger\_\-stopped\_\-event}!FinderClient@{FinderClient}}
\subsubsection[{messenger\_\-stopped\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void FinderClient::messenger\_\-stopped\_\-event (
\begin{DoxyParamCaption}
\item[{{\bf FinderMessengerBase} $\ast$}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, virtual\mbox{]}}}}
\label{classFinderClient_a7aeec4774aa48c4b905340c5790a16c0}


Method called when Messenger is unable to continue. 

For instance, network connection lost. 

Implements \hyperlink{classFinderMessengerManager_a3c3b9572819175b8f9f6f2097abbfc43}{FinderMessengerManager}.

\hypertarget{classFinderClient_a04e6417434c1114f867e495d5b306ba6}{
\index{FinderClient@{FinderClient}!query@{query}}
\index{query@{query}!FinderClient@{FinderClient}}
\subsubsection[{query}]{\setlength{\rightskip}{0pt plus 5cm}void FinderClient::query (
\begin{DoxyParamCaption}
\item[{{\bf EventLoop} \&}]{eventloop, }
\item[{const string \&}]{xrl, }
\item[{const QueryCallback \&}]{qcb}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_a04e6417434c1114f867e495d5b306ba6}


Request resolution of an \hyperlink{classXrl}{Xrl}. 

If \hyperlink{protocolthe-p}{the} \hyperlink{classXrl}{Xrl} to be resolved in cache exists in \hyperlink{protocolthe-p}{the} FinderClients cache, \hyperlink{protocolthe-p}{the} callback provided as a function argument is invoked immediately. Otherwise \hyperlink{protocolthe-p}{the} request is forwarded to \hyperlink{protocolthe-p}{the} finder, \hyperlink{protocolthe-p}{the} cache updated, and callback dispatched when \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} answers \hyperlink{protocolthe-p}{the} request.


\begin{DoxyParams}{Parameters}
{\em eventloop} & \hyperlink{protocolthe-p}{the} event loop. \\
\hline
{\em xrl} & \hyperlink{classXrl}{Xrl} to be resolved. \\
\hline
{\em qcb} & callback to be dispatched when result is availble. \\
\hline
\end{DoxyParams}
\hypertarget{classFinderClient_a222c38e540c5b9bcb035e6a1c13afd18}{
\index{FinderClient@{FinderClient}!query\_\-cache@{query\_\-cache}}
\index{query\_\-cache@{query\_\-cache}!FinderClient@{FinderClient}}
\subsubsection[{query\_\-cache}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf FinderDBEntry} $\ast$ FinderClient::query\_\-cache (
\begin{DoxyParamCaption}
\item[{const string \&}]{xrl}
\end{DoxyParamCaption}
) const}}
\label{classFinderClient_a222c38e540c5b9bcb035e6a1c13afd18}


Attempt to resolve \hyperlink{classXrl}{Xrl} from cache. 


\begin{DoxyParams}{Parameters}
{\em xrl} & \hyperlink{classXrl}{Xrl} to be resolved.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to cached entry on success, 0 otherwise. 
\end{DoxyReturn}
\hypertarget{classFinderClient_a80eedfd93e798cdb7c9255de6b3c5639}{
\index{FinderClient@{FinderClient}!query\_\-self@{query\_\-self}}
\index{query\_\-self@{query\_\-self}!FinderClient@{FinderClient}}
\subsubsection[{query\_\-self}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::query\_\-self (
\begin{DoxyParamCaption}
\item[{const string \&}]{incoming\_\-xrl\_\-command, }
\item[{string \&}]{local\_\-xrl\_\-command}
\end{DoxyParamCaption}
) const}}
\label{classFinderClient_a80eedfd93e798cdb7c9255de6b3c5639}


Resolve \hyperlink{classXrl}{Xrl} that an \hyperlink{classXrl}{Xrl} Target associated with \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClient}{FinderClient} registered. 


\begin{DoxyParams}{Parameters}
{\em incoming\_\-xrl\_\-command} & \hyperlink{protocolthe-p}{the} command component of \hyperlink{protocolthe-p}{the} \hyperlink{classXrl}{Xrl} being resolved. \\
\hline
{\em local\_\-xrl\_\-command} & \hyperlink{protocolthe-p}{the} local name of \hyperlink{protocolthe-p}{the} \hyperlink{classXrl}{Xrl} command being resolved. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true and assign value to local\_\-xrl\_\-command on success, false on failure. 
\end{DoxyReturn}
\hypertarget{classFinderClient_a7584a65a93e2f4eaf9f367555ddd1126}{
\index{FinderClient@{FinderClient}!ready@{ready}}
\index{ready@{ready}!FinderClient@{FinderClient}}
\subsubsection[{ready}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::ready (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classFinderClient_a7584a65a93e2f4eaf9f367555ddd1126}
\begin{DoxyReturn}{Returns}
true if \hyperlink{classFinderClient}{FinderClient} has registered Xrls and is considered operational. 
\end{DoxyReturn}
\hypertarget{classFinderClient_a51bc486d26db45eb8d649e6963984f00}{
\index{FinderClient@{FinderClient}!register\_\-xrl@{register\_\-xrl}}
\index{register\_\-xrl@{register\_\-xrl}!FinderClient@{FinderClient}}
\subsubsection[{register\_\-xrl}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::register\_\-xrl (
\begin{DoxyParamCaption}
\item[{const string \&}]{instance\_\-name, }
\item[{const string \&}]{xrl, }
\item[{const string \&}]{pf\_\-name, }
\item[{const string \&}]{pf\_\-args}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_a51bc486d26db45eb8d649e6963984f00}


Register an \hyperlink{classXrl}{Xrl} with \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}. 


\begin{DoxyParams}{Parameters}
{\em instance\_\-name} & unique name associated with \hyperlink{classXrl}{Xrl} Target and making \hyperlink{protocolthe-p}{the} registration.\\
\hline
{\em xrl} & string representation of \hyperlink{protocolthe-p}{the} \hyperlink{classXrl}{Xrl}. \\
\hline
{\em pf\_\-name} & protocol family name that implements \hyperlink{classXrl}{Xrl}. \\
\hline
{\em pf\_\-args} & protocol family arguments to locate dispatcher for registered \hyperlink{classXrl}{Xrl}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if registration request is successfully enqueued, false otherwise. 
\end{DoxyReturn}
\hypertarget{classFinderClient_aa3608da6a55187dc7708ef949a743950}{
\index{FinderClient@{FinderClient}!register\_\-xrl\_\-target@{register\_\-xrl\_\-target}}
\index{register\_\-xrl\_\-target@{register\_\-xrl\_\-target}!FinderClient@{FinderClient}}
\subsubsection[{register\_\-xrl\_\-target}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::register\_\-xrl\_\-target (
\begin{DoxyParamCaption}
\item[{const string \&}]{instance\_\-name, }
\item[{const string \&}]{class\_\-name, }
\item[{const {\bf XrlDispatcher} $\ast$}]{dispatcher}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_aa3608da6a55187dc7708ef949a743950}


Register an \hyperlink{classXrl}{Xrl} Target with \hyperlink{protocolthe-p}{the} \hyperlink{classFinderClient}{FinderClient} and place request with \hyperlink{classFinder}{Finder} to perform registration. 

The request to \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} is asynchronous and there is a delay between when \hyperlink{protocolthe-p}{the} request is made when it is satisfied.


\begin{DoxyParams}{Parameters}
{\em instance\_\-name} & a unique name to be associated with \hyperlink{protocolthe-p}{the} Target. \\
\hline
{\em class\_\-name} & \hyperlink{protocolthe-p}{the} class name that \hyperlink{protocolthe-p}{the} Target is an instance of. \\
\hline
{\em dispatcher} & pointer to \hyperlink{classXrl}{Xrl} dispatcher that can execute \hyperlink{protocolthe-p}{the} command.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, false if instance\_\-name or class\_\-name are empty. 
\end{DoxyReturn}
\hypertarget{classFinderClient_a06e8cf7f4ed11bc60e8ff703dd7bba05}{
\index{FinderClient@{FinderClient}!uncache\_\-result@{uncache\_\-result}}
\index{uncache\_\-result@{uncache\_\-result}!FinderClient@{FinderClient}}
\subsubsection[{uncache\_\-result}]{\setlength{\rightskip}{0pt plus 5cm}void FinderClient::uncache\_\-result (
\begin{DoxyParamCaption}
\item[{const {\bf FinderDBEntry} $\ast$}]{dbe}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_a06e8cf7f4ed11bc60e8ff703dd7bba05}


Remove an resolved entry from cache. 

This method is typically called when \hyperlink{protocolthe-p}{the} information provided has been useful to consumer. ie because \hyperlink{protocolthe-p}{the} answer is found to be no longer valid. \hypertarget{classFinderClient_a2bf9ccd3321bb20f912d88c8fe151b0e}{
\index{FinderClient@{FinderClient}!unregister\_\-xrl\_\-target@{unregister\_\-xrl\_\-target}}
\index{unregister\_\-xrl\_\-target@{unregister\_\-xrl\_\-target}!FinderClient@{FinderClient}}
\subsubsection[{unregister\_\-xrl\_\-target}]{\setlength{\rightskip}{0pt plus 5cm}bool FinderClient::unregister\_\-xrl\_\-target (
\begin{DoxyParamCaption}
\item[{const string \&}]{instance\_\-name}
\end{DoxyParamCaption}
)}}
\label{classFinderClient_a2bf9ccd3321bb20f912d88c8fe151b0e}


Unregister \hyperlink{classXrl}{Xrl} Target with \hyperlink{classFinderClient}{FinderClient} and place a request with \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} to remove registration. 

The request to \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder} is asynchronous and there is a delay between when \hyperlink{protocolthe-p}{the} request is made when it is satisfied.


\begin{DoxyParams}{Parameters}
{\em instance\_\-name} & unique name associated with \hyperlink{classXrl}{Xrl} Target. \\
\hline
\end{DoxyParams}


The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/libxipc/finder\_\-client.hh\item 
/home/greearb/git/xorp.ct.github/xorp/libxipc/finder\_\-client.cc\end{DoxyCompactItemize}
