\hypertarget{classOutputBase}{
\section{OutputBase$<$ A $>$ Class Template Reference}
\label{classOutputBase}\index{OutputBase@{OutputBase}}
}


Base class for RIP output processing components.  




{\ttfamily \#include $<$output.hh$>$}

Inheritance diagram for OutputBase$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classOutputBase}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classOutputBase_acc6eeb7a69b502cf57eb70903902c96a}{
typedef A {\bfseries Addr}}
\label{classOutputBase_acc6eeb7a69b502cf57eb70903902c96a}

\item 
\hypertarget{classOutputBase_a8144355a04641aa86140f4b224cedad0}{
typedef \hyperlink{classIPNet}{IPNet}$<$ A $>$ {\bfseries Net}}
\label{classOutputBase_a8144355a04641aa86140f4b224cedad0}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classOutputBase_a92a3b1c17f76c893cd0d367f99440405}{
{\bfseries OutputBase} (\hyperlink{classEventLoop}{EventLoop} \&e, \hyperlink{classPort}{Port}$<$ A $>$ \&port, \hyperlink{classPacketQueue}{PacketQueue}$<$ A $>$ \&pkt\_\-queue, const A \&ip\_\-addr, uint16\_\-t ip\_\-port)}
\label{classOutputBase_a92a3b1c17f76c893cd0d367f99440405}

\item 
\hypertarget{classOutputBase_af2f34094542dc86b6bfeaafd69e5a72c}{
const A \& \hyperlink{classOutputBase_af2f34094542dc86b6bfeaafd69e5a72c}{ip\_\-addr} () const }
\label{classOutputBase_af2f34094542dc86b6bfeaafd69e5a72c}

\begin{DoxyCompactList}\small\item\em Accessor for destination IP address applied to output packets. \item\end{DoxyCompactList}\item 
\hypertarget{classOutputBase_ae2e11da39cd118cebb3eb76104db91dd}{
uint16\_\-t \hyperlink{classOutputBase_ae2e11da39cd118cebb3eb76104db91dd}{ip\_\-port} () const }
\label{classOutputBase_ae2e11da39cd118cebb3eb76104db91dd}

\begin{DoxyCompactList}\small\item\em Accessor for destination IP port applied to output packets. \item\end{DoxyCompactList}\item 
bool \hyperlink{classOutputBase_a2d8a3d5854358145004bcf12e2e47754}{running} () const 
\item 
void \hyperlink{classOutputBase_a82a1e61a8a6fd56726954baa45be2aab}{start} ()
\begin{DoxyCompactList}\small\item\em Start packet train if sufficient data is available. \item\end{DoxyCompactList}\item 
\hypertarget{classOutputBase_a61b49d0fb2eabc5da657d7bbe45e2a62}{
void \hyperlink{classOutputBase_a61b49d0fb2eabc5da657d7bbe45e2a62}{stop} ()}
\label{classOutputBase_a61b49d0fb2eabc5da657d7bbe45e2a62}

\begin{DoxyCompactList}\small\item\em Stop packet train. \item\end{DoxyCompactList}\item 
\hypertarget{classOutputBase_a3501a0de33e32489920e69423678e7bf}{
void \hyperlink{classOutputBase_a3501a0de33e32489920e69423678e7bf}{packets\_\-sent} () const }
\label{classOutputBase_a3501a0de33e32489920e69423678e7bf}

\begin{DoxyCompactList}\small\item\em Get number of packets placed on packet queue for output. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classOutputBase_a366f70867885687a0eb514e7f368c88d}{
uint32\_\-t \hyperlink{classOutputBase_a366f70867885687a0eb514e7f368c88d}{interpacket\_\-gap\_\-ms} () const }
\label{classOutputBase_a366f70867885687a0eb514e7f368c88d}

\begin{DoxyCompactList}\small\item\em Accessor for \hyperlink{protocolthe-p}{the} inter-\/packet gap \hyperlink{protocolthe-p}{the} output process should when generating packet trains. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classOutputBase_addfbd70ce8920758e9bb010146aed06c}{start\_\-output\_\-processing} ()=0
\begin{DoxyCompactList}\small\item\em Derived classes should implement this to start output processing. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classOutputBase_a43611a561daa1f99cab1e0f4e3d74055}{stop\_\-output\_\-processing} ()=0
\begin{DoxyCompactList}\small\item\em Derived classes should implement this to stop output processing. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classOutputBase_ab8644e085645299beb8e2a10bd53fdb3}{output\_\-packet} ()=0
\begin{DoxyCompactList}\small\item\em \hyperlink{classOutput}{Output} packet if suitable data is available, and place it in \hyperlink{protocolthe-p}{the} \hyperlink{classPacketQueue}{PacketQueue} associated with this instance. \item\end{DoxyCompactList}\item 
\hypertarget{classOutputBase_af2b8e17449cf05fbe914a745c74365b2}{
void {\bfseries incr\_\-packets\_\-sent} ()}
\label{classOutputBase_af2b8e17449cf05fbe914a745c74365b2}

\item 
bool \hyperlink{classOutputBase_a19fc43d491e68745a7bf3016d99cd328}{do\_\-filtering} (\hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ $\ast$r)
\begin{DoxyCompactList}\small\item\em Policy filters \hyperlink{protocolthe-p}{the} route. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classOutputBase_a710f5cd2925c16aa9aa63c13e7d1e50b}{
\hyperlink{classEventLoop}{EventLoop} \& {\bfseries \_\-e}}
\label{classOutputBase_a710f5cd2925c16aa9aa63c13e7d1e50b}

\item 
\hypertarget{classOutputBase_a347169255591aa5dfe56c58afcbf0bdf}{
\hyperlink{classPort}{Port}$<$ A $>$ \& {\bfseries \_\-port}}
\label{classOutputBase_a347169255591aa5dfe56c58afcbf0bdf}

\item 
\hypertarget{classOutputBase_aaa68c2d1d4da077e2c89b62bda65ba84}{
\hyperlink{classPacketQueue}{PacketQueue}$<$ A $>$ \& {\bfseries \_\-pkt\_\-queue}}
\label{classOutputBase_aaa68c2d1d4da077e2c89b62bda65ba84}

\item 
\hypertarget{classOutputBase_aef6a6d5ae7696952149a3a1dd5e40fdd}{
const A {\bfseries \_\-ip\_\-addr}}
\label{classOutputBase_aef6a6d5ae7696952149a3a1dd5e40fdd}

\item 
\hypertarget{classOutputBase_a3c1dfa2819a03c137a72daa2e35822ef}{
const uint16\_\-t {\bfseries \_\-ip\_\-port}}
\label{classOutputBase_a3c1dfa2819a03c137a72daa2e35822ef}

\item 
\hypertarget{classOutputBase_a1ba6d8903440a507072cc961d89908d8}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-op\_\-timer}}
\label{classOutputBase_a1ba6d8903440a507072cc961d89908d8}

\item 
\hypertarget{classOutputBase_a24189a54f01e502b1526adc923e29e7a}{
uint32\_\-t {\bfseries \_\-pkts\_\-out}}
\label{classOutputBase_a24189a54f01e502b1526adc923e29e7a}

\item 
\hypertarget{classOutputBase_a9f53ff1e66241d19f29ceb1b480a87b3}{
\hyperlink{classPolicyFilters}{PolicyFilters} \& {\bfseries \_\-policy\_\-filters}}
\label{classOutputBase_a9f53ff1e66241d19f29ceb1b480a87b3}

\end{DoxyCompactItemize}


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

Base class for RIP output processing components. RIP output processing components generate periodic trains of RIP response packets. This class and it's children are intended to generate \hyperlink{protocolthe-p}{the} packet trains from RIP output processing. Each packet within \hyperlink{protocolthe-p}{the} train is temporally separated from it's neighbouring packets. Timers elsewhere schedule \hyperlink{protocolthe-p}{the} start of each packet train. 

\subsection{Member Function Documentation}
\hypertarget{classOutputBase_a19fc43d491e68745a7bf3016d99cd328}{
\index{OutputBase@{OutputBase}!do\_\-filtering@{do\_\-filtering}}
\index{do\_\-filtering@{do\_\-filtering}!OutputBase@{OutputBase}}
\subsubsection[{do\_\-filtering}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf OutputBase}$<$ A $>$::do\_\-filtering (
\begin{DoxyParamCaption}
\item[{{\bf RouteEntry}$<$ A $>$ $\ast$}]{r}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classOutputBase_a19fc43d491e68745a7bf3016d99cd328}


Policy filters \hyperlink{protocolthe-p}{the} route. 


\begin{DoxyParams}{Parameters}
{\em r} & route to filter. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} route was accepted, false otherwise. 
\end{DoxyReturn}
\hypertarget{classOutputBase_ab8644e085645299beb8e2a10bd53fdb3}{
\index{OutputBase@{OutputBase}!output\_\-packet@{output\_\-packet}}
\index{output\_\-packet@{output\_\-packet}!OutputBase@{OutputBase}}
\subsubsection[{output\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ virtual void {\bf OutputBase}$<$ A $>$::output\_\-packet (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, pure virtual\mbox{]}}}}
\label{classOutputBase_ab8644e085645299beb8e2a10bd53fdb3}


\hyperlink{classOutput}{Output} packet if suitable data is available, and place it in \hyperlink{protocolthe-p}{the} \hyperlink{classPacketQueue}{PacketQueue} associated with this instance. 

Should data still be available after packet is generated then implementations of this method should reschedule a call to output\_\-packet after interpacket\_\-gap\_\-ms milliseconds. 

Implemented in \hyperlink{classOutputTable_a6ba1c0fcaae769fa260ee34d8c3b0bb6}{OutputTable$<$ A $>$}, and \hyperlink{classOutputUpdates_a75fa9c3490d2ea65d45a22eea96fb385}{OutputUpdates$<$ A $>$}.

\hypertarget{classOutputBase_a2d8a3d5854358145004bcf12e2e47754}{
\index{OutputBase@{OutputBase}!running@{running}}
\index{running@{running}!OutputBase@{OutputBase}}
\subsubsection[{running}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf OutputBase}$<$ A $>$::running (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classOutputBase_a2d8a3d5854358145004bcf12e2e47754}
\begin{DoxyReturn}{Returns}
true if output process is generating packets. 
\end{DoxyReturn}
\hypertarget{classOutputBase_a82a1e61a8a6fd56726954baa45be2aab}{
\index{OutputBase@{OutputBase}!start@{start}}
\index{start@{start}!OutputBase@{OutputBase}}
\subsubsection[{start}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf OutputBase}$<$ A $>$::start (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classOutputBase_a82a1e61a8a6fd56726954baa45be2aab}


Start packet train if sufficient data is available. 

This instance will remain in \char`\"{}running\char`\"{} so long as data is available and will continue to generate packets until \hyperlink{protocolthe-p}{the} data is exhausted. \hypertarget{classOutputBase_addfbd70ce8920758e9bb010146aed06c}{
\index{OutputBase@{OutputBase}!start\_\-output\_\-processing@{start\_\-output\_\-processing}}
\index{start\_\-output\_\-processing@{start\_\-output\_\-processing}!OutputBase@{OutputBase}}
\subsubsection[{start\_\-output\_\-processing}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ virtual void {\bf OutputBase}$<$ A $>$::start\_\-output\_\-processing (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, pure virtual\mbox{]}}}}
\label{classOutputBase_addfbd70ce8920758e9bb010146aed06c}


Derived classes should implement this to start output processing. 

It is invoked when \hyperlink{classOutputBase_a82a1e61a8a6fd56726954baa45be2aab}{start()} is called. 

Implemented in \hyperlink{classOutputTable_a466ac566cea0c53b09cb2c51c3e594e8}{OutputTable$<$ A $>$}, and \hyperlink{classOutputUpdates_a623b0ca2d6241a842154e2df9c75be65}{OutputUpdates$<$ A $>$}.

\hypertarget{classOutputBase_a43611a561daa1f99cab1e0f4e3d74055}{
\index{OutputBase@{OutputBase}!stop\_\-output\_\-processing@{stop\_\-output\_\-processing}}
\index{stop\_\-output\_\-processing@{stop\_\-output\_\-processing}!OutputBase@{OutputBase}}
\subsubsection[{stop\_\-output\_\-processing}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ virtual void {\bf OutputBase}$<$ A $>$::stop\_\-output\_\-processing (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, pure virtual\mbox{]}}}}
\label{classOutputBase_a43611a561daa1f99cab1e0f4e3d74055}


Derived classes should implement this to stop output processing. 

It is invoked when \hyperlink{classOutputBase_a61b49d0fb2eabc5da657d7bbe45e2a62}{stop()} is called. 

Implemented in \hyperlink{classOutputTable_a690add7a29b898ceeddde4f6778319fc}{OutputTable$<$ A $>$}, and \hyperlink{classOutputUpdates_afeb41b84b88c6f7744d8ac9252f6b2b2}{OutputUpdates$<$ A $>$}.



The documentation for this class was generated from the following file:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/rip/output.hh\end{DoxyCompactItemize}
