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


Runtime Messaging Layer (R\+M\+L) Communication Interface.  


{\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`\"{}opal/mca/crs/crs.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/crs/base/base.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/rml/rml\+\_\+types.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structorte__rml__component__2__0__0__t}{orte\+\_\+rml\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em R\+M\+L component interface. \end{DoxyCompactList}\item 
struct \hyperlink{structorte__rml__module__t}{orte\+\_\+rml\+\_\+module\+\_\+t}
\begin{DoxyCompactList}\small\item\em R\+M\+L module interface. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{rml_8h_a8e6040fe8112af99662f5a7eeb9dadf2}{O\+R\+T\+E\+\_\+\+R\+M\+L\+\_\+\+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 rml. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \\*
\hyperlink{structorte__rml__module__t}{orte\+\_\+rml\+\_\+module\+\_\+t} $\ast$($\ast$ \hyperlink{rml_8h_afb452e4ee2ac00fc4c742535e523f880}{orte\+\_\+rml\+\_\+component\+\_\+init\+\_\+fn\+\_\+t} )(int $\ast$priority)
\begin{DoxyCompactList}\small\item\em R\+M\+L component initialization. \end{DoxyCompactList}\item 
\hypertarget{rml_8h_a2f4b8b065fedfc97920000f1d8031ae7}{typedef struct \\*
\hyperlink{structorte__rml__component__2__0__0__t}{orte\+\_\+rml\+\_\+component\+\_\+2\+\_\+0\+\_\+0\+\_\+t} \hyperlink{rml_8h_a2f4b8b065fedfc97920000f1d8031ae7}{orte\+\_\+rml\+\_\+component\+\_\+t}}\label{rml_8h_a2f4b8b065fedfc97920000f1d8031ae7}

\begin{DoxyCompactList}\small\item\em Convienence typedef. \end{DoxyCompactList}\item 
typedef void($\ast$ \hyperlink{rml_8h_a06325815d852b971fad98f20bd4e4539}{orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t} )(int status, struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structiovec}{iovec} $\ast$msg, int count, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, void $\ast$cbdata)
\begin{DoxyCompactList}\small\item\em Funtion prototype for callback from non-\/blocking iovec send and receive. \end{DoxyCompactList}\item 
typedef void($\ast$ \hyperlink{rml_8h_ad7fb9ca9af8925653d78731c9c076e12}{orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t} )(int status, struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structopal__buffer__t}{opal\+\_\+buffer\+\_\+t} $\ast$buffer, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, void $\ast$cbdata)
\begin{DoxyCompactList}\small\item\em Funtion prototype for callback from non-\/blocking buffer send and receive. \end{DoxyCompactList}\item 
typedef void($\ast$ \hyperlink{rml_8h_a262ea78e32876c11a16ae2dcd42521f8}{orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t} )(const \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, orte\+\_\+rml\+\_\+exception\+\_\+t exception)
\begin{DoxyCompactList}\small\item\em \hyperlink{structFunction}{Function} prototype for exception callback. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a99f40d2707fd3ad87b8ecd8a45e311a4}{orte\+\_\+rml\+\_\+module\+\_\+enable\+\_\+comm\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Enable communication using the R\+M\+L module. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a11d9fb458328d29fa5400710fb3af7e7}{orte\+\_\+rml\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Finalize the R\+M\+L module. \end{DoxyCompactList}\item 
typedef char $\ast$($\ast$ \hyperlink{rml_8h_a0e8d6b38b789cad715b9a67e21376801}{orte\+\_\+rml\+\_\+module\+\_\+get\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Get a \char`\"{}contact info\char`\"{} string for the local process. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a8ab5fdff0807ff7ff3c52bb11882a2c4}{orte\+\_\+rml\+\_\+module\+\_\+set\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t} )(const char $\ast$contact\+\_\+info)
\begin{DoxyCompactList}\small\item\em Update the R\+M\+L with a remote process's contact info. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a402d111885b40ee581d965ad1b1f8d37}{orte\+\_\+rml\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t} )(const char $\ast$contact\+\_\+info, const struct timeval $\ast$tv)
\begin{DoxyCompactList}\small\item\em \char`\"{}\+Ping\char`\"{} another process to determine availability \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a325af7c6dd7b27bc55047b5edacd0482}{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structiovec}{iovec} $\ast$msg, int count, int tag, int flags)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} an iovec blocking message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a16d16f5a732d1a28231331bbc479e939}{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structopal__buffer__t}{opal\+\_\+buffer\+\_\+t} $\ast$buffer, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} a buffer blocking message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a80c61cae685ab24051f8512aa9e18d20}{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structiovec}{iovec} $\ast$msg, int count, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} 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 iovec non-\/blocking message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a1265aa7a930e74c65b0f4b3b006c3781}{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structopal__buffer__t}{opal\+\_\+buffer\+\_\+t} $\ast$buffer, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags, \hyperlink{rml_8h_ad7fb9ca9af8925653d78731c9c076e12}{orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} an buffer non-\/blocking message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a2ed2ce6644ff685b05b542d8c3a78250}{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structiovec}{iovec} $\ast$msg, int count, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags)
\begin{DoxyCompactList}\small\item\em Receive an iovec blocking message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a5c891385fc6027f9aa5744aaf7a56c61}{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structopal__buffer__t}{opal\+\_\+buffer\+\_\+t} $\ast$buf, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags)
\begin{DoxyCompactList}\small\item\em Receive a buffer blocking message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a392c837d4dea21b9a01c4eaa2621b620}{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct \hyperlink{structiovec}{iovec} $\ast$msg, int count, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags, \hyperlink{rml_8h_a06325815d852b971fad98f20bd4e4539}{orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)
\begin{DoxyCompactList}\small\item\em Receive an iovec non-\/blocking message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a1fa6cd07b6e0a5a0b8ae23b2817e92d7}{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags, \hyperlink{rml_8h_ad7fb9ca9af8925653d78731c9c076e12}{orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)
\begin{DoxyCompactList}\small\item\em Receive a buffer non-\/blocking message. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a6e82540512dd8024566e27414636fefd}{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t} )(\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag)
\begin{DoxyCompactList}\small\item\em Cancel a posted non-\/blocking receive. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_aca91315d07e30b4ff413b55f70769ec0}{orte\+\_\+rml\+\_\+module\+\_\+exception\+\_\+fn\+\_\+t} )(\hyperlink{rml_8h_a262ea78e32876c11a16ae2dcd42521f8}{orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t} cbfunc)
\begin{DoxyCompactList}\small\item\em Register or deregister an exception callback function. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a0db46a574e44f5e74019b3473b044680}{orte\+\_\+rml\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t} )(int state)
\begin{DoxyCompactList}\small\item\em Handle fault tolerance updates. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{rml_8h_a3bbc49f2e98f7ffe18b758c085db4abd}{orte\+\_\+rml\+\_\+module\+\_\+purge\+\_\+fn\+\_\+t} )(struct \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer)
\begin{DoxyCompactList}\small\item\em Purge the R\+M\+L/\+O\+O\+B of contact info and pending messages to/from a specified process. \end{DoxyCompactList}\item 
\hypertarget{rml_8h_a9d7d9ccb666a794da928dcb78fcaf592}{typedef struct \hyperlink{structorte__rml__module__t}{orte\+\_\+rml\+\_\+module\+\_\+t} \hyperlink{rml_8h_a9d7d9ccb666a794da928dcb78fcaf592}{orte\+\_\+rml\+\_\+module\+\_\+t}}\label{rml_8h_a9d7d9ccb666a794da928dcb78fcaf592}

\begin{DoxyCompactList}\small\item\em Convienence typedef. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{rml_8h_a977b19a27c154a3052456da09b0b6492}{O\+R\+T\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \hyperlink{structorte__rml__module__t}{orte\+\_\+rml\+\_\+module\+\_\+t} \hyperlink{rml_8h_a977b19a27c154a3052456da09b0b6492}{orte\+\_\+rml}}\label{rml_8h_a977b19a27c154a3052456da09b0b6492}

\begin{DoxyCompactList}\small\item\em Interface for R\+M\+L communication. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Runtime Messaging Layer (R\+M\+L) Communication Interface. 

The Runtime Messaging Layer (R\+M\+L) provices basic point-\/to-\/point communication between O\+R\+T\+E processes. The system is available for most architectures, with some exceptions (the Cray X\+T3/\+X\+T4, for example). 

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


Macro for use in components that are of type rml. 



\subsection{Typedef Documentation}
\hypertarget{rml_8h_ad7fb9ca9af8925653d78731c9c076e12}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t)(int status, struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf opal\+\_\+buffer\+\_\+t} $\ast$buffer, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, void $\ast$cbdata)}}\label{rml_8h_ad7fb9ca9af8925653d78731c9c076e12}


Funtion prototype for callback from non-\/blocking buffer send and receive. 

Funtion prototype for callback from non-\/blocking buffer send and receive. The buffer may not be the same pointer passed to either send\+\_\+buffer\+\_\+nb and recv\+\_\+buffer\+\_\+nb. The peer memory location may not be the same, and is owned by the R\+M\+L, not the calling process.

\begin{DoxyNote}{Note}
The parameter in/out parameters are relative to the user's callback function.
\end{DoxyNote}

\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em status} & Completion status -\/ equivalent to the return value from blocking send/recv \\
\hline
\mbox{\tt in}  & {\em peer} & Name of peer process \\
\hline
\mbox{\tt in}  & {\em buffer} & Message buffer \\
\hline
\mbox{\tt in}  & {\em tag} & User defined tag for matching send/recv \\
\hline
\mbox{\tt in}  & {\em cbdata} & User data passed to send\+\_\+nb() or recv\+\_\+nb() \\
\hline
\end{DoxyParams}
\hypertarget{rml_8h_a06325815d852b971fad98f20bd4e4539}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t)(int status, struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf iovec} $\ast$msg, int count, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, void $\ast$cbdata)}}\label{rml_8h_a06325815d852b971fad98f20bd4e4539}


Funtion prototype for callback from non-\/blocking iovec send and receive. 

Funtion prototype for callback from non-\/blocking iovec send and receive. The iovec pointer will be the same pointer passed to either send\+\_\+nb and recv\+\_\+nb. The peer memory location may not be the same, and is owned by the R\+M\+L, not the calling process.

\begin{DoxyNote}{Note}
The parameter in/out parameters are relative to the user's callback function.
\end{DoxyNote}

\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em status} & Completion status -\/ equivalent to the return value from blocking send/recv \\
\hline
\mbox{\tt in}  & {\em peer} & Opaque name of peer process \\
\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 cbdata} & User data passed to send\+\_\+nb() or recv\+\_\+nb() \\
\hline
\end{DoxyParams}
\hypertarget{rml_8h_afb452e4ee2ac00fc4c742535e523f880}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+component\+\_\+init\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+component\+\_\+init\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+component\+\_\+init\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf orte\+\_\+rml\+\_\+module\+\_\+t}$\ast$($\ast$ orte\+\_\+rml\+\_\+component\+\_\+init\+\_\+fn\+\_\+t)(int $\ast$priority)}}\label{rml_8h_afb452e4ee2ac00fc4c742535e523f880}


R\+M\+L component initialization. 

Create an instance (module) of the given R\+M\+L component. Upon returning, the module data structure should be fully populated and all functions should be usable. Non-\/blocking receive calls may be posted upon return from this function, although communication need not be enabled until enable\+\_\+comm() call is called on the module.

\begin{DoxyReturn}{Returns}
Exactly one module created by the call to the component's initialization function should be returned. The module structure should be fully populated, and the priority should be set to a reasonable value.
\end{DoxyReturn}

\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em priority} & Selection priority for the given component\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em N\+U\+L\+L} & An error occurred and initialization did not occur \\
\hline
{\em non-\/\+N\+U\+L\+L} & The module was successfully initialized \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a262ea78e32876c11a16ae2dcd42521f8}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t@{orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t}}
\index{orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t@{orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t)(const {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, orte\+\_\+rml\+\_\+exception\+\_\+t exception)}}\label{rml_8h_a262ea78e32876c11a16ae2dcd42521f8}


\hyperlink{structFunction}{Function} prototype for exception callback. 

\hyperlink{structFunction}{Function} prototype for callback triggered when a communication error is detected.

\begin{DoxyNote}{Note}
The parameter in/out parameters are relative to the user's callback function.
\end{DoxyNote}

\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Name of peer process \\
\hline
\mbox{\tt in}  & {\em exception} & Description of the error causing the exception \\
\hline
\end{DoxyParams}
\hypertarget{rml_8h_a99f40d2707fd3ad87b8ecd8a45e311a4}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+enable\+\_\+comm\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+enable\+\_\+comm\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+enable\+\_\+comm\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+enable\+\_\+comm\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+enable\+\_\+comm\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+enable\+\_\+comm\+\_\+fn\+\_\+t)(void)}}\label{rml_8h_a99f40d2707fd3ad87b8ecd8a45e311a4}


Enable communication using the R\+M\+L module. 

Enable communication using the R\+M\+L module. Before this call, only the non-\/blocking receive and ping interfaces may be used. After this call returns, the module must be fully functional, capable of sending and receiving data. This function will be called after the process has been assigned a proces identifier.

\begin{DoxyNote}{Note}
While the ping interface may be used between the call to the component's initialization function and this call, care must be taken when doing so. The remote process must have already called enable\+\_\+comm() or the remote process will not reply to the ping. As the ping interface is generally used by M\+P\+I processes to find a daemon to contact, this should not be a major limitation.
\end{DoxyNote}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & Communications successfully enabled \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_aca91315d07e30b4ff413b55f70769ec0}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+exception\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+exception\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+exception\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+exception\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+exception\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+exception\+\_\+fn\+\_\+t)({\bf orte\+\_\+rml\+\_\+exception\+\_\+callback\+\_\+t} cbfunc)}}\label{rml_8h_aca91315d07e30b4ff413b55f70769ec0}


Register or deregister an exception callback function. 

Register or deregister a callback when an asynchronous communication exception occurs.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em cbfunc} & User callback\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The operation completed successfully \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecifed error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a11d9fb458328d29fa5400710fb3af7e7}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t)(void)}}\label{rml_8h_a11d9fb458328d29fa5400710fb3af7e7}


Finalize the R\+M\+L module. 

Finalize the R\+M\+L module, ending all communication and cleaning up all resources associated with the module. After the finalize function is called, all interface functions (and the module structure itself) are not available for use.

\begin{DoxyNote}{Note}
Whether or not the finalize function returns successfully, the module should not be used once this function is called.
\end{DoxyNote}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & Success \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a0db46a574e44f5e74019b3473b044680}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+ft\+\_\+event\+\_\+fn\+\_\+t)(int state)}}\label{rml_8h_a0db46a574e44f5e74019b3473b044680}


Handle fault tolerance updates. 

Handle fault tolerance updates


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em state} & Fault tolerance state update\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The operation completed successfully \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecifed error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a0e8d6b38b789cad715b9a67e21376801}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+get\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+get\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+get\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+get\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+get\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef char$\ast$($\ast$ orte\+\_\+rml\+\_\+module\+\_\+get\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t)(void)}}\label{rml_8h_a0e8d6b38b789cad715b9a67e21376801}


Get a \char`\"{}contact info\char`\"{} string for the local process. 

Get a \char`\"{}contact info\char`\"{} string that can be used by other processes to share the contact information for the given process. The \char`\"{}contact
info\char`\"{} string includes the process identifier for the given process and uses only basic ascii characters. It should be quoted when evaluated by a shell, although no special escaping is necessary.

\begin{DoxyNote}{Note}
The function may return a contact info string which contains multiple addresses.
\end{DoxyNote}

\begin{DoxyRetVals}{Return values}
{\em non-\/\+N\+U\+L\+L} & The contact information for this process \\
\hline
{\em N\+U\+L\+L} & An error occurred when trying to get the current process contact info \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a402d111885b40ee581d965ad1b1f8d37}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+ping\+\_\+fn\+\_\+t)(const char $\ast$contact\+\_\+info, const struct timeval $\ast$tv)}}\label{rml_8h_a402d111885b40ee581d965ad1b1f8d37}


\char`\"{}\+Ping\char`\"{} another process to determine availability 

Ping another process to determine if it is available. This function only verifies that the process is alive and will allow a connection to the local process. It does {\itshape not} qualify as establishing communication with the remote process, as required by the note for set\+\_\+contact\+\_\+info().


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em contact\+\_\+info} & The contact info string for the remote process \\
\hline
\mbox{\tt in}  & {\em tv} & Timeout after which the ping should be failed\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+E\+S\+S} & The process is available and will allow connections from the local process \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred during the update \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a3bbc49f2e98f7ffe18b758c085db4abd}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+purge\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+purge\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+purge\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+purge\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+purge\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+purge\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer)}}\label{rml_8h_a3bbc49f2e98f7ffe18b758c085db4abd}


Purge the R\+M\+L/\+O\+O\+B of contact info and pending messages to/from a specified process. 

Used when a process aborts and is to be restarted \hypertarget{rml_8h_a5c891385fc6027f9aa5744aaf7a56c61}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf opal\+\_\+buffer\+\_\+t} $\ast$buf, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags)}}\label{rml_8h_a5c891385fc6027f9aa5744aaf7a56c61}


Receive a buffer blocking message. 

Receive a message into a user-\/provided buffer. The call will not return until the buffer has been received. The remote process does not need to be connected to the current process to post the receive, so it is possible to post a receive with no sending process (ie, it will never complete). The buffer must not be currently in use with any other R\+M\+L communication function during a receive call.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Peer process or O\+R\+T\+E\+\_\+\+N\+A\+M\+E\+\_\+\+W\+I\+L\+D\+C\+A\+R\+D for wildcard receive \\
\hline
\mbox{\tt out}  & {\em buffer} & A dss buffer to update with the received data \\
\hline
\mbox{\tt in}  & {\em tag} & User defined tag for matching send/recv \\
\hline
\mbox{\tt in}  & {\em flags} & Flags modifying receive behavior\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em $>$0} & Number of bytes successfully received (may be smaller than the posted buffer size \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a1fa6cd07b6e0a5a0b8ae23b2817e92d7}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags, {\bf orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)}}\label{rml_8h_a1fa6cd07b6e0a5a0b8ae23b2817e92d7}


Receive a buffer non-\/blocking message. 

Receive a message into a user-\/provided buffer. The call will not return until the buffer has been received. The remote process does not need to be connected to the current process to post the receive, so it is possible to post a receive with no sending process (ie, it will never complete). The buffer must not be currently in use with any other R\+M\+L communication function during a receive call.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Peer process or O\+R\+T\+E\+\_\+\+N\+A\+M\+E\+\_\+\+W\+I\+L\+D\+C\+A\+R\+D for wildcard receive \\
\hline
\mbox{\tt in}  & {\em tag} & User defined tag for matching send/recv \\
\hline
\mbox{\tt in}  & {\em flags} & May be O\+R\+T\+E\+\_\+\+R\+M\+L\+\_\+\+P\+E\+E\+K to return up to the number of bytes provided in the iovec array without removing the message from the queue. \\
\hline
\mbox{\tt in}  & {\em cbfunc} & Callback function on message comlpetion \\
\hline
\mbox{\tt in}  & {\em cbdata} & User data to provide during completion callback\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The message was successfully started \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+A\+D\+D\+R\+E\+S\+S\+E\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N} & Contact information for the receiving process is not available \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a6e82540512dd8024566e27414636fefd}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+cancel\+\_\+fn\+\_\+t)({\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag)}}\label{rml_8h_a6e82540512dd8024566e27414636fefd}


Cancel a posted non-\/blocking receive. 

Attempt to cancel a posten non-\/blocking receive.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Peer process or O\+R\+T\+E\+\_\+\+N\+A\+M\+E\+\_\+\+W\+I\+L\+D\+C\+A\+R\+D, exactly as passed to the non-\/blocking receive call \\
\hline
\mbox{\tt in}  & {\em tag} & Posted receive tag\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The receive was successfully cancelled \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+F\+O\+U\+N\+D} & A matching receive was not found \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a2ed2ce6644ff685b05b542d8c3a78250}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf iovec} $\ast$msg, int count, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags)}}\label{rml_8h_a2ed2ce6644ff685b05b542d8c3a78250}


Receive an iovec blocking message. 

Receive a message into a user-\/provided iovec. The call will not return until the buffer has been received. The remote process does not need to be connected to the current process to post the receive, so it is possible to post a receive with no sending process (ie, it will never complete). The buffer must not be currently in use with any other R\+M\+L communication function during a receive call.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Peer process or O\+R\+T\+E\+\_\+\+N\+A\+M\+E\+\_\+\+W\+I\+L\+D\+C\+A\+R\+D for wildcard receive \\
\hline
\mbox{\tt out}  & {\em msg} & iovec array of receive buffer space \\
\hline
\mbox{\tt in}  & {\em count} & Number of iovec entries in the array \\
\hline
\mbox{\tt in}  & {\em tag} & User defined tag for matching send/recv \\
\hline
\mbox{\tt in}  & {\em flags} & May be O\+R\+T\+E\+\_\+\+R\+M\+L\+\_\+\+P\+E\+E\+K to return up to the number of bytes provided in the iovec array without removing the message from the queue.\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em $>$0} & Number of bytes successfully received (may be smaller than the posted buffer size \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a392c837d4dea21b9a01c4eaa2621b620}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+recv\+\_\+nb\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf iovec} $\ast$msg, int count, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags, {\bf orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)}}\label{rml_8h_a392c837d4dea21b9a01c4eaa2621b620}


Receive an iovec non-\/blocking message. 

Receive a message into a user-\/provided iovec. The call will not return until the buffer has been received. The remote process does not need to be connected to the current process to post the receive, so it is possible to post a receive with no sending process (ie, it will never complete). The buffer must not be currently in use with any other R\+M\+L communication function during a receive call.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Peer process or O\+R\+T\+E\+\_\+\+N\+A\+M\+E\+\_\+\+W\+I\+L\+D\+C\+A\+R\+D for wildcard receive \\
\hline
\mbox{\tt out}  & {\em msg} & iovec array of receive buffer space \\
\hline
\mbox{\tt in}  & {\em count} & Number of iovec entries in the array \\
\hline
\mbox{\tt in}  & {\em tag} & User defined tag for matching send/recv \\
\hline
\mbox{\tt in}  & {\em flags} & May be O\+R\+T\+E\+\_\+\+R\+M\+L\+\_\+\+P\+E\+E\+K to return up to the number of bytes provided in the iovec array without removing the message from the queue. \\
\hline
\mbox{\tt in}  & {\em cbfunc} & Callback function on message comlpetion \\
\hline
\mbox{\tt in}  & {\em cbdata} & User data to provide during completion callback\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The message was successfully started \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+A\+D\+D\+R\+E\+S\+S\+E\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N} & Contact information for the receiving process is not available \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a16d16f5a732d1a28231331bbc479e939}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf opal\+\_\+buffer\+\_\+t} $\ast$buffer, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags)}}\label{rml_8h_a16d16f5a732d1a28231331bbc479e939}


\hyperlink{structSend}{Send} a buffer blocking message. 

\hyperlink{structSend}{Send} a buffer blocking message to the specified peer. The call will return when the buffer may be modified. The return of a call to send() does not give any indication of remote completion.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Name of receiving process \\
\hline
\mbox{\tt in}  & {\em buffer} & send buffer \\
\hline
\mbox{\tt in}  & {\em tag} & User defined tag for matching send/recv \\
\hline
\mbox{\tt in}  & {\em flags} & Currently unused.\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em $>$0} & Number of bytes successfully sent (will be length of buffer) \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+A\+D\+D\+R\+E\+S\+S\+E\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N} & Contact information for the receiving process is not available \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a1265aa7a930e74c65b0f4b3b006c3781}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+buffer\+\_\+nb\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf opal\+\_\+buffer\+\_\+t} $\ast$buffer, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags, {\bf orte\+\_\+rml\+\_\+buffer\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)}}\label{rml_8h_a1265aa7a930e74c65b0f4b3b006c3781}


\hyperlink{structSend}{Send} an buffer non-\/blocking message. 

\hyperlink{structSend}{Send} an buffer blocking message to the specified peer. The call will return immediately, although the buffer may not be modified until the completion callback is triggered. The buffer {\itshape may} be passed to another call to send\+\_\+nb before the completion callback is triggered. The callback being triggered does not give any indication of remote completion.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Name of receiving process \\
\hline
\mbox{\tt in}  & {\em buffer} & Buffer array describing send buffer \\
\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 message comlpetion \\
\hline
\mbox{\tt in}  & {\em cbdata} & User data to provide during completion callback\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The message was successfully started \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+A\+D\+D\+R\+E\+S\+S\+E\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N} & Contact information for the receiving process is not available \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a325af7c6dd7b27bc55047b5edacd0482}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf iovec} $\ast$msg, int count, int tag, int flags)}}\label{rml_8h_a325af7c6dd7b27bc55047b5edacd0482}


\hyperlink{structSend}{Send} an iovec blocking message. 

\hyperlink{structSend}{Send} an iovec blocking message to the specified peer. The call will return when the buffer may be modified. The return of a call to send() does not give any indication of remote completion.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Name of receiving process \\
\hline
\mbox{\tt in}  & {\em msg} & iovec array describing send buffer \\
\hline
\mbox{\tt in}  & {\em count} & Length of iovec array \\
\hline
\mbox{\tt in}  & {\em tag} & User defined tag for matching send/recv \\
\hline
\mbox{\tt in}  & {\em flags} & Currently unused.\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em $>$0} & Number of bytes successfully sent (will be length of all iovecs) \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+A\+D\+D\+R\+E\+S\+S\+E\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N} & Contact information for the receiving process is not available \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a80c61cae685ab24051f8512aa9e18d20}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+send\+\_\+nb\+\_\+fn\+\_\+t)(struct {\bf orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer, struct {\bf iovec} $\ast$msg, int count, {\bf orte\+\_\+rml\+\_\+tag\+\_\+t} tag, int flags, {\bf orte\+\_\+rml\+\_\+callback\+\_\+fn\+\_\+t} cbfunc, void $\ast$cbdata)}}\label{rml_8h_a80c61cae685ab24051f8512aa9e18d20}


\hyperlink{structSend}{Send} an iovec non-\/blocking message. 

\hyperlink{structSend}{Send} an iovec blocking message to the specified peer. The call will return immediately, although the iovec may not be modified until the completion callback is triggered. The iovec {\itshape may} be passed to another call to send\+\_\+nb before the completion callback is triggered. The callback being triggered does not give any indication of remote completion.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em peer} & Name of receiving process \\
\hline
\mbox{\tt in}  & {\em msg} & iovec array describing send buffer \\
\hline
\mbox{\tt in}  & {\em count} & Length of 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 message comlpetion \\
\hline
\mbox{\tt in}  & {\em cbdata} & User data to provide during completion callback\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The message was successfully started \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+B\+A\+D\+\_\+\+P\+A\+R\+A\+M} & One of the parameters was invalid \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+\_\+\+A\+D\+D\+R\+E\+S\+S\+E\+E\+\_\+\+U\+N\+K\+N\+O\+W\+N} & Contact information for the receiving process is not available \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred \\
\hline
\end{DoxyRetVals}
\hypertarget{rml_8h_a8ab5fdff0807ff7ff3c52bb11882a2c4}{\index{rml.\+h@{rml.\+h}!orte\+\_\+rml\+\_\+module\+\_\+set\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+set\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t}}
\index{orte\+\_\+rml\+\_\+module\+\_\+set\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t@{orte\+\_\+rml\+\_\+module\+\_\+set\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t}!rml.\+h@{rml.\+h}}
\subsubsection[{orte\+\_\+rml\+\_\+module\+\_\+set\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ orte\+\_\+rml\+\_\+module\+\_\+set\+\_\+contact\+\_\+info\+\_\+fn\+\_\+t)(const char $\ast$contact\+\_\+info)}}\label{rml_8h_a8ab5fdff0807ff7ff3c52bb11882a2c4}


Update the R\+M\+L with a remote process's contact info. 

Update the R\+M\+L with a remote process's contact information, as returned from the get\+\_\+contact\+\_\+info() function on the remote process. Before a send can be initiated to a remote process, either this function must be called for that process or that process must have already established a connection to the local process.

\begin{DoxyNote}{Note}
The user may not always explicitly call this function directly, but may instead cause it to be called through one of the contact setup functions available in \hyperlink{rml__contact_8h}{orte/mca/rml/base/rml\+\_\+contact.\+h}.
\end{DoxyNote}

\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em contact\+\_\+info} & The contact information string of a peer\\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em O\+R\+T\+E\+\_\+\+S\+U\+C\+C\+E\+S\+S} & The contact information was successfully updated \\
\hline
{\em O\+R\+T\+E\+\_\+\+E\+R\+R\+O\+R} & An unspecified error occurred during the update \\
\hline
\end{DoxyRetVals}
