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


Defines the functions for the tcp module.  


{\ttfamily \#include \char`\"{}orte\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/types.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+free\+\_\+list.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+hash\+\_\+table.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/threads/mutex.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/threads/condition.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/threads/threads.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/timer/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/oob/oob.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/oob/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/oob/tcp/oob\+\_\+tcp\+\_\+peer.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/oob/tcp/oob\+\_\+tcp\+\_\+msg.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__oob__tcp__component__t}{mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t}
\begin{DoxyCompactList}\small\item\em O\+O\+B T\+C\+P Component. \end{DoxyCompactList}\item 
struct \hyperlink{structmca__oob__tcp__pending__connection__t}{mca\+\_\+oob\+\_\+tcp\+\_\+pending\+\_\+connection\+\_\+t}
\item 
struct \hyperlink{structmca__oob__tcp__device__t}{mca\+\_\+oob\+\_\+tcp\+\_\+device\+\_\+t}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp_8h_a217719a3e48a103d588f385ed7d8fa12}{\#define {\bfseries O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+D\+E\+B\+U\+G\+\_\+\+C\+O\+N\+N\+E\+C\+T\+\_\+\+F\+A\+I\+L}~1  /$\ast$ debug connection establishment failures $\ast$/}\label{oob__tcp_8h_a217719a3e48a103d588f385ed7d8fa12}

\item 
\hypertarget{oob__tcp_8h_a0986422e671589b7495b457c45dd9c52}{\#define {\bfseries O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+D\+E\+B\+U\+G\+\_\+\+C\+O\+N\+N\+E\+C\+T}~2  /$\ast$ other connection information $\ast$/}\label{oob__tcp_8h_a0986422e671589b7495b457c45dd9c52}

\item 
\hypertarget{oob__tcp_8h_a83a04566504ffc7c71dceb9d06c88080}{\#define {\bfseries O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+D\+E\+B\+U\+G\+\_\+\+I\+N\+F\+O}~3  /$\ast$ information about startup, connection establish, etc. $\ast$/}\label{oob__tcp_8h_a83a04566504ffc7c71dceb9d06c88080}

\item 
\hypertarget{oob__tcp_8h_a6b996c351e4d222f0e4b95e0df30f2c7}{\#define {\bfseries O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+D\+E\+B\+U\+G\+\_\+\+A\+L\+L}~4  /$\ast$ everything else $\ast$/}\label{oob__tcp_8h_a6b996c351e4d222f0e4b95e0df30f2c7}

\item 
\#define {\bfseries C\+L\+O\+S\+E\+\_\+\+T\+H\+E\+\_\+\+S\+O\+C\+K\+E\+T}(socket)
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp_8h_a7de406f85d12fb08de780743c865048c}{typedef struct \\*
\hyperlink{structmca__oob__tcp__component__t}{mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t} \hyperlink{oob__tcp_8h_a7de406f85d12fb08de780743c865048c}{mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t}}\label{oob__tcp_8h_a7de406f85d12fb08de780743c865048c}

\begin{DoxyCompactList}\small\item\em Convenience Typedef. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp_8h_ac26cfd54a4ddd942d74c91fd729bf793}{typedef struct \\*
\hyperlink{structmca__oob__tcp__pending__connection__t}{mca\+\_\+oob\+\_\+tcp\+\_\+pending\+\_\+connection\+\_\+t} {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+pending\+\_\+connection\+\_\+t}}\label{oob__tcp_8h_ac26cfd54a4ddd942d74c91fd729bf793}

\item 
\hypertarget{oob__tcp_8h_a76f35dd1fb9edaa055b23be52198aff6}{typedef struct \hyperlink{structmca__oob__tcp__device__t}{mca\+\_\+oob\+\_\+tcp\+\_\+device\+\_\+t} {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+device\+\_\+t}}\label{oob__tcp_8h_a76f35dd1fb9edaa055b23be52198aff6}

\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp_8h_abaaa775a998099e1a7a828b00d0143ab}{enum {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+listen\+\_\+type\+\_\+t} \{ {\bfseries O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+E\+V\+E\+N\+T}, 
{\bfseries O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+L\+I\+S\+T\+E\+N\+\_\+\+T\+H\+R\+E\+A\+D}
 \}}\label{oob__tcp_8h_abaaa775a998099e1a7a828b00d0143ab}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp_8h_a3d9ac857e0aea35c91d9b70d34e5bfc2}{\hyperlink{structmca__oob__1__0__0__t}{mca\+\_\+oob\+\_\+t} $\ast$ {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+init} (int $\ast$priority)}\label{oob__tcp_8h_a3d9ac857e0aea35c91d9b70d34e5bfc2}

\item 
\hypertarget{oob__tcp_8h_ae619c37604caaca35bde0743cc515714}{int \hyperlink{oob__tcp_8h_ae619c37604caaca35bde0743cc515714}{mca\+\_\+oob\+\_\+tcp\+\_\+init} (void)}\label{oob__tcp_8h_ae619c37604caaca35bde0743cc515714}

\begin{DoxyCompactList}\small\item\em Hook function to allow the selected oob components to register their contact info with the registry. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp_8h_a73daba9af254698d67777611e1d6f661}{int \hyperlink{oob__tcp_8h_a73daba9af254698d67777611e1d6f661}{mca\+\_\+oob\+\_\+tcp\+\_\+fini} (void)}\label{oob__tcp_8h_a73daba9af254698d67777611e1d6f661}

\begin{DoxyCompactList}\small\item\em Cleanup resources during shutdown. \end{DoxyCompactList}\item 
int \hyperlink{oob__tcp_8h_a3a2c48c3f987d3c1308379d676c6e57f}{mca\+\_\+oob\+\_\+tcp\+\_\+process\+\_\+name\+\_\+compare} (const \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$n1, const \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$n2)
\begin{DoxyCompactList}\small\item\em Compare two process names for equality. \end{DoxyCompactList}\item 
char $\ast$ \hyperlink{oob__tcp_8h_a522eb5ff27d59ca7b4a9ccacdb7fff71}{mca\+\_\+oob\+\_\+tcp\+\_\+get\+\_\+addr} (void)
\begin{DoxyCompactList}\small\item\em Obtain contact information for this host (e.\+g. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp_8h_aa8ff380edaecc20a14cbd3d208ebd5e1}{int \hyperlink{oob__tcp_8h_aa8ff380edaecc20a14cbd3d208ebd5e1}{mca\+\_\+oob\+\_\+tcp\+\_\+set\+\_\+addr} (const \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$, const char $\ast$)}\label{oob__tcp_8h_aa8ff380edaecc20a14cbd3d208ebd5e1}

\begin{DoxyCompactList}\small\item\em Setup cached addresses for the peers. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp_8h_a39a7212ce22b5c6e347ffdf1b06c8f9f}{int {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+get\+\_\+new\+\_\+name} (\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$name)}\label{oob__tcp_8h_a39a7212ce22b5c6e347ffdf1b06c8f9f}

\item 
int \hyperlink{oob__tcp_8h_a9dec917c1134337929a5ca2fcb28122b}{mca\+\_\+oob\+\_\+tcp\+\_\+ping} (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 A routine to ping a given process name to determine if it is reachable. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp_8h_ac80c792b0332b2017521d9813d5859e4}{int {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+send\+\_\+nb} (\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)}\label{oob__tcp_8h_ac80c792b0332b2017521d9813d5859e4}

\item 
int \hyperlink{oob__tcp_8h_a44f36249ccee8db526ad54615680cdec}{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb} (\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 Non-\/blocking version of mca\+\_\+oob\+\_\+recv(). \end{DoxyCompactList}\item 
int \hyperlink{oob__tcp_8h_a2d4858355ad3b38d47a573ee505eafb9}{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+cancel} (\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, int tag)
\begin{DoxyCompactList}\small\item\em Cancel non-\/blocking receive. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp_8h_a819ea298870b7fa7ca55d2b7cdb75d51}{int \hyperlink{oob__tcp_8h_a819ea298870b7fa7ca55d2b7cdb75d51}{mca\+\_\+oob\+\_\+tcp\+\_\+resolve} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$)}\label{oob__tcp_8h_a819ea298870b7fa7ca55d2b7cdb75d51}

\begin{DoxyCompactList}\small\item\em Attempt to map a peer name to its corresponding address. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp_8h_a10b6c599cf2e89f35eab06b7d1b7395a}{int \hyperlink{oob__tcp_8h_a10b6c599cf2e89f35eab06b7d1b7395a}{mca\+\_\+oob\+\_\+tcp\+\_\+parse\+\_\+uri} (const char $\ast$uri, struct sockaddr $\ast$inaddr)}\label{oob__tcp_8h_a10b6c599cf2e89f35eab06b7d1b7395a}

\begin{DoxyCompactList}\small\item\em Parse a U\+R\+I string into an I\+P address and port number. \end{DoxyCompactList}\item 
void \hyperlink{oob__tcp_8h_a7d1b288dd4325335486009198bc86c09}{mca\+\_\+oob\+\_\+tcp\+\_\+set\+\_\+socket\+\_\+options} (int sd)
\begin{DoxyCompactList}\small\item\em Setup socket options. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp_8h_a380a077e198ce7ca1a54c85857fb6c74}{int {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+ft\+\_\+event} (int state)}\label{oob__tcp_8h_a380a077e198ce7ca1a54c85857fb6c74}

\item 
\hypertarget{oob__tcp_8h_a63ddedaeb4a1cacd55bc2194a4e3e861}{{\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__oob__tcp__pending__connection__t}{mca\+\_\+oob\+\_\+tcp\+\_\+pending\+\_\+connection\+\_\+t})}\label{oob__tcp_8h_a63ddedaeb4a1cacd55bc2194a4e3e861}

\item 
\hypertarget{oob__tcp_8h_ad4ccae75a2c89753cd2def3272fc111d}{{\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__oob__tcp__device__t}{mca\+\_\+oob\+\_\+tcp\+\_\+device\+\_\+t})}\label{oob__tcp_8h_ad4ccae75a2c89753cd2def3272fc111d}

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp_8h_a49b95f957a9bfa3497b08978014b0a90}{\hyperlink{structmca__oob__1__0__0__t}{mca\+\_\+oob\+\_\+t} {\bfseries mca\+\_\+oob\+\_\+tcp}}\label{oob__tcp_8h_a49b95f957a9bfa3497b08978014b0a90}

\item 
\hypertarget{oob__tcp_8h_a89a6a9b97a31baf11e0130c249d82987}{O\+R\+T\+E\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \\*
\hyperlink{structmca__oob__tcp__component__t}{mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t} {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+component}}\label{oob__tcp_8h_a89a6a9b97a31baf11e0130c249d82987}

\item 
\hypertarget{oob__tcp_8h_af900da8041203c440bc9b84b4f98f82c}{int {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+output\+\_\+handle}}\label{oob__tcp_8h_af900da8041203c440bc9b84b4f98f82c}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Defines the functions for the tcp module. 



\subsection{Macro Definition Documentation}
\hypertarget{oob__tcp_8h_a449160ba550d2aec51abec6fc4b907cd}{\index{oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}!C\+L\+O\+S\+E\+\_\+\+T\+H\+E\+\_\+\+S\+O\+C\+K\+E\+T@{C\+L\+O\+S\+E\+\_\+\+T\+H\+E\+\_\+\+S\+O\+C\+K\+E\+T}}
\index{C\+L\+O\+S\+E\+\_\+\+T\+H\+E\+\_\+\+S\+O\+C\+K\+E\+T@{C\+L\+O\+S\+E\+\_\+\+T\+H\+E\+\_\+\+S\+O\+C\+K\+E\+T}!oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}}
\subsubsection[{C\+L\+O\+S\+E\+\_\+\+T\+H\+E\+\_\+\+S\+O\+C\+K\+E\+T}]{\setlength{\rightskip}{0pt plus 5cm}\#define C\+L\+O\+S\+E\+\_\+\+T\+H\+E\+\_\+\+S\+O\+C\+K\+E\+T(
\begin{DoxyParamCaption}
\item[{}]{socket}
\end{DoxyParamCaption}
)}}\label{oob__tcp_8h_a449160ba550d2aec51abec6fc4b907cd}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                            \(\backslash\)
        shutdown(socket, 2);        \(\backslash\)
        close(socket);              \(\backslash\)
    \} \textcolor{keywordflow}{while}(0)
\end{DoxyCode}


\subsection{Function Documentation}
\hypertarget{oob__tcp_8h_a522eb5ff27d59ca7b4a9ccacdb7fff71}{\index{oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+get\+\_\+addr@{mca\+\_\+oob\+\_\+tcp\+\_\+get\+\_\+addr}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+get\+\_\+addr@{mca\+\_\+oob\+\_\+tcp\+\_\+get\+\_\+addr}!oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+get\+\_\+addr}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ mca\+\_\+oob\+\_\+tcp\+\_\+get\+\_\+addr (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{oob__tcp_8h_a522eb5ff27d59ca7b4a9ccacdb7fff71}


Obtain contact information for this host (e.\+g. 

$<$ipaddress$>$\+:$<$port$>$) 

References mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::disable\+\_\+family, opal\+\_\+list\+\_\+get\+\_\+end(), opal\+\_\+list\+\_\+get\+\_\+first(), opal\+\_\+list\+\_\+get\+\_\+next, opal\+\_\+list\+\_\+get\+\_\+size(), and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+listen\+\_\+port.

\hypertarget{oob__tcp_8h_a9dec917c1134337929a5ca2fcb28122b}{\index{oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+ping@{mca\+\_\+oob\+\_\+tcp\+\_\+ping}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+ping@{mca\+\_\+oob\+\_\+tcp\+\_\+ping}!oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+ping}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+oob\+\_\+tcp\+\_\+ping (
\begin{DoxyParamCaption}
\item[{const {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$}]{, }
\item[{const char $\ast$}]{uri, }
\item[{const struct timeval $\ast$}]{tv}
\end{DoxyParamCaption}
)}}\label{oob__tcp_8h_a9dec917c1134337929a5ca2fcb28122b}


A routine to ping a given process name to determine if it is reachable. 


\begin{DoxyParams}{Parameters}
{\em name} & The peer name. \\
\hline
{\em tv} & The length of time to wait on a connection/response.\\
\hline
\end{DoxyParams}
Note that this routine blocks up to the specified timeout waiting for a connection / response from the specified peer. If the peer is unavailable an error status is returned. 

References M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+H\+D\+R\+\_\+\+H\+T\+O\+N, M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+H\+D\+R\+\_\+\+N\+T\+O\+H, mca\+\_\+oob\+\_\+tcp\+\_\+parse\+\_\+uri(), mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+type, opal\+\_\+output(), and O\+R\+T\+E\+\_\+\+P\+R\+O\+C\+\_\+\+M\+Y\+\_\+\+N\+A\+M\+E.

\hypertarget{oob__tcp_8h_a3a2c48c3f987d3c1308379d676c6e57f}{\index{oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+process\+\_\+name\+\_\+compare@{mca\+\_\+oob\+\_\+tcp\+\_\+process\+\_\+name\+\_\+compare}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+process\+\_\+name\+\_\+compare@{mca\+\_\+oob\+\_\+tcp\+\_\+process\+\_\+name\+\_\+compare}!oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+process\+\_\+name\+\_\+compare}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+oob\+\_\+tcp\+\_\+process\+\_\+name\+\_\+compare (
\begin{DoxyParamCaption}
\item[{const {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$}]{n1, }
\item[{const {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$}]{n2}
\end{DoxyParamCaption}
)}}\label{oob__tcp_8h_a3a2c48c3f987d3c1308379d676c6e57f}


Compare two process names for equality. 


\begin{DoxyParams}{Parameters}
{\em n1} & \hyperlink{structProcess}{Process} name 1. \\
\hline
{\em n2} & \hyperlink{structProcess}{Process} name 2. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
(-\/1 for n1$<$n2 0 for equality, 1 for n1$>$n2)
\end{DoxyReturn}
Note that the definition of $<$ or $>$ is somewhat arbitrary -\/ just needs to be consistently applied to maintain an ordering when process names are used as indices. \hypertarget{oob__tcp_8h_a2d4858355ad3b38d47a573ee505eafb9}{\index{oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+cancel@{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+cancel}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+cancel@{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+cancel}!oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+cancel}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+cancel (
\begin{DoxyParamCaption}
\item[{{\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$}]{peer, }
\item[{int}]{tag}
\end{DoxyParamCaption}
)}}\label{oob__tcp_8h_a2d4858355ad3b38d47a573ee505eafb9}


Cancel non-\/blocking receive. 


\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}


References M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+hdr, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+peer, mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+tag, opal\+\_\+list\+\_\+get\+\_\+end(), opal\+\_\+list\+\_\+get\+\_\+first(), opal\+\_\+list\+\_\+get\+\_\+next, opal\+\_\+list\+\_\+remove\+\_\+item(), O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+L\+O\+C\+K, O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+U\+N\+L\+O\+C\+K, O\+R\+T\+E\+\_\+\+N\+A\+M\+E, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::super, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+match\+\_\+cond, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+match\+\_\+count, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+match\+\_\+lock, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+msg\+\_\+post.

\hypertarget{oob__tcp_8h_a44f36249ccee8db526ad54615680cdec}{\index{oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb@{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb@{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb}!oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb (
\begin{DoxyParamCaption}
\item[{{\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$}]{peer, }
\item[{struct {\bf iovec} $\ast$}]{msg, }
\item[{int}]{count, }
\item[{int}]{tag, }
\item[{int}]{flags, }
\item[{{\bf orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t}}]{cbfunc, }
\item[{void $\ast$}]{cbdata}
\end{DoxyParamCaption}
)}}\label{oob__tcp_8h_a44f36249ccee8db526ad54615680cdec}


Non-\/blocking version of mca\+\_\+oob\+\_\+recv(). 


\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}


References M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+A\+L\+L\+O\+C, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+recv(), M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+cbdata, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+cbfunc, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+complete, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+flags, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+hdr, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+peer, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rc, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwbuf, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwiov, mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+size, mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+tag, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+type, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+ucnt, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+uiov, opal\+\_\+list\+\_\+append, O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+L\+O\+C\+K, O\+P\+A\+L\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+\+U\+N\+L\+O\+C\+K, O\+R\+T\+E\+\_\+\+P\+R\+O\+C\+\_\+\+M\+Y\+\_\+\+N\+A\+M\+E, O\+R\+T\+E\+\_\+\+R\+M\+L\+\_\+\+P\+E\+R\+S\+I\+S\+T\+E\+N\+T, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+match\+\_\+lock, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+msg\+\_\+post.

\hypertarget{oob__tcp_8h_a7d1b288dd4325335486009198bc86c09}{\index{oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+set\+\_\+socket\+\_\+options@{mca\+\_\+oob\+\_\+tcp\+\_\+set\+\_\+socket\+\_\+options}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+set\+\_\+socket\+\_\+options@{mca\+\_\+oob\+\_\+tcp\+\_\+set\+\_\+socket\+\_\+options}!oob\+\_\+tcp.\+h@{oob\+\_\+tcp.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+set\+\_\+socket\+\_\+options}]{\setlength{\rightskip}{0pt plus 5cm}void mca\+\_\+oob\+\_\+tcp\+\_\+set\+\_\+socket\+\_\+options (
\begin{DoxyParamCaption}
\item[{int}]{sd}
\end{DoxyParamCaption}
)}}\label{oob__tcp_8h_a7d1b288dd4325335486009198bc86c09}


Setup socket options. 

Setup socket options. 

References opal\+\_\+output(), mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+rcvbuf, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+sndbuf.

