\hypertarget{classRedistXrlOutput}{
\section{RedistXrlOutput$<$ A $>$ Class Template Reference}
\label{classRedistXrlOutput}\index{RedistXrlOutput@{RedistXrlOutput}}
}


\hyperlink{classRoute}{Route} \hyperlink{classRedistributor}{Redistributor} output that sends route add and deletes to remote redistribution target via \hyperlink{protocolthe-p}{the} redist\{4,6\} xrl interfaces.  




{\ttfamily \#include $<$redist\_\-xrl.hh$>$}

Inheritance diagram for RedistXrlOutput$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=4.000000cm]{classRedistXrlOutput}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRedistXrlOutput_afbee392b376370909122cd68a0b17b4d}{
typedef \hyperlink{classRedistXrlTask}{RedistXrlTask}$<$ A $>$ {\bfseries Task}}
\label{classRedistXrlOutput_afbee392b376370909122cd68a0b17b4d}

\item 
\hypertarget{classRedistXrlOutput_a0ac6de754906d7d2f1cb130968c03544}{
typedef list$<$ \hyperlink{classRedistXrlTask}{Task} $\ast$ $>$ {\bfseries TaskQueue}}
\label{classRedistXrlOutput_a0ac6de754906d7d2f1cb130968c03544}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classRedistXrlOutput_a2f279f13ee9e245233a475f989bbdd53}{RedistXrlOutput} (\hyperlink{classRedistributor}{Redistributor}$<$ A $>$ $\ast$redistributor, \hyperlink{classXrlRouter}{XrlRouter} \&xrl\_\-router, \hyperlink{classProfile}{Profile} \&profile, const string \&from\_\-protocol, const string \&xrl\_\-target\_\-name, const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&network\_\-prefix, const string \&cookie)
\begin{DoxyCompactList}\small\item\em Constructor. \item\end{DoxyCompactList}\item 
\hypertarget{classRedistXrlOutput_a9b8b29167ed9efdc9f8a510443c72926}{
void {\bfseries add\_\-route} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&ipr)}
\label{classRedistXrlOutput_a9b8b29167ed9efdc9f8a510443c72926}

\item 
\hypertarget{classRedistXrlOutput_aee9a3f662eac2002d0f60b6e1ff2131f}{
void {\bfseries delete\_\-route} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&ipr)}
\label{classRedistXrlOutput_aee9a3f662eac2002d0f60b6e1ff2131f}

\item 
void \hyperlink{classRedistXrlOutput_a62dc6c2be9e9571cd8141aa772711903}{starting\_\-route\_\-dump} ()
\begin{DoxyCompactList}\small\item\em Method called by \hyperlink{classRedistributor}{Redistributor} to indicate start of initial route dump. \item\end{DoxyCompactList}\item 
void \hyperlink{classRedistXrlOutput_ae613883d2861c0688cbdc495f8416748}{finishing\_\-route\_\-dump} ()
\begin{DoxyCompactList}\small\item\em Method called by \hyperlink{classRedistributor}{Redistributor} to indicate end of initial route dump. \item\end{DoxyCompactList}\item 
\hypertarget{classRedistXrlOutput_a11ccd12651fbbe267c041db6846ca28d}{
virtual void {\bfseries task\_\-completed} (\hyperlink{classRedistXrlTask}{Task} $\ast$task)}
\label{classRedistXrlOutput_a11ccd12651fbbe267c041db6846ca28d}

\item 
\hypertarget{classRedistXrlOutput_a75c0de5387282c1d4db7ed96ae6b8c7c}{
void {\bfseries task\_\-failed\_\-fatally} (\hyperlink{classRedistXrlTask}{Task} $\ast$task)}
\label{classRedistXrlOutput_a75c0de5387282c1d4db7ed96ae6b8c7c}

\item 
\hypertarget{classRedistXrlOutput_ada23dfaac0afff798ec3bf0fc63a7529}{
const string \& {\bfseries xrl\_\-target\_\-name} () const }
\label{classRedistXrlOutput_ada23dfaac0afff798ec3bf0fc63a7529}

\item 
\hypertarget{classRedistXrlOutput_a4d762b8decc35bf44873ffe7d9bc1ace}{
const string \& {\bfseries cookie} () const }
\label{classRedistXrlOutput_a4d762b8decc35bf44873ffe7d9bc1ace}

\end{DoxyCompactItemize}
\subsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRedistXrlOutput_affd008a33a2a9f1f72940ed7de2f7ad0}{
static const uint32\_\-t {\bfseries HI\_\-WATER} = 100}
\label{classRedistXrlOutput_affd008a33a2a9f1f72940ed7de2f7ad0}

\item 
\hypertarget{classRedistXrlOutput_ad96976508db01ae098c5fca7aebd2ef6}{
static const uint32\_\-t {\bfseries LO\_\-WATER} = 5}
\label{classRedistXrlOutput_ad96976508db01ae098c5fca7aebd2ef6}

\item 
\hypertarget{classRedistXrlOutput_a58c941602b25cf7bf91099957f833aee}{
static const uint32\_\-t {\bfseries RETRY\_\-PAUSE\_\-MS} = 10}
\label{classRedistXrlOutput_a58c941602b25cf7bf91099957f833aee}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRedistXrlOutput_a8ff65c3f387f8925c6dde5af42fa1a65}{
void {\bfseries start\_\-next\_\-task} ()}
\label{classRedistXrlOutput_a8ff65c3f387f8925c6dde5af42fa1a65}

\item 
\hypertarget{classRedistXrlOutput_a99586733c96b07ba63c8b5ec742f28f3}{
void {\bfseries incr\_\-inflight} ()}
\label{classRedistXrlOutput_a99586733c96b07ba63c8b5ec742f28f3}

\item 
\hypertarget{classRedistXrlOutput_abb47306d7f297ba8a6b1d1e8e484cbba}{
void {\bfseries decr\_\-inflight} ()}
\label{classRedistXrlOutput_abb47306d7f297ba8a6b1d1e8e484cbba}

\item 
\hypertarget{classRedistXrlOutput_a43b2d1a52dd491b176af1103b9a70631}{
void {\bfseries enqueue\_\-task} (\hyperlink{classRedistXrlTask}{Task} $\ast$task)}
\label{classRedistXrlOutput_a43b2d1a52dd491b176af1103b9a70631}

\item 
\hypertarget{classRedistXrlOutput_ab57f99c46cba4aac56eb712e00eb1aa3}{
void {\bfseries dequeue\_\-task} (\hyperlink{classRedistXrlTask}{Task} $\ast$task)}
\label{classRedistXrlOutput_ab57f99c46cba4aac56eb712e00eb1aa3}

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

\item 
\hypertarget{classRedistXrlOutput_aa6d5c1a7527ad5a30a9665d657e026e5}{
\hyperlink{classProfile}{Profile} \& {\bfseries \_\-profile}}
\label{classRedistXrlOutput_aa6d5c1a7527ad5a30a9665d657e026e5}

\item 
\hypertarget{classRedistXrlOutput_a92eb380bdb1350af4d2e543db2b4109b}{
string {\bfseries \_\-from\_\-protocol}}
\label{classRedistXrlOutput_a92eb380bdb1350af4d2e543db2b4109b}

\item 
\hypertarget{classRedistXrlOutput_aa89727e5219e0d51fbef6d5c92363c6b}{
string {\bfseries \_\-target\_\-name}}
\label{classRedistXrlOutput_aa89727e5219e0d51fbef6d5c92363c6b}

\item 
\hypertarget{classRedistXrlOutput_a43ae06a1dea22d450e4dd1a76fc12629}{
\hyperlink{classIPNet}{IPNet}$<$ A $>$ {\bfseries \_\-network\_\-prefix}}
\label{classRedistXrlOutput_a43ae06a1dea22d450e4dd1a76fc12629}

\item 
\hypertarget{classRedistXrlOutput_a3d15ed6b1c5dfbde3771bb24e327686a}{
string {\bfseries \_\-cookie}}
\label{classRedistXrlOutput_a3d15ed6b1c5dfbde3771bb24e327686a}

\item 
\hypertarget{classRedistXrlOutput_ae42f79c96f587ad0628fd5fb8c2929de}{
TaskQueue {\bfseries \_\-taskq}}
\label{classRedistXrlOutput_ae42f79c96f587ad0628fd5fb8c2929de}

\item 
\hypertarget{classRedistXrlOutput_a938bdd6d034e810bc1a8081e3d08e0c8}{
uint32\_\-t {\bfseries \_\-queued}}
\label{classRedistXrlOutput_a938bdd6d034e810bc1a8081e3d08e0c8}

\item 
\hypertarget{classRedistXrlOutput_a386f1a33a1e704d9ed08776fba1f7536}{
TaskQueue {\bfseries \_\-flyingq}}
\label{classRedistXrlOutput_a386f1a33a1e704d9ed08776fba1f7536}

\item 
\hypertarget{classRedistXrlOutput_ae59884a715fe85a4ea619755b079f2ce}{
uint32\_\-t {\bfseries \_\-inflight}}
\label{classRedistXrlOutput_ae59884a715fe85a4ea619755b079f2ce}

\item 
\hypertarget{classRedistXrlOutput_af6db29619a94f45e42436f8d2504f636}{
bool {\bfseries \_\-flow\_\-controlled}}
\label{classRedistXrlOutput_af6db29619a94f45e42436f8d2504f636}

\item 
\hypertarget{classRedistXrlOutput_af04d308c6b1ba50420de95fc406b801b}{
bool {\bfseries \_\-callback\_\-pending}}
\label{classRedistXrlOutput_af04d308c6b1ba50420de95fc406b801b}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename A$>$ class RedistXrlOutput$<$ A $>$}

\hyperlink{classRoute}{Route} \hyperlink{classRedistributor}{Redistributor} output that sends route add and deletes to remote redistribution target via \hyperlink{protocolthe-p}{the} redist\{4,6\} xrl interfaces. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classRedistXrlOutput_a2f279f13ee9e245233a475f989bbdd53}{
\index{RedistXrlOutput@{RedistXrlOutput}!RedistXrlOutput@{RedistXrlOutput}}
\index{RedistXrlOutput@{RedistXrlOutput}!RedistXrlOutput@{RedistXrlOutput}}
\subsubsection[{RedistXrlOutput}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf RedistXrlOutput}$<$ A $>$::{\bf RedistXrlOutput} (
\begin{DoxyParamCaption}
\item[{{\bf Redistributor}$<$ A $>$ $\ast$}]{redistributor, }
\item[{{\bf XrlRouter} \&}]{xrl\_\-router, }
\item[{{\bf Profile} \&}]{profile, }
\item[{const string \&}]{from\_\-protocol, }
\item[{const string \&}]{xrl\_\-target\_\-name, }
\item[{const {\bf IPNet}$<$ A $>$ \&}]{network\_\-prefix, }
\item[{const string \&}]{cookie}
\end{DoxyParamCaption}
)}}
\label{classRedistXrlOutput_a2f279f13ee9e245233a475f989bbdd53}


Constructor. 


\begin{DoxyParams}{Parameters}
{\em redistributor} & originator of route add and delete requests. \\
\hline
{\em xrl\_\-router} & router to be used to send XRLs. \\
\hline
{\em from\_\-protocol} & name of protocol routes are redistributed from. \\
\hline
{\em xrl\_\-target\_\-name} & name of XRL entity to send XRLs to. \\
\hline
{\em cookie} & cookie passed in redist interface XRLs to identify source of updates. \\
\hline
{\em is\_\-xrl\_\-transaction\_\-output} & if true, \hyperlink{protocolthe-p}{the} add/delete route XRLs are grouped into transactions. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classRedistXrlOutput_ae613883d2861c0688cbdc495f8416748}{
\index{RedistXrlOutput@{RedistXrlOutput}!finishing\_\-route\_\-dump@{finishing\_\-route\_\-dump}}
\index{finishing\_\-route\_\-dump@{finishing\_\-route\_\-dump}!RedistXrlOutput@{RedistXrlOutput}}
\subsubsection[{finishing\_\-route\_\-dump}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf RedistXrlOutput}$<$ A $>$::finishing\_\-route\_\-dump (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classRedistXrlOutput_ae613883d2861c0688cbdc495f8416748}


Method called by \hyperlink{classRedistributor}{Redistributor} to indicate end of initial route dump. 

This occurs when an output is first attached to \hyperlink{protocolthe-p}{the} redistributor to announce \hyperlink{protocolthe-p}{the} existing routes. 

Implements \hyperlink{classRedistOutput_a62af87ed7a3a607f5b733064d55f92b1}{RedistOutput$<$ A $>$}.



Reimplemented in \hyperlink{classRedistTransactionXrlOutput_ab1af2f1e59e7700a9e9bda6b74c2d291}{RedistTransactionXrlOutput$<$ A $>$}.

\hypertarget{classRedistXrlOutput_a62dc6c2be9e9571cd8141aa772711903}{
\index{RedistXrlOutput@{RedistXrlOutput}!starting\_\-route\_\-dump@{starting\_\-route\_\-dump}}
\index{starting\_\-route\_\-dump@{starting\_\-route\_\-dump}!RedistXrlOutput@{RedistXrlOutput}}
\subsubsection[{starting\_\-route\_\-dump}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf RedistXrlOutput}$<$ A $>$::starting\_\-route\_\-dump (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classRedistXrlOutput_a62dc6c2be9e9571cd8141aa772711903}


Method called by \hyperlink{classRedistributor}{Redistributor} to indicate start of initial route dump. 

This occurs when an output is first attached to \hyperlink{protocolthe-p}{the} redistributor to announce \hyperlink{protocolthe-p}{the} existing routes. 

Implements \hyperlink{classRedistOutput_a1f9f3eca38c5ba68d095e5d9b02f5c4c}{RedistOutput$<$ A $>$}.



Reimplemented in \hyperlink{classRedistTransactionXrlOutput_ac70cfcd85f66cd29aa5d7ff69d85e85f}{RedistTransactionXrlOutput$<$ A $>$}.



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