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


contains the data structure we will use to describe a message  


{\ttfamily \#include \char`\"{}orte\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/types.\+h\char`\"{}}\\*
{\ttfamily \#include $<$errno.\+h$>$}\\*
{\ttfamily \#include \char`\"{}orte/mca/oob/oob.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}oob\+\_\+tcp\+\_\+hdr.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t}
\begin{DoxyCompactList}\small\item\em describes each message being progressed. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp__msg_8h_afbbcf8e55440968e77aba99fba4945d4}{\#define {\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+I\+O\+V\+\_\+\+M\+A\+X}~16}\label{oob__tcp__msg_8h_afbbcf8e55440968e77aba99fba4945d4}

\item 
\#define \hyperlink{oob__tcp__msg_8h_a8fbcb4a870f7204367e23ca67148ca17}{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+A\+L\+L\+O\+C}(msg, rc)
\begin{DoxyCompactList}\small\item\em Get a new structure for use with a message. \end{DoxyCompactList}\item 
\#define \hyperlink{oob__tcp__msg_8h_ac86dd3a8b2133665156ea59907ecaa4a}{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N}(msg)
\begin{DoxyCompactList}\small\item\em return a message structure that is no longer needed \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp__msg_8h_a6f7119ca6734c706f0e59e766259e89f}{typedef struct \hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} \hyperlink{oob__tcp__msg_8h_a6f7119ca6734c706f0e59e766259e89f}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t}}\label{oob__tcp__msg_8h_a6f7119ca6734c706f0e59e766259e89f}

\begin{DoxyCompactList}\small\item\em Convenience typedef. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp__msg_8h_adf52c7c3a5c92df0407387536263c64a}{enum {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+type\+\_\+t} \{ {\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+O\+S\+T\+E\+D}, 
{\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+U\+N\+E\+X\+P\+E\+C\+T\+E\+D}
 \}}\label{oob__tcp__msg_8h_adf52c7c3a5c92df0407387536263c64a}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp__msg_8h_a4c848c41d6a5f3c29f9e8bc81902cecf}{{\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t})}\label{oob__tcp__msg_8h_a4c848c41d6a5f3c29f9e8bc81902cecf}

\item 
int \hyperlink{oob__tcp__msg_8h_a25c57b9277fdef6f695dbdadefbd50bc}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+wait} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, int $\ast$size)
\begin{DoxyCompactList}\small\item\em Wait for a msg to complete. \end{DoxyCompactList}\item 
int \hyperlink{oob__tcp__msg_8h_a567fba4c0a1cb63abbb3bc977a8a6fc1}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+timedwait} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, int $\ast$size, struct \hyperlink{structtimespec}{timespec} $\ast$ts)
\begin{DoxyCompactList}\small\item\em Wait -\/ up to a timeout -\/ for a msg to complete. \end{DoxyCompactList}\item 
int \hyperlink{oob__tcp__msg_8h_a44da4ebff4aea9017d0aa45a5cca6094}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer)
\begin{DoxyCompactList}\small\item\em Signal that a message has completed. \end{DoxyCompactList}\item 
int \hyperlink{oob__tcp__msg_8h_a36b0c324525ee3a8b15703b4aab9eaac}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+copy} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, struct \hyperlink{structiovec}{iovec} $\ast$iov, int count)
\begin{DoxyCompactList}\small\item\em Called to copy the results of a message into user supplied iovec array. \end{DoxyCompactList}\item 
bool \hyperlink{oob__tcp__msg_8h_abccf29f98227a2781405d273a971729c}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, struct \hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer)
\begin{DoxyCompactList}\small\item\em Called asynchronously to progress sending a message from the event library thread. \end{DoxyCompactList}\item 
bool \hyperlink{oob__tcp__msg_8h_a3de05473f26fadd5295cca6b879b8410}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+handler} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, struct \hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer)
\begin{DoxyCompactList}\small\item\em Called asynchronously to progress sending a message from the event library thread. \end{DoxyCompactList}\item 
void \hyperlink{oob__tcp__msg_8h_a5abbc1db537304f71ff1c56bfed89091}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+complete} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, struct \hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer)
\begin{DoxyCompactList}\small\item\em The message has been completely received -\/ so attempt to match against posted recvs. \end{DoxyCompactList}\item 
\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$ \hyperlink{oob__tcp__msg_8h_aa7aec2653a3101c7c1a5e04825c55170}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+recv} (\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$name, int tag)
\begin{DoxyCompactList}\small\item\em Match name to a message that has been received asynchronously (unexpected). \end{DoxyCompactList}\item 
\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$ \hyperlink{oob__tcp__msg_8h_a0b4f92324ed473166cf5c4581bc19cf1}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+post} (\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$name, int tag)
\begin{DoxyCompactList}\small\item\em Match name to a posted recv request. \end{DoxyCompactList}\item 
static struct \hyperlink{structiovec}{iovec} $\ast$ \hyperlink{oob__tcp__msg_8h_a4884e3948b0bfce5806c453405d6852c}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+alloc} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, int count)
\begin{DoxyCompactList}\small\item\em Allocate space for iovec array -\/ if the request number of elements is less than M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+I\+O\+V\+\_\+\+M\+A\+X then use the array allocated along w/ the message -\/ otherwise allocate count elements. \end{DoxyCompactList}\item 
static void \hyperlink{oob__tcp__msg_8h_a304dc5d6940ee7d6b22cd841cfb157ee}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+return} (\hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg, struct \hyperlink{structiovec}{iovec} $\ast$iov)
\begin{DoxyCompactList}\small\item\em Release resource held by iovec array if this is not part of the message. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
contains the data structure we will use to describe a message 



\subsection{Macro Definition Documentation}
\hypertarget{oob__tcp__msg_8h_a8fbcb4a870f7204367e23ca67148ca17}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+A\+L\+L\+O\+C}}
\index{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+A\+L\+L\+O\+C}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+A\+L\+L\+O\+C(
\begin{DoxyParamCaption}
\item[{}]{msg, }
\item[{}]{rc}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_a8fbcb4a870f7204367e23ca67148ca17}
{\bfseries Value\+:}
\begin{DoxyCode}
\{                                                                  \(\backslash\)
    opal\_free\_list\_item\_t* item;                                   \(\backslash\)
    OPAL\_FREE\_LIST\_GET(&mca\_oob\_tcp\_component.\hyperlink{structmca__oob__tcp__component__t_ae3358d380731da2a2655d4ad33eb9667}{tcp\_msgs}, item, rc); \(\backslash\)
    msg = (\hyperlink{structmca__oob__tcp__msg__t}{mca\_oob\_tcp\_msg\_t}*)item;                                \(\backslash\)
\}
\end{DoxyCode}


Get a new structure for use with a message. 



Referenced by mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb().

\hypertarget{oob__tcp__msg_8h_ac86dd3a8b2133665156ea59907ecaa4a}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N}}
\index{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+M\+S\+G\+\_\+\+R\+E\+T\+U\+R\+N(
\begin{DoxyParamCaption}
\item[{}]{msg}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_ac86dd3a8b2133665156ea59907ecaa4a}
{\bfseries Value\+:}
\begin{DoxyCode}
\{                                                                       \(\backslash\)
    \textcolor{comment}{/* frees the iovec allocated during the send/receive */}             \(\backslash\)
    if(NULL != msg->msg\_rwiov)                                          \hyperlink{oob__tcp__msg_8h_a304dc5d6940ee7d6b22cd841cfb157ee}{\(\backslash\)}
\hyperlink{oob__tcp__msg_8h_a304dc5d6940ee7d6b22cd841cfb157ee}{        mca\_oob\_tcp\_msg\_iov\_return}(msg,msg->msg\_rwiov);                 \(\backslash\)
    if(NULL != msg->msg\_rwbuf)                                          \(\backslash\)
        free(msg->msg\_rwbuf);                                           \(\backslash\)
    OPAL\_FREE\_LIST\_RETURN(&mca\_oob\_tcp\_component.\hyperlink{structmca__oob__tcp__component__t_ae3358d380731da2a2655d4ad33eb9667}{tcp\_msgs},              \(\backslash\)
                          &msg->super);                                 \(\backslash\)
\}
\end{DoxyCode}


return a message structure that is no longer needed 



Referenced by mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete(), mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+complete(), mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+cancel(), and mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb().



\subsection{Function Documentation}
\hypertarget{oob__tcp__msg_8h_a44da4ebff4aea9017d0aa45a5cca6094}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{{\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$}]{peer}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_a44da4ebff4aea9017d0aa45a5cca6094}


Signal that a message has completed. 

Wakes up any pending threads (for blocking send) or invokes callbacks for non-\/blocking case. 
\begin{DoxyParams}{Parameters}
{\em msg} & (I\+N) Message send/recv that has completed. \\
\hline
{\em peer} & (I\+N) The peer the send/receive was from \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & or error code on failure. \\
\hline
\end{DoxyRetVals}


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\+\_\+cbdata, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+cbfunc, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+complete, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+condition, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+flags, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+hdr, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+lock, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+peer, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rc, mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+tag, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+ucnt, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+uiov, opal\+\_\+list\+\_\+append, opal\+\_\+list\+\_\+get\+\_\+size(), opal\+\_\+list\+\_\+remove\+\_\+first(), 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\+\_\+\+R\+M\+L\+\_\+\+F\+L\+A\+G\+\_\+\+R\+E\+C\+U\+R\+S\+I\+V\+E\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+lock, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+msg\+\_\+completed.



Referenced by mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+send().

\hypertarget{oob__tcp__msg_8h_a36b0c324525ee3a8b15703b4aab9eaac}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+copy@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+copy}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+copy@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+copy}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+copy}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+copy (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{struct {\bf iovec} $\ast$}]{iov, }
\item[{int}]{count}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_a36b0c324525ee3a8b15703b4aab9eaac}


Called to copy the results of a message into user supplied iovec array. 


\begin{DoxyParams}{Parameters}
{\em msg} & (I\+N) Message send that is in progress. \\
\hline
{\em iov} & (I\+N) Iovec array of user supplied buffers. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em count} & Number of elements in iovec array. \\
\hline
\end{DoxyRetVals}


References mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+flags, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+hdr, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwbuf, mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+size, and O\+R\+T\+E\+\_\+\+R\+M\+L\+\_\+\+A\+L\+L\+O\+C.

\hypertarget{oob__tcp__msg_8h_a4884e3948b0bfce5806c453405d6852c}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+alloc@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+alloc}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+alloc@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+alloc}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+alloc}]{\setlength{\rightskip}{0pt plus 5cm}static struct {\bf iovec}$\ast$ mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+alloc (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{int}]{count}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{oob__tcp__msg_8h_a4884e3948b0bfce5806c453405d6852c}


Allocate space for iovec array -\/ if the request number of elements is less than M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+I\+O\+V\+\_\+\+M\+A\+X then use the array allocated along w/ the message -\/ otherwise allocate count elements. 


\begin{DoxyParams}{Parameters}
{\em msg} & (I\+N) Message to allocate array. \\
\hline
{\em count} & (I\+N) the number of iovecs \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Array of iovec elements. 
\end{DoxyReturn}
\hypertarget{oob__tcp__msg_8h_a304dc5d6940ee7d6b22cd841cfb157ee}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+return@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+return}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+return@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+return}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+return}]{\setlength{\rightskip}{0pt plus 5cm}static void mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+iov\+\_\+return (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{struct {\bf iovec} $\ast$}]{iov}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{oob__tcp__msg_8h_a304dc5d6940ee7d6b22cd841cfb157ee}


Release resource held by iovec array if this is not part of the message. 


\begin{DoxyParams}{Parameters}
{\em msg} & (I\+N) Message to allocate array. \\
\hline
{\em iov} & (I\+N) Iovec array to return. \\
\hline
\end{DoxyParams}
\hypertarget{oob__tcp__msg_8h_a0b4f92324ed473166cf5c4581bc19cf1}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+post@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+post}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+post@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+post}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+post}]{\setlength{\rightskip}{0pt plus 5cm}{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t}$\ast$ mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+match\+\_\+post (
\begin{DoxyParamCaption}
\item[{{\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$}]{name, }
\item[{int}]{tag}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_a0b4f92324ed473166cf5c4581bc19cf1}


Match name to a posted recv request. 


\begin{DoxyParams}{Parameters}
{\em name} & (I\+N) Name associated with peer or wildcard to match first posted recv. \\
\hline
{\em tag} & (I\+N) Message tag. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
msg Matched message or N\+U\+L\+L.
\end{DoxyReturn}
Note -\/ this routine requires the caller to be holding the module lock. 

References mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+flags, 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\+R\+T\+E\+\_\+\+N\+A\+M\+E, O\+R\+T\+E\+\_\+\+R\+M\+L\+\_\+\+P\+E\+R\+S\+I\+S\+T\+E\+N\+T, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::super, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+msg\+\_\+post.

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


Match name to a message that has been received asynchronously (unexpected). 


\begin{DoxyParams}{Parameters}
{\em name} & (I\+N) Name associated with peer or wildcard to match first posted recv. \\
\hline
{\em tag} & (I\+N) Message tag. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
msg Matched message or N\+U\+L\+L.
\end{DoxyReturn}
Note -\/ this routine requires the caller to be holding the module lock. 

References mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+hdr, mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+tag, opal\+\_\+list\+\_\+get\+\_\+end(), opal\+\_\+list\+\_\+get\+\_\+first(), opal\+\_\+list\+\_\+get\+\_\+next, O\+R\+T\+E\+\_\+\+N\+A\+M\+E, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+msg\+\_\+recv.



Referenced by mca\+\_\+oob\+\_\+tcp\+\_\+recv\+\_\+nb().

\hypertarget{oob__tcp__msg_8h_a5abbc1db537304f71ff1c56bfed89091}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+complete@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+complete}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+complete@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+complete}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+complete}]{\setlength{\rightskip}{0pt plus 5cm}void mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+complete (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$}]{peer}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_a5abbc1db537304f71ff1c56bfed89091}


The message has been completely received -\/ so attempt to match against posted recvs. 

The message has been completely received -\/ so attempt to match against posted recvs. 

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\+\_\+hdr\+\_\+t\+::msg\+\_\+type, opal\+\_\+output(), O\+R\+T\+E\+\_\+\+P\+R\+O\+C\+\_\+\+M\+Y\+\_\+\+N\+A\+M\+E, and mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+name.

\hypertarget{oob__tcp__msg_8h_a3de05473f26fadd5295cca6b879b8410}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+handler@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+handler}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+handler@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+handler}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+handler}]{\setlength{\rightskip}{0pt plus 5cm}bool mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+handler (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{struct {\bf mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$}]{peer}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_a3de05473f26fadd5295cca6b879b8410}


Called asynchronously to progress sending a message from the event library thread. 


\begin{DoxyParams}{Parameters}
{\em msg} & (I\+N) Message send that is in progress. \\
\hline
{\em peer} & (I\+N) Peer theat we are recieving from. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em bool} & Bool flag indicating wether operation has completed. \\
\hline
\end{DoxyRetVals}


References M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+H\+D\+R\+\_\+\+N\+T\+O\+H, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+close(), mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+hdr, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwbuf, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwiov, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwnum, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwptr, mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+size, mca\+\_\+oob\+\_\+tcp\+\_\+hdr\+\_\+t\+::msg\+\_\+type, opal\+\_\+output(), O\+R\+T\+E\+\_\+\+P\+R\+O\+C\+\_\+\+M\+Y\+\_\+\+N\+A\+M\+E, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+name, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+debug.

\hypertarget{oob__tcp__msg_8h_abccf29f98227a2781405d273a971729c}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler}]{\setlength{\rightskip}{0pt plus 5cm}bool mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{struct {\bf mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$}]{peer}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_abccf29f98227a2781405d273a971729c}


Called asynchronously to progress sending a message from the event library thread. 


\begin{DoxyParams}{Parameters}
{\em msg} & (I\+N) Message send that is in progress. \\
\hline
{\em peer} & (I\+N) Peer we are sending to. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em Number} & of bytes copied. \\
\hline
\end{DoxyRetVals}


References mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+close(), mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rc, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwnum, mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t\+::msg\+\_\+rwptr, opal\+\_\+output(), O\+R\+T\+E\+\_\+\+P\+R\+O\+C\+\_\+\+M\+Y\+\_\+\+N\+A\+M\+E, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+name, and mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+sd.



Referenced by mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+send().

\hypertarget{oob__tcp__msg_8h_a567fba4c0a1cb63abbb3bc977a8a6fc1}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+timedwait@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+timedwait}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+timedwait@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+timedwait}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+timedwait}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+timedwait (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{int $\ast$}]{size, }
\item[{struct {\bf timespec} $\ast$}]{ts}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_a567fba4c0a1cb63abbb3bc977a8a6fc1}


Wait -\/ up to a timeout -\/ for a msg to complete. 


\begin{DoxyParams}{Parameters}
{\em msg} & (I\+N) Message to wait on. \\
\hline
{\em size} & (O\+U\+T) Number of bytes delivered. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & or error code on failure. \\
\hline
\end{DoxyRetVals}
\hypertarget{oob__tcp__msg_8h_a25c57b9277fdef6f695dbdadefbd50bc}{\index{oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}!mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+wait@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+wait}}
\index{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+wait@{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+wait}!oob\+\_\+tcp\+\_\+msg.\+h@{oob\+\_\+tcp\+\_\+msg.\+h}}
\subsubsection[{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+wait}]{\setlength{\rightskip}{0pt plus 5cm}int mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+wait (
\begin{DoxyParamCaption}
\item[{{\bf mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$}]{msg, }
\item[{int $\ast$}]{size}
\end{DoxyParamCaption}
)}}\label{oob__tcp__msg_8h_a25c57b9277fdef6f695dbdadefbd50bc}


Wait for a msg to complete. 


\begin{DoxyParams}{Parameters}
{\em msg} & (I\+N) Message to wait on. \\
\hline
{\em size} & (O\+U\+T) Number of bytes delivered. \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & or error code on failure. \\
\hline
\end{DoxyRetVals}
