\hypertarget{classTransmit}{
\section{Transmit$<$ A $>$ Class Template Reference}
\label{classTransmit}\index{Transmit@{Transmit}}
}


The base class for all transmissions.  




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

Inheritance diagram for Transmit$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classTransmit}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classTransmit_a75dbebf56e717a03345a813ee89fd8a0}{
typedef \hyperlink{classref__ptr}{ref\_\-ptr}$<$ \hyperlink{classTransmit}{Transmit} $>$ {\bfseries TransmitRef}}
\label{classTransmit_a75dbebf56e717a03345a813ee89fd8a0}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual bool \hyperlink{classTransmit_af2b30ff556159a75cb1d8bb0b34349e1}{valid} ()=0
\begin{DoxyCompactList}\small\item\em Is this object still valid? \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classTransmit_a3e618a42f0cfabdb1211bd1890bea7d7}{multiple} ()=0
\begin{DoxyCompactList}\small\item\em A transmit object may be able to generate multiple packets; not just one. \item\end{DoxyCompactList}\item 
virtual \hyperlink{classref__ptr}{TransmitRef} \hyperlink{classTransmit_a4f381b2fda62b098d37f2ae8c7fb3d92}{clone} ()=0
\begin{DoxyCompactList}\small\item\em Make a copy of this object. \item\end{DoxyCompactList}\item 
virtual uint8\_\-t $\ast$ \hyperlink{classTransmit_ac7a839ae7d62273ba77b1dad9facf2b7}{generate} (size\_\-t \&len)=0
\begin{DoxyCompactList}\small\item\em Generate a packet for transmission. \item\end{DoxyCompactList}\item 
virtual A \hyperlink{classTransmit_a0426bab289b841b84f100421c40bfa4b}{destination} ()=0
\item 
virtual A \hyperlink{classTransmit_ab039dbc280e374c515de7f3cbf75bbce}{source} ()=0
\end{DoxyCompactItemize}


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

The base class for all transmissions. Typically a large number of \hyperlink{classTransmit}{Transmit} objects could be queued for transmission. By \hyperlink{protocolthe-p}{the} time a \hyperlink{classTransmit}{Transmit} object is scheduled for transmission circumstances could have changed. It may no longer be appropriate to transmit this packet. Therefore allow a transmit object to become invalid. A single transmit object can generate a number of packets. For example for \hyperlink{protocolthe-p}{the} database synchronisation process. 

\subsection{Member Function Documentation}
\hypertarget{classTransmit_a4f381b2fda62b098d37f2ae8c7fb3d92}{
\index{Transmit@{Transmit}!clone@{clone}}
\index{clone@{clone}!Transmit@{Transmit}}
\subsubsection[{clone}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual {\bf TransmitRef} {\bf Transmit}$<$ A $>$::clone (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classTransmit_a4f381b2fda62b098d37f2ae8c7fb3d92}


Make a copy of this object. 

If \hyperlink{protocolthe-p}{the} same data is being sent to multiple locations, provide a mechanism to make a copy for each location. 

Implemented in \hyperlink{classSimpleTransmit_addd336741c921b2d03551e0fc3b2f6d6}{SimpleTransmit$<$ A $>$}.

\hypertarget{classTransmit_a0426bab289b841b84f100421c40bfa4b}{
\index{Transmit@{Transmit}!destination@{destination}}
\index{destination@{destination}!Transmit@{Transmit}}
\subsubsection[{destination}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual A {\bf Transmit}$<$ A $>$::destination (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classTransmit_a0426bab289b841b84f100421c40bfa4b}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} destination address of this packet. 
\end{DoxyReturn}


Implemented in \hyperlink{classSimpleTransmit_ab81b8cc6f906b9b7e9c09792ec611c4e}{SimpleTransmit$<$ A $>$}.

\hypertarget{classTransmit_ac7a839ae7d62273ba77b1dad9facf2b7}{
\index{Transmit@{Transmit}!generate@{generate}}
\index{generate@{generate}!Transmit@{Transmit}}
\subsubsection[{generate}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual uint8\_\-t$\ast$ {\bf Transmit}$<$ A $>$::generate (
\begin{DoxyParamCaption}
\item[{size\_\-t \&}]{len}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classTransmit_ac7a839ae7d62273ba77b1dad9facf2b7}


Generate a packet for transmission. 


\begin{DoxyParams}{Parameters}
{\em len} & length of \hyperlink{protocolthe-p}{the} encoded packet.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer that must be delete'd. 
\end{DoxyReturn}


Implemented in \hyperlink{classSimpleTransmit_af1f03d72b1bbc7080d8e9dd19cf2967f}{SimpleTransmit$<$ A $>$}.

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


A transmit object may be able to generate multiple packets; not just one. 

\begin{DoxyReturn}{Returns}
True if this object can be invoked multiple times? 
\end{DoxyReturn}


Implemented in \hyperlink{classSimpleTransmit_aebcc15495a3caea7c65eee2580280121}{SimpleTransmit$<$ A $>$}.

\hypertarget{classTransmit_ab039dbc280e374c515de7f3cbf75bbce}{
\index{Transmit@{Transmit}!source@{source}}
\index{source@{source}!Transmit@{Transmit}}
\subsubsection[{source}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual A {\bf Transmit}$<$ A $>$::source (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classTransmit_ab039dbc280e374c515de7f3cbf75bbce}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} source address of this packet. 
\end{DoxyReturn}


Implemented in \hyperlink{classSimpleTransmit_a2f36daf642c39f4f596f6a059b7cc33c}{SimpleTransmit$<$ A $>$}.

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


Is this object still valid? 

\begin{DoxyReturn}{Returns}
True if this transmit object is still valid. 
\end{DoxyReturn}


Implemented in \hyperlink{classSimpleTransmit_a502a59cdb4f29712ec92a1ac84796a5d}{SimpleTransmit$<$ A $>$}.



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