\hypertarget{oob_8h}{\section{orte/mca/oob/oob.h File Reference}
\label{oob_8h}\index{orte/mca/oob/oob.\+h@{orte/mca/oob/oob.\+h}}
}


Contains the internal functions and typedefs for the use of the oob.  


{\ttfamily \#include \char`\"{}orte\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/types.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/mca.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/rml/rml.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/crs/crs.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/crs/base/base.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__oob__base__component__2__0__0__t}{mca\+\_\+oob\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}
\item 
struct \hyperlink{structmca__oob__1__0__0__t}{mca\+\_\+oob\+\_\+1\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em O\+O\+B Module. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{oob_8h_a3017efd0943bc6f357988286943c3ba4}{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}
\begin{DoxyCompactList}\small\item\em Macro for use in components that are of type oob. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob_8h_a11b73185253548a0b8aa96fec6203f09}{typedef struct \hyperlink{structmca__oob__1__0__0__t}{mca\+\_\+oob\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+oob\+\_\+1\+\_\+0\+\_\+0\+\_\+t}}\label{oob_8h_a11b73185253548a0b8aa96fec6203f09}

\item 
\hypertarget{oob_8h_a8895cb31092380d6112d1ba7348fb0e8}{typedef struct \hyperlink{structmca__oob__1__0__0__t}{mca\+\_\+oob\+\_\+1\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+oob\+\_\+t}}\label{oob_8h_a8895cb31092380d6112d1ba7348fb0e8}

\item 
\hypertarget{oob_8h_ad1c7a91e31e590a526068e5e436bcc59}{typedef \hyperlink{structmca__oob__1__0__0__t}{mca\+\_\+oob\+\_\+t} $\ast$($\ast$ {\bfseries mca\+\_\+oob\+\_\+base\+\_\+component\+\_\+init\+\_\+fn\+\_\+t} )(int $\ast$priority)}\label{oob_8h_ad1c7a91e31e590a526068e5e436bcc59}

\item 
\hypertarget{oob_8h_a1c254fcbba777c938a41dbdcad0c6698}{typedef struct \\*
\hyperlink{structmca__oob__base__component__2__0__0__t}{mca\+\_\+oob\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+oob\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}}\label{oob_8h_a1c254fcbba777c938a41dbdcad0c6698}

\item 
\hypertarget{oob_8h_af196ac6cfbc278d0aabfdf165510d919}{typedef \\*
\hyperlink{structmca__oob__base__component__2__0__0__t}{mca\+\_\+oob\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} {\bfseries mca\+\_\+oob\+\_\+base\+\_\+component\+\_\+t}}\label{oob_8h_af196ac6cfbc278d0aabfdf165510d919}

\item 
\hypertarget{oob_8h_abbee41bea9bb4f70c15252309da5a54d}{typedef char $\ast$($\ast$ {\bfseries mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+get\+\_\+addr\+\_\+fn\+\_\+t} )(void)}\label{oob_8h_abbee41bea9bb4f70c15252309da5a54d}

\item 
\hypertarget{oob_8h_a0edabc296af494fbdebae79beac0fe9a}{typedef int($\ast$ {\bfseries mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+set\+\_\+addr\+\_\+fn\+\_\+t} )(const \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, const char $\ast$uri)}\label{oob_8h_a0edabc296af494fbdebae79beac0fe9a}

\item 
typedef int($\ast$ \hyperlink{oob_8h_abff6c58efd6bb98f22d5461c29627ba5}{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t} )(const \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$, const char $\ast$uri, const struct timeval $\ast$tv)
\begin{DoxyCompactList}\small\item\em Implementation of mca\+\_\+oob\+\_\+ping(). \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{oob_8h_ab8657eabd1a3fc845ea918839613d486}{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t} )(\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$target, \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$origin, struct \hyperlink{structiovec}{iovec} $\ast$msg, int count, int tag, int flags, \hyperlink{rml_8h_a06325815d852b971fad98f20bd4e4539}{orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} an oob message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{oob_8h_aae748e69ec6a3e1d92394743ef77daec}{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t} )(\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structiovec}{iovec} $\ast$msg, int count, int tag, int flags, \hyperlink{rml_8h_a06325815d852b971fad98f20bd4e4539}{orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)
\begin{DoxyCompactList}\small\item\em Implementation of mca\+\_\+oob\+\_\+recv\+\_\+nb(). \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{oob_8h_a8ce934dfe385bc3f8b34e7780452a5bd}{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t} )(\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, int tag)
\begin{DoxyCompactList}\small\item\em Implementation of mca\+\_\+oob\+\_\+recv\+\_\+cancel(). \end{DoxyCompactList}\item 
\hypertarget{oob_8h_a3e038e8f8c5b5108aad17866fa3c5940}{typedef int($\ast$ \hyperlink{oob_8h_a3e038e8f8c5b5108aad17866fa3c5940}{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+init\+\_\+fn\+\_\+t} )(void)}\label{oob_8h_a3e038e8f8c5b5108aad17866fa3c5940}

\begin{DoxyCompactList}\small\item\em Hook function called by mca\+\_\+oob\+\_\+base\+\_\+register to allow the oob component a chance to register contact information. \end{DoxyCompactList}\item 
\hypertarget{oob_8h_a39120efbe911183870f405a64b815609}{typedef int($\ast$ \hyperlink{oob_8h_a39120efbe911183870f405a64b815609}{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+fini\+\_\+fn\+\_\+t} )(void)}\label{oob_8h_a39120efbe911183870f405a64b815609}

\begin{DoxyCompactList}\small\item\em Cleanup during finalize. \end{DoxyCompactList}\item 
\hypertarget{oob_8h_afa56ab26424ed98378a0e9beac7ce105}{typedef int($\ast$ {\bfseries mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t} )(int state)}\label{oob_8h_afa56ab26424ed98378a0e9beac7ce105}

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob_8h_a943ca3d82162a1cdcc7dfbef8d4be96b}{O\+R\+T\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \hyperlink{structmca__oob__1__0__0__t}{mca\+\_\+oob\+\_\+t} {\bfseries mca\+\_\+oob}}\label{oob_8h_a943ca3d82162a1cdcc7dfbef8d4be96b}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Contains the internal functions and typedefs for the use of the oob. 



\subsection{Macro Definition Documentation}
\hypertarget{oob_8h_a3017efd0943bc6f357988286943c3ba4}{\index{oob.\+h@{oob.\+h}!M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}}
\index{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}!oob.\+h@{oob.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+0}}\label{oob_8h_a3017efd0943bc6f357988286943c3ba4}
{\bfseries Value\+:}
\begin{DoxyCode}
MCA\_BASE\_VERSION\_2\_0\_0, \(\backslash\)
  \textcolor{stringliteral}{"oob"}, 2, 0, 0
\end{DoxyCode}


Macro for use in components that are of type oob. 



\subsection{Typedef Documentation}
\hypertarget{oob_8h_abff6c58efd6bb98f22d5461c29627ba5}{\index{oob.\+h@{oob.\+h}!mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t@{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t}}
\index{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t@{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t}!oob.\+h@{oob.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t)(const {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$, const char $\ast$uri, const struct timeval $\ast$tv)}}\label{oob_8h_abff6c58efd6bb98f22d5461c29627ba5}


Implementation of mca\+\_\+oob\+\_\+ping(). 


\begin{DoxyParams}{Parameters}
{\em peer} & (I\+N) Opaque name of peer process. \\
\hline
{\em tv} & (I\+N) Timeout to wait in connection response. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I error code ($<$0) or O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S 
\end{DoxyReturn}
\hypertarget{oob_8h_a8ce934dfe385bc3f8b34e7780452a5bd}{\index{oob.\+h@{oob.\+h}!mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t@{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t}}
\index{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t@{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t}!oob.\+h@{oob.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t)({\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, int tag)}}\label{oob_8h_a8ce934dfe385bc3f8b34e7780452a5bd}


Implementation of mca\+\_\+oob\+\_\+recv\+\_\+cancel(). 


\begin{DoxyParams}{Parameters}
{\em peer} & (I\+N) Opaque name of peer process or O\+R\+T\+E\+\_\+\+N\+A\+M\+E\+\_\+\+W\+I\+L\+D\+C\+A\+R\+D for wildcard receive. \\
\hline
{\em tag} & (I\+N) User defined tag for matching send/recv. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I error code ($<$0) on error or number of bytes actually received. 
\end{DoxyReturn}
\hypertarget{oob_8h_aae748e69ec6a3e1d92394743ef77daec}{\index{oob.\+h@{oob.\+h}!mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t@{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t}}
\index{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t@{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t}!oob.\+h@{oob.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t)({\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf iovec} $\ast$msg, int count, int tag, int flags, {\bf orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)}}\label{oob_8h_aae748e69ec6a3e1d92394743ef77daec}


Implementation of mca\+\_\+oob\+\_\+recv\+\_\+nb(). 


\begin{DoxyParams}{Parameters}
{\em peer} & (I\+N) Opaque name of peer process or O\+R\+T\+E\+\_\+\+N\+A\+M\+E\+\_\+\+W\+I\+L\+D\+C\+A\+R\+D for wildcard receive. \\
\hline
{\em msg} & (I\+N) Array of iovecs describing user buffers and lengths. \\
\hline
{\em count} & (I\+N) Number of elements in iovec array. \\
\hline
{\em tag} & (I\+N) User defined tag for matching send/recv. \\
\hline
{\em flags} & (I\+N) May be M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+P\+E\+E\+K to return up to size bytes of msg w/out removing it from the queue, \\
\hline
{\em cbfunc} & (I\+N) Callback function on recv completion. \\
\hline
{\em cbdata} & (I\+N) User data that is passed to callback function. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I error code ($<$0) on error or number of bytes actually received. 
\end{DoxyReturn}
\hypertarget{oob_8h_ab8657eabd1a3fc845ea918839613d486}{\index{oob.\+h@{oob.\+h}!mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t@{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t}}
\index{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t@{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t}!oob.\+h@{oob.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ mca\+\_\+oob\+\_\+base\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t)({\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$target, {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$origin, struct {\bf iovec} $\ast$msg, int count, int tag, int flags, {\bf orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)}}\label{oob_8h_ab8657eabd1a3fc845ea918839613d486}


\hyperlink{structSend}{Send} an oob message. 

\hyperlink{structSend}{Send} an oob message. All oob sends are non-\/blocking, and cbfunc will be called when the message has been sent. When cbfunc is called, message has been injected into the network but no guarantee is made about whether the target has received the message.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em target} & Destination process name \\
\hline
\mbox{\tt in}  & {\em origin} & Origin process for the message, for the purposes of message matching. This can be different from the process calling send(). \\
\hline
\mbox{\tt in}  & {\em msg} & Array of iovecs describing user buffers and lengths. \\
\hline
\mbox{\tt in}  & {\em count} & Number of elements in iovec array. \\
\hline
\mbox{\tt in}  & {\em tag} & User defined tag for matching send/recv. \\
\hline
\mbox{\tt in}  & {\em flags} & Currently unused. \\
\hline
\mbox{\tt in}  & {\em cbfunc} & Callback function on send completion. \\
\hline
\mbox{\tt in}  & {\em cbdata} & User data that is passed to callback function.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
O\+M\+P\+I error code ($<$0) on error number of bytes actually sent. 
\end{DoxyReturn}
