\hypertarget{classXrlRouter}{
\section{XrlRouter Class Reference}
\label{classXrlRouter}\index{XrlRouter@{XrlRouter}}
}
Inheritance diagram for XrlRouter:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=12.000000cm]{classXrlRouter}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlRouter_a5969e1409449d983d91f142b19abf112}{
typedef XrlSender::Callback {\bfseries XrlCallback}}
\label{classXrlRouter_a5969e1409449d983d91f142b19abf112}

\item 
\hypertarget{classXrlRouter_ac683d9d7c59cba1ad5312d408758e6a9}{
typedef \hyperlink{classXrlRouterDispatchState}{XrlRouterDispatchState} {\bfseries DispatchState}}
\label{classXrlRouter_ac683d9d7c59cba1ad5312d408758e6a9}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlRouter_a6e828c2c9dc5ef8e0f5c5db7d2b370bc}{
{\bfseries XrlRouter} (\hyperlink{classEventLoop}{EventLoop} \&e, const char $\ast$class\_\-name, const char $\ast$finder\_\-address, uint16\_\-t finder\_\-port)  throw (InvalidAddress)}
\label{classXrlRouter_a6e828c2c9dc5ef8e0f5c5db7d2b370bc}

\item 
\hypertarget{classXrlRouter_a3835069c4658cff1dac65cf0ea828632}{
{\bfseries XrlRouter} (\hyperlink{classEventLoop}{EventLoop} \&e, const char $\ast$class\_\-name, \hyperlink{classIPv4}{IPv4} finder\_\-address, uint16\_\-t finder\_\-port)  throw (InvalidAddress)}
\label{classXrlRouter_a3835069c4658cff1dac65cf0ea828632}

\item 
bool \hyperlink{classXrlRouter_a0957c77e37fc4f59440d890ee0af9f6d}{add\_\-listener} (\hyperlink{classXrlPFListener}{XrlPFListener} $\ast$listener)
\begin{DoxyCompactList}\small\item\em Add a protocol family listener. \item\end{DoxyCompactList}\item 
\hypertarget{classXrlRouter_a1eb80cc75fd5fef17b5230df0a95f31e}{
void \hyperlink{classXrlRouter_a1eb80cc75fd5fef17b5230df0a95f31e}{finalize} ()}
\label{classXrlRouter_a1eb80cc75fd5fef17b5230df0a95f31e}

\begin{DoxyCompactList}\small\item\em Start registration of XRLs that have been registered via add\_\-handler with \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}. \item\end{DoxyCompactList}\item 
bool \hyperlink{classXrlRouter_ac5f5b05992b495854333495f7cc77a56}{finalized} () const 
\item 
bool \hyperlink{classXrlRouter_ae1f752dc2b02bfa3c29170d42a5b414e}{connected} () const 
\item 
bool \hyperlink{classXrlRouter_aa313d2b80c43ae66704b7bf4a6e90ee3}{connect\_\-failed} () const 
\item 
bool \hyperlink{classXrlRouter_a57ad11b2f0c0004cad5b4a5880678d45}{ready} () const 
\item 
bool \hyperlink{classXrlRouter_ac9db26657008f8954cb7eac1234e608a}{failed} () const 
\item 
\hypertarget{classXrlRouter_a5cd79ab96e039a81f6a490161bbae244}{
virtual string {\bfseries toString} () const }
\label{classXrlRouter_a5cd79ab96e039a81f6a490161bbae244}

\item 
bool \hyperlink{classXrlRouter_a4a051eab5d9c9edbf56533e4de7b5da4}{send} (const \hyperlink{classXrl}{Xrl} \&xrl, const XrlCallback \&cb)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} XRL. \item\end{DoxyCompactList}\item 
bool \hyperlink{classXrlRouter_aea9da6dcf7e44223fbacc9daea6d0def}{pending} () const 
\item 
bool \hyperlink{classXrlRouter_a39ee484d91e6a63afb02b56f2b2ae2cd}{add\_\-handler\_\-internal} (const string \&cmd, const XrlRecvAsyncCallback \&rcb)
\begin{DoxyCompactList}\small\item\em Add an XRL method handler. \item\end{DoxyCompactList}\item 
\hyperlink{classEventLoop}{EventLoop} \& \hyperlink{classXrlRouter_ad7b02984264813e752cb63e2ed7342db}{eventloop} ()
\item 
\hypertarget{classXrlRouter_a9be5e013786ba2979a50e208c4b8b088}{
const string \& {\bfseries instance\_\-name} () const }
\label{classXrlRouter_a9be5e013786ba2979a50e208c4b8b088}

\item 
\hypertarget{classXrlRouter_aedd7cd8d5517b78f63f69279ea395525}{
const string \& {\bfseries class\_\-name} () const }
\label{classXrlRouter_aedd7cd8d5517b78f63f69279ea395525}

\item 
\hypertarget{classXrlRouter_a3cf9254b8c25c0b9188bbb98b57cc3e1}{
\hyperlink{classIPv4}{IPv4} {\bfseries finder\_\-address} () const }
\label{classXrlRouter_a3cf9254b8c25c0b9188bbb98b57cc3e1}

\item 
\hypertarget{classXrlRouter_a8974bebe38b3ecd46806eb9fa6fa8aa5}{
uint16\_\-t {\bfseries finder\_\-port} () const }
\label{classXrlRouter_a8974bebe38b3ecd46806eb9fa6fa8aa5}

\item 
\hypertarget{classXrlRouter_af1691852c378b694867f7d9b1eaa5821}{
\hyperlink{structXrlDispatcher_1_1XI}{XI} $\ast$ {\bfseries lookup\_\-xrl} (const string \&name) const }
\label{classXrlRouter_af1691852c378b694867f7d9b1eaa5821}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlRouter_a27bd1d3e253f4cd00d48376cbeab2320}{
virtual void \hyperlink{classXrlRouter_a27bd1d3e253f4cd00d48376cbeab2320}{finder\_\-connect\_\-event} ()}
\label{classXrlRouter_a27bd1d3e253f4cd00d48376cbeab2320}

\begin{DoxyCompactList}\small\item\em Called when \hyperlink{classFinder}{Finder} connection is established. \item\end{DoxyCompactList}\item 
\hypertarget{classXrlRouter_ac10ae311195fd0d8c350f9d8172602f9}{
virtual void \hyperlink{classXrlRouter_ac10ae311195fd0d8c350f9d8172602f9}{finder\_\-disconnect\_\-event} ()}
\label{classXrlRouter_ac10ae311195fd0d8c350f9d8172602f9}

\begin{DoxyCompactList}\small\item\em Called when \hyperlink{classFinder}{Finder} disconnect occurs. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classXrlRouter_abb02bd6c9e8445a6b0a7897694004f38}{finder\_\-ready\_\-event} (const string \&tgt\_\-name)
\begin{DoxyCompactList}\small\item\em Called when an \hyperlink{classXrl}{Xrl} Target becomes visible to other processes. \item\end{DoxyCompactList}\item 
\hypertarget{classXrlRouter_a569a2383eaefc5d335fb011887758f8a}{
void {\bfseries dispatch\_\-xrl} (const string \&method\_\-name, const \hyperlink{classXrlArgs}{XrlArgs} \&inputs, XrlDispatcherCallback outputs) const }
\label{classXrlRouter_a569a2383eaefc5d335fb011887758f8a}

\item 
void \hyperlink{classXrlRouter_a5848517f11c08e4e32497f55c0701010}{resolve\_\-callback} (const \hyperlink{classXrlError}{XrlError} \&e, const \hyperlink{classFinderDBEntry}{FinderDBEntry} $\ast$dbe, \hyperlink{classXrlRouterDispatchState}{XrlRouterDispatchState} $\ast$ds)
\begin{DoxyCompactList}\small\item\em Resolve callback (slow path). \item\end{DoxyCompactList}\item 
void \hyperlink{classXrlRouter_ae435982935e0cec786b3fa3e790e8f8e}{send\_\-callback} (const \hyperlink{classXrlError}{XrlError} \&e, \hyperlink{classXrlArgs}{XrlArgs} $\ast$reply, \hyperlink{classXrlPFSender}{XrlPFSender} $\ast$sender, XrlCallback user\_\-callback)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} callback (fast path). \item\end{DoxyCompactList}\item 
bool \hyperlink{classXrlRouter_ac895627e75a15c3d19bcbb6ec3ac4af4}{send\_\-resolved} (const \hyperlink{classXrl}{Xrl} \&xrl, const \hyperlink{classFinderDBEntry}{FinderDBEntry} $\ast$dbe, const XrlCallback \&dispatch\_\-cb, bool direct\_\-call)
\begin{DoxyCompactList}\small\item\em Choose appropriate \hyperlink{classXrlPFSender}{XrlPFSender} and execute \hyperlink{classXrl}{Xrl} dispatch. \item\end{DoxyCompactList}\item 
\hypertarget{classXrlRouter_af8cc1a7aa4046340e9b6aa367efb2afa}{
void {\bfseries initialize} (const char $\ast$class\_\-name, \hyperlink{classIPv4}{IPv4} finder\_\-addr, uint16\_\-t finder\_\-port)}
\label{classXrlRouter_af8cc1a7aa4046340e9b6aa367efb2afa}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlRouter_a4857bdcf68c054c7e6a70e834cf72282}{
\hyperlink{classEventLoop}{EventLoop} \& {\bfseries \_\-e}}
\label{classXrlRouter_a4857bdcf68c054c7e6a70e834cf72282}

\item 
\hypertarget{classXrlRouter_a0a17023a3d06ec1d9a9733f6d189f464}{
\hyperlink{classFinderClient}{FinderClient} $\ast$ {\bfseries \_\-fc}}
\label{classXrlRouter_a0a17023a3d06ec1d9a9733f6d189f464}

\item 
\hypertarget{classXrlRouter_a3ae7fab11004401aca39e4424004719d}{
\hyperlink{classFinderClientXrlTarget}{FinderClientXrlTarget} $\ast$ {\bfseries \_\-fxt}}
\label{classXrlRouter_a3ae7fab11004401aca39e4424004719d}

\item 
\hypertarget{classXrlRouter_ad6a51661e89be2eeb35f5c38a80135ad}{
\hyperlink{classFinderTcpAutoConnector}{FinderTcpAutoConnector} $\ast$ {\bfseries \_\-fac}}
\label{classXrlRouter_ad6a51661e89be2eeb35f5c38a80135ad}

\item 
\hypertarget{classXrlRouter_afb099bbf3570083967dc1057f4460501}{
string {\bfseries \_\-instance\_\-name}}
\label{classXrlRouter_afb099bbf3570083967dc1057f4460501}

\item 
\hypertarget{classXrlRouter_a3a8f213d302b03742893949011926740}{
bool {\bfseries \_\-finalized}}
\label{classXrlRouter_a3a8f213d302b03742893949011926740}

\item 
\hypertarget{classXrlRouter_ae5cce178940453f2ea4f1ccc2f6e2014}{
list$<$ \hyperlink{classXrlPFListener}{XrlPFListener} $\ast$ $>$ {\bfseries \_\-listeners}}
\label{classXrlRouter_ae5cce178940453f2ea4f1ccc2f6e2014}

\item 
\hypertarget{classXrlRouter_a119ad9d23309058d233637396aff8860}{
list$<$ \hyperlink{classXrlRouterDispatchState}{XrlRouterDispatchState} $\ast$ $>$ {\bfseries \_\-dsl}}
\label{classXrlRouter_a119ad9d23309058d233637396aff8860}

\item 
\hypertarget{classXrlRouter_a2d7442f132eaa2e88af9ea28bdcd511a}{
list$<$ \hyperlink{classref__ptr}{ref\_\-ptr}$<$ \hyperlink{classXrlPFSender}{XrlPFSender} $>$ $>$ {\bfseries \_\-senders}}
\label{classXrlRouter_a2d7442f132eaa2e88af9ea28bdcd511a}

\end{DoxyCompactItemize}
\subsection*{Static Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlRouter_ac8732b6164c0c3848eea4686461a45b7}{
static uint32\_\-t {\bfseries \_\-icnt} = 0}
\label{classXrlRouter_ac8732b6164c0c3848eea4686461a45b7}

\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlRouter_a1a615fc4bafd6153f01e23b81588d2ae}{
typedef map$<$ string, \hyperlink{structXrlDispatcher_1_1XI}{XI} $\ast$ $>$ {\bfseries XIM}}
\label{classXrlRouter_a1a615fc4bafd6153f01e23b81588d2ae}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlRouter_a2b5988972bec2632226b633d55032a0c}{
\hyperlink{classref__ptr}{ref\_\-ptr}$<$ \hyperlink{classXrlPFSender}{XrlPFSender} $>$ {\bfseries lookup\_\-sender} (const \hyperlink{classXrl}{Xrl} \&xrl, \hyperlink{classFinderDBEntry}{FinderDBEntry} $\ast$dbe)}
\label{classXrlRouter_a2b5988972bec2632226b633d55032a0c}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlRouter_ae4d4f870fc9c5b0b21caaa09ba869713}{
XIM {\bfseries \_\-xi\_\-cache}}
\label{classXrlRouter_ae4d4f870fc9c5b0b21caaa09ba869713}

\end{DoxyCompactItemize}


\subsection{Member Function Documentation}
\hypertarget{classXrlRouter_a39ee484d91e6a63afb02b56f2b2ae2cd}{
\index{XrlRouter@{XrlRouter}!add\_\-handler\_\-internal@{add\_\-handler\_\-internal}}
\index{add\_\-handler\_\-internal@{add\_\-handler\_\-internal}!XrlRouter@{XrlRouter}}
\subsubsection[{add\_\-handler\_\-internal}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::add\_\-handler\_\-internal (
\begin{DoxyParamCaption}
\item[{const string \&}]{cmd, }
\item[{const XrlRecvAsyncCallback \&}]{rcb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classXrlRouter_a39ee484d91e6a63afb02b56f2b2ae2cd}


Add an XRL method handler. 


\begin{DoxyParams}{Parameters}
{\em cmd} & XRL method path name. \\
\hline
{\em rcb} & callback to be dispatched when XRL method is received for invocation. \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{classXrlCmdMap}{XrlCmdMap}.

\hypertarget{classXrlRouter_a0957c77e37fc4f59440d890ee0af9f6d}{
\index{XrlRouter@{XrlRouter}!add\_\-listener@{add\_\-listener}}
\index{add\_\-listener@{add\_\-listener}!XrlRouter@{XrlRouter}}
\subsubsection[{add\_\-listener}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::add\_\-listener (
\begin{DoxyParamCaption}
\item[{{\bf XrlPFListener} $\ast$}]{listener}
\end{DoxyParamCaption}
)}}
\label{classXrlRouter_a0957c77e37fc4f59440d890ee0af9f6d}


Add a protocol family listener. 

When XRLs are registered through \hyperlink{classXrlRouter_a1eb80cc75fd5fef17b5230df0a95f31e}{XrlRouter::finalize()} they will register support for each protocol family listener added. \hypertarget{classXrlRouter_aa313d2b80c43ae66704b7bf4a6e90ee3}{
\index{XrlRouter@{XrlRouter}!connect\_\-failed@{connect\_\-failed}}
\index{connect\_\-failed@{connect\_\-failed}!XrlRouter@{XrlRouter}}
\subsubsection[{connect\_\-failed}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::connect\_\-failed (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classXrlRouter_aa313d2b80c43ae66704b7bf4a6e90ee3}
\begin{DoxyReturn}{Returns}
true if instance has encountered a connection error to \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}. 
\end{DoxyReturn}
\hypertarget{classXrlRouter_ae1f752dc2b02bfa3c29170d42a5b414e}{
\index{XrlRouter@{XrlRouter}!connected@{connected}}
\index{connected@{connected}!XrlRouter@{XrlRouter}}
\subsubsection[{connected}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::connected (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classXrlRouter_ae1f752dc2b02bfa3c29170d42a5b414e}
\begin{DoxyReturn}{Returns}
true if instance has established a connection to \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}. 
\end{DoxyReturn}
\hypertarget{classXrlRouter_ad7b02984264813e752cb63e2ed7342db}{
\index{XrlRouter@{XrlRouter}!eventloop@{eventloop}}
\index{eventloop@{eventloop}!XrlRouter@{XrlRouter}}
\subsubsection[{eventloop}]{\setlength{\rightskip}{0pt plus 5cm}{\bf EventLoop}\& XrlRouter::eventloop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classXrlRouter_ad7b02984264813e752cb63e2ed7342db}
\begin{DoxyReturn}{Returns}
\hyperlink{classEventLoop}{EventLoop} used by \hyperlink{classXrlRouter}{XrlRouter} instance. 
\end{DoxyReturn}
\hypertarget{classXrlRouter_ac9db26657008f8954cb7eac1234e608a}{
\index{XrlRouter@{XrlRouter}!failed@{failed}}
\index{failed@{failed}!XrlRouter@{XrlRouter}}
\subsubsection[{failed}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::failed (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classXrlRouter_ac9db26657008f8954cb7eac1234e608a}
\begin{DoxyReturn}{Returns}
true if instance has experienced an unrecoverable error. 
\end{DoxyReturn}
\hypertarget{classXrlRouter_ac5f5b05992b495854333495f7cc77a56}{
\index{XrlRouter@{XrlRouter}!finalized@{finalized}}
\index{finalized@{finalized}!XrlRouter@{XrlRouter}}
\subsubsection[{finalized}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::finalized (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classXrlRouter_ac5f5b05992b495854333495f7cc77a56}
\begin{DoxyReturn}{Returns}
true when XRLs 
\end{DoxyReturn}
\hypertarget{classXrlRouter_abb02bd6c9e8445a6b0a7897694004f38}{
\index{XrlRouter@{XrlRouter}!finder\_\-ready\_\-event@{finder\_\-ready\_\-event}}
\index{finder\_\-ready\_\-event@{finder\_\-ready\_\-event}!XrlRouter@{XrlRouter}}
\subsubsection[{finder\_\-ready\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void XrlRouter::finder\_\-ready\_\-event (
\begin{DoxyParamCaption}
\item[{const string \&}]{tgt\_\-name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, virtual\mbox{]}}}}
\label{classXrlRouter_abb02bd6c9e8445a6b0a7897694004f38}


Called when an \hyperlink{classXrl}{Xrl} Target becomes visible to other processes. 

Implementers of this method should check tgt\_\-name corresponds to \hyperlink{protocolthe-p}{the} XrlRouter::instance\_\-name as other targets within same process may cause this method to be invoked.

Default implementation is a no-\/op.


\begin{DoxyParams}{Parameters}
{\em tgt\_\-name} & name of \hyperlink{classXrl}{Xrl} Target becoming ready. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classFinderClientObserver_ad57a956cd2743b18cfe7a22d280a15d1}{FinderClientObserver}.



Reimplemented in \hyperlink{classIfMgrXrlMirrorRouter_a02a96880c87d6c9708aece77a4f66b9f}{IfMgrXrlMirrorRouter}.

\hypertarget{classXrlRouter_aea9da6dcf7e44223fbacc9daea6d0def}{
\index{XrlRouter@{XrlRouter}!pending@{pending}}
\index{pending@{pending}!XrlRouter@{XrlRouter}}
\subsubsection[{pending}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::pending (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classXrlRouter_aea9da6dcf7e44223fbacc9daea6d0def}
\begin{DoxyReturn}{Returns}
true if at least one \hyperlink{classXrlRouter_a4a051eab5d9c9edbf56533e4de7b5da4}{XrlRouter::send()} call is still pending a result. 
\end{DoxyReturn}


Implements \hyperlink{classXrlSender_a7d33a6c4d408c75144e829d1ee7b61d8}{XrlSender}.

\hypertarget{classXrlRouter_a57ad11b2f0c0004cad5b4a5880678d45}{
\index{XrlRouter@{XrlRouter}!ready@{ready}}
\index{ready@{ready}!XrlRouter@{XrlRouter}}
\subsubsection[{ready}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::ready (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classXrlRouter_a57ad11b2f0c0004cad5b4a5880678d45}
\begin{DoxyReturn}{Returns}
true if instance has established a connection to \hyperlink{protocolthe-p}{the} \hyperlink{classFinder}{Finder}, registered own XRLs, and should be considered operational. 
\end{DoxyReturn}
\hypertarget{classXrlRouter_a5848517f11c08e4e32497f55c0701010}{
\index{XrlRouter@{XrlRouter}!resolve\_\-callback@{resolve\_\-callback}}
\index{resolve\_\-callback@{resolve\_\-callback}!XrlRouter@{XrlRouter}}
\subsubsection[{resolve\_\-callback}]{\setlength{\rightskip}{0pt plus 5cm}void XrlRouter::resolve\_\-callback (
\begin{DoxyParamCaption}
\item[{const {\bf XrlError} \&}]{e, }
\item[{const {\bf FinderDBEntry} $\ast$}]{dbe, }
\item[{{\bf XrlRouterDispatchState} $\ast$}]{ds}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classXrlRouter_a5848517f11c08e4e32497f55c0701010}


Resolve callback (slow path). 

Called with results from asynchronous \hyperlink{classFinderClient}{FinderClient} \hyperlink{classXrl}{Xrl} queries. \hypertarget{classXrlRouter_a4a051eab5d9c9edbf56533e4de7b5da4}{
\index{XrlRouter@{XrlRouter}!send@{send}}
\index{send@{send}!XrlRouter@{XrlRouter}}
\subsubsection[{send}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::send (
\begin{DoxyParamCaption}
\item[{const {\bf Xrl} \&}]{xrl, }
\item[{const XrlCallback \&}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classXrlRouter_a4a051eab5d9c9edbf56533e4de7b5da4}


\hyperlink{structSend}{Send} XRL. 


\begin{DoxyParams}{Parameters}
{\em xrl} & XRL to be sent. \\
\hline
{\em cb} & callback to be dispatched with XRL result and return values.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if XRL accepted for sending, false if insufficient resources are available. 
\end{DoxyReturn}


Implements \hyperlink{classXrlSender_a17e2d25c7ecbd444dd1677decaf526cc}{XrlSender}.

\hypertarget{classXrlRouter_ae435982935e0cec786b3fa3e790e8f8e}{
\index{XrlRouter@{XrlRouter}!send\_\-callback@{send\_\-callback}}
\index{send\_\-callback@{send\_\-callback}!XrlRouter@{XrlRouter}}
\subsubsection[{send\_\-callback}]{\setlength{\rightskip}{0pt plus 5cm}void XrlRouter::send\_\-callback (
\begin{DoxyParamCaption}
\item[{const {\bf XrlError} \&}]{e, }
\item[{{\bf XrlArgs} $\ast$}]{reply, }
\item[{{\bf XrlPFSender} $\ast$}]{sender, }
\item[{XrlCallback}]{user\_\-callback}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classXrlRouter_ae435982935e0cec786b3fa3e790e8f8e}


\hyperlink{structSend}{Send} callback (fast path). 

FIXME: use smart ptr. \hypertarget{classXrlRouter_ac895627e75a15c3d19bcbb6ec3ac4af4}{
\index{XrlRouter@{XrlRouter}!send\_\-resolved@{send\_\-resolved}}
\index{send\_\-resolved@{send\_\-resolved}!XrlRouter@{XrlRouter}}
\subsubsection[{send\_\-resolved}]{\setlength{\rightskip}{0pt plus 5cm}bool XrlRouter::send\_\-resolved (
\begin{DoxyParamCaption}
\item[{const {\bf Xrl} \&}]{xrl, }
\item[{const {\bf FinderDBEntry} $\ast$}]{dbe, }
\item[{const XrlCallback \&}]{dispatch\_\-cb, }
\item[{bool}]{direct\_\-call}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classXrlRouter_ac895627e75a15c3d19bcbb6ec3ac4af4}


Choose appropriate \hyperlink{classXrlPFSender}{XrlPFSender} and execute \hyperlink{classXrl}{Xrl} dispatch. 

\begin{DoxyReturn}{Returns}
true on success, false otherwise. 
\end{DoxyReturn}


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