\hypertarget{classXrlPortIO}{
\section{XrlPortIO$<$ A $>$ Class Template Reference}
\label{classXrlPortIO}\index{XrlPortIO@{XrlPortIO}}
}
Inheritance diagram for XrlPortIO$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classXrlPortIO}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlPortIO_af804dc38a343bfd75fcbc430ac1edfe3}{
typedef A {\bfseries Addr}}
\label{classXrlPortIO_af804dc38a343bfd75fcbc430ac1edfe3}

\item 
\hypertarget{classXrlPortIO_a05dc5c19584cf18df0ac0fe9156463ff}{
typedef \hyperlink{classPortIOUserBase}{PortIOUserBase}$<$ A $>$ {\bfseries PortIOUser}}
\label{classXrlPortIO_a05dc5c19584cf18df0ac0fe9156463ff}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlPortIO_a599970afeda78f5f451a400b299209cc}{
{\bfseries XrlPortIO} (\hyperlink{classXrlRouter}{XrlRouter} \&xr, \hyperlink{classPortIOUserBase}{PortIOUser} \&port, const string \&ifname, const string \&vifname, const Addr \&addr)}
\label{classXrlPortIO_a599970afeda78f5f451a400b299209cc}

\item 
int \hyperlink{classXrlPortIO_a75251aecfa86d0b2ca39ae2eb14e42bf}{startup} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classStartup}{Startup}. \item\end{DoxyCompactList}\item 
int \hyperlink{classXrlPortIO_a70fa396b6e75456754cfaae16dd68140}{shutdown} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classShutdown}{Shutdown}. \item\end{DoxyCompactList}\item 
bool \hyperlink{classXrlPortIO_ab9ceceaaf4e99591f9b5bd575b60e87d}{send} (const Addr \&dst\_\-addr, uint16\_\-t dst\_\-port, const vector$<$ uint8\_\-t $>$ \&rip\_\-packet)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} packet. \item\end{DoxyCompactList}\item 
\hypertarget{classXrlPortIO_a01e03741e127145289f4bbe8b8e1d709}{
bool \hyperlink{classXrlPortIO_a01e03741e127145289f4bbe8b8e1d709}{pending} () const }
\label{classXrlPortIO_a01e03741e127145289f4bbe8b8e1d709}

\begin{DoxyCompactList}\small\item\em Return true if awaiting \hyperlink{classXrlPortIO_ab9ceceaaf4e99591f9b5bd575b60e87d}{send()} completion, false otherwise. \item\end{DoxyCompactList}\item 
\hypertarget{classXrlPortIO_a91b5f13d37e844a840ebd426c1923c75}{
const string \& \hyperlink{classXrlPortIO_a91b5f13d37e844a840ebd426c1923c75}{socket\_\-server} () const }
\label{classXrlPortIO_a91b5f13d37e844a840ebd426c1923c75}

\begin{DoxyCompactList}\small\item\em Get name of socket server used to instantiate socket. \item\end{DoxyCompactList}\item 
\hypertarget{classXrlPortIO_a7962602966aa9b2b32b7c9cf9baac0a1}{
const string \& {\bfseries socket\_\-id} () const }
\label{classXrlPortIO_a7962602966aa9b2b32b7c9cf9baac0a1}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlPortIO_a7fbc96689877f32a5e90bcaa0f3b9055}{
\hyperlink{classXrlRouter}{XrlRouter} \& {\bfseries \_\-xr}}
\label{classXrlPortIO_a7fbc96689877f32a5e90bcaa0f3b9055}

\item 
\hypertarget{classXrlPortIO_a1aa118fbf9954c4ef73da4e2a180ac23}{
string {\bfseries \_\-ss}}
\label{classXrlPortIO_a1aa118fbf9954c4ef73da4e2a180ac23}

\item 
\hypertarget{classXrlPortIO_af438f51b26237a58c0d013a137470599}{
string {\bfseries \_\-sid}}
\label{classXrlPortIO_af438f51b26237a58c0d013a137470599}

\item 
\hypertarget{classXrlPortIO_ab6fb75eca92118fe23364694aebc89a0}{
bool {\bfseries \_\-pending}}
\label{classXrlPortIO_ab6fb75eca92118fe23364694aebc89a0}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classXrlPortIO_aeede73d88df9492b2e9d96187e04ab94}{
bool {\bfseries startup\_\-socket} ()}
\label{classXrlPortIO_aeede73d88df9492b2e9d96187e04ab94}

\item 
\hypertarget{classXrlPortIO_a26f1efbb962b4b760ff909440903b9e4}{
bool {\bfseries request\_\-open\_\-bind\_\-socket} ()}
\label{classXrlPortIO_a26f1efbb962b4b760ff909440903b9e4}

\item 
\hypertarget{classXrlPortIO_a30ab2dc3bf17c69fed8d3416a9024259}{
void {\bfseries open\_\-bind\_\-socket\_\-cb} (const \hyperlink{classXrlError}{XrlError} \&xe, const string $\ast$psid)}
\label{classXrlPortIO_a30ab2dc3bf17c69fed8d3416a9024259}

\item 
\hypertarget{classXrlPortIO_a644539a98d58ba7e206dac2db4053e32}{
bool {\bfseries request\_\-ttl} ()}
\label{classXrlPortIO_a644539a98d58ba7e206dac2db4053e32}

\item 
\hypertarget{classXrlPortIO_ac81a9ce4d3069480199c028956e13ba2}{
void {\bfseries ttl\_\-cb} (const \hyperlink{classXrlError}{XrlError} \&xe)}
\label{classXrlPortIO_ac81a9ce4d3069480199c028956e13ba2}

\item 
\hypertarget{classXrlPortIO_a87945f731902daf37ba5740fd7cbaf1e}{
bool {\bfseries request\_\-no\_\-loop} ()}
\label{classXrlPortIO_a87945f731902daf37ba5740fd7cbaf1e}

\item 
\hypertarget{classXrlPortIO_ae7f2f1018c9a7345d9c0edc63ea8358d}{
void {\bfseries no\_\-loop\_\-cb} (const \hyperlink{classXrlError}{XrlError} \&xe)}
\label{classXrlPortIO_ae7f2f1018c9a7345d9c0edc63ea8358d}

\item 
\hypertarget{classXrlPortIO_a8f3c01628cf622645fc0428feaac1a25}{
bool {\bfseries request\_\-socket\_\-join} ()}
\label{classXrlPortIO_a8f3c01628cf622645fc0428feaac1a25}

\item 
\hypertarget{classXrlPortIO_ab17cc68510979e010af2024d90cdbf5f}{
void {\bfseries socket\_\-join\_\-cb} (const \hyperlink{classXrlError}{XrlError} \&xe)}
\label{classXrlPortIO_ab17cc68510979e010af2024d90cdbf5f}

\item 
\hypertarget{classXrlPortIO_afa0ad45e245f732fbf3da9fee78e764c}{
bool {\bfseries request\_\-socket\_\-leave} ()}
\label{classXrlPortIO_afa0ad45e245f732fbf3da9fee78e764c}

\item 
\hypertarget{classXrlPortIO_ab2d4e08183cfa2f0470924220ece1cc2}{
void {\bfseries socket\_\-leave\_\-cb} (const \hyperlink{classXrlError}{XrlError} \&xe)}
\label{classXrlPortIO_ab2d4e08183cfa2f0470924220ece1cc2}

\item 
\hypertarget{classXrlPortIO_a62526e7d4866f5d813d9dfbe0c03d94c}{
void {\bfseries send\_\-cb} (const \hyperlink{classXrlError}{XrlError} \&xe)}
\label{classXrlPortIO_a62526e7d4866f5d813d9dfbe0c03d94c}

\end{DoxyCompactItemize}
\subsubsection*{template$<$typename A$>$ class XrlPortIO$<$ A $>$}



\subsection{Member Function Documentation}
\hypertarget{classXrlPortIO_ab9ceceaaf4e99591f9b5bd575b60e87d}{
\index{XrlPortIO@{XrlPortIO}!send@{send}}
\index{send@{send}!XrlPortIO@{XrlPortIO}}
\subsubsection[{send}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf XrlPortIO}$<$ A $>$::send (
\begin{DoxyParamCaption}
\item[{const Addr \&}]{dst\_\-addr, }
\item[{uint16\_\-t}]{dst\_\-port, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{rip\_\-packet}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classXrlPortIO_ab9ceceaaf4e99591f9b5bd575b60e87d}


\hyperlink{structSend}{Send} packet. 

Status of instance must be running. When packet is sent, \hyperlink{protocolthe-p}{the} \hyperlink{classXrlPortIO_a01e03741e127145289f4bbe8b8e1d709}{pending()} method will return true until \hyperlink{protocolthe-p}{the} \hyperlink{classXrl}{Xrl} sending \hyperlink{protocolthe-p}{the} packet has completed.


\begin{DoxyParams}{Parameters}
{\em dst\_\-addr} & address to send packet. \\
\hline
{\em dst\_\-port} & port to send packet to. \\
\hline
{\em rip\_\-packet} & vector containing rip packet to be sent.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
false on immediately detectable failure, true otherwise. 
\end{DoxyReturn}


Implements \hyperlink{classPortIOBase_a05d942cfaac1f0ace17e51f75041cb86}{PortIOBase$<$ A $>$}.

\hypertarget{classXrlPortIO_a70fa396b6e75456754cfaae16dd68140}{
\index{XrlPortIO@{XrlPortIO}!shutdown@{shutdown}}
\index{shutdown@{shutdown}!XrlPortIO@{XrlPortIO}}
\subsubsection[{shutdown}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf XrlPortIO}$<$ A $>$::shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classXrlPortIO_a70fa396b6e75456754cfaae16dd68140}


\hyperlink{classShutdown}{Shutdown}. 

Sends request to close socket and transitions into SERVICE\_\-SHUTTING\_\-DOWN state. When socket is closed transition to SERVICE\_\-SHUTDOWN occurs.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classServiceBase_a6ad34506fd5a446d5667abcb2e1b593b}{ServiceBase}.

\hypertarget{classXrlPortIO_a75251aecfa86d0b2ca39ae2eb14e42bf}{
\index{XrlPortIO@{XrlPortIO}!startup@{startup}}
\index{startup@{startup}!XrlPortIO@{XrlPortIO}}
\subsubsection[{startup}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf XrlPortIO}$<$ A $>$::startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classXrlPortIO_a75251aecfa86d0b2ca39ae2eb14e42bf}


\hyperlink{classStartup}{Startup}. 

Sends request to FEA for socket server for address and then attempts to instantiate socket with socket server. If both operations are successful, instance status transitions to SERVICE\_\-RUNNING. Otherwise, it transitions to failed.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classServiceBase_a791755872b2056ddd82a2f00904c7d2b}{ServiceBase}.



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