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


Contains the data structure which describes each connection.  


{\ttfamily \#include \char`\"{}orte\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/types.\+h\char`\"{}}\\*
{\ttfamily \#include $<$string.\+h$>$}\\*
{\ttfamily \#include \char`\"{}opal/class/opal\+\_\+list.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/threads/mutex.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/event/event.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}oob\+\_\+tcp\+\_\+msg.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}oob\+\_\+tcp\+\_\+addr.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t}
\begin{DoxyCompactList}\small\item\em This structure describes a peer. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{oob__tcp__peer_8h_ad644f3fc34f82d704b26047ec70a92a9}{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+A\+L\+L\+O\+C}(peer, rc)
\begin{DoxyCompactList}\small\item\em Get a new peer data structure. \end{DoxyCompactList}\item 
\#define \hyperlink{oob__tcp__peer_8h_a94002bb949113d83b40d6aef1da17182}{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+R\+E\+T\+U\+R\+N}(peer)
\begin{DoxyCompactList}\small\item\em Return a peer data structure. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp__peer_8h_a458bf3753014b9808062dd61481aacee}{typedef struct \hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} \hyperlink{oob__tcp__peer_8h_a458bf3753014b9808062dd61481aacee}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t}}\label{oob__tcp__peer_8h_a458bf3753014b9808062dd61481aacee}

\begin{DoxyCompactList}\small\item\em Convenience Typedef. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp__peer_8h_a206f455e3d39c86a72c0bc410dd5070c}{enum \hyperlink{oob__tcp__peer_8h_a206f455e3d39c86a72c0bc410dd5070c}{mca\+\_\+oob\+\_\+tcp\+\_\+state\+\_\+t} \{ \\*
{\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+C\+L\+O\+S\+E\+D}, 
{\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+R\+E\+S\+O\+L\+V\+E}, 
{\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+N\+G}, 
{\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+C\+O\+N\+N\+E\+C\+T\+\_\+\+A\+C\+K}, 
\\*
{\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+C\+O\+N\+N\+E\+C\+T\+E\+D}, 
{\bfseries M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+F\+A\+I\+L\+E\+D}
 \}}\label{oob__tcp__peer_8h_a206f455e3d39c86a72c0bc410dd5070c}

\begin{DoxyCompactList}\small\item\em the state of the connection \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{oob__tcp__peer_8h_a7cc3f8a03f8611e4663d5a335630db8d}{{\bfseries O\+B\+J\+\_\+\+C\+L\+A\+S\+S\+\_\+\+D\+E\+C\+L\+A\+R\+A\+T\+I\+O\+N} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t})}\label{oob__tcp__peer_8h_a7cc3f8a03f8611e4663d5a335630db8d}

\item 
\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$ \hyperlink{oob__tcp__peer_8h_a14256e00603416f1e67bbd3e5daefd1a}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+lookup} (const \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$peer\+\_\+name)
\begin{DoxyCompactList}\small\item\em Lookup a peer in the cache -\/ if it doesn't exists create one and cache it. \end{DoxyCompactList}\item 
int \hyperlink{oob__tcp__peer_8h_a49143a3fc27eac56769754bab207b2cb}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+send} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer, \hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg)
\begin{DoxyCompactList}\small\item\em Start sending a message to the specified peer. \end{DoxyCompactList}\item 
bool \hyperlink{oob__tcp__peer_8h_aa19f9ccef10f815fd1e5a8f3a9f7936c}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+accept} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer, int sd)
\begin{DoxyCompactList}\small\item\em Connection request for this peer. \end{DoxyCompactList}\item 
void \hyperlink{oob__tcp__peer_8h_a9692a6056ec4d42c25ce95166275264f}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+close} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer)
\begin{DoxyCompactList}\small\item\em Cleanup/close the connection to the peer. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp__peer_8h_add8cb2eeb5236ab0f78c5fd1daad72a8}{void {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+shutdown} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer)}\label{oob__tcp__peer_8h_add8cb2eeb5236ab0f78c5fd1daad72a8}

\item 
\hypertarget{oob__tcp__peer_8h_a6608e6d38b2c3e9841d61f730bd488ba}{void \hyperlink{oob__tcp__peer_8h_a6608e6d38b2c3e9841d61f730bd488ba}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+resolved} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer, \hyperlink{structmca__oob__tcp__addr__t}{mca\+\_\+oob\+\_\+tcp\+\_\+addr\+\_\+t} $\ast$addr)}\label{oob__tcp__peer_8h_a6608e6d38b2c3e9841d61f730bd488ba}

\begin{DoxyCompactList}\small\item\em The peers address has been resolved. \end{DoxyCompactList}\item 
\hypertarget{oob__tcp__peer_8h_aead2b034ea9dee0655b21a4774c920c8}{int {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+send\+\_\+ident} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer)}\label{oob__tcp__peer_8h_aead2b034ea9dee0655b21a4774c920c8}

\item 
\hypertarget{oob__tcp__peer_8h_af03af866d071c904569eaf01539c8a2a}{void {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+dequeue\+\_\+msg} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer, \hyperlink{structmca__oob__tcp__msg__t}{mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+t} $\ast$msg)}\label{oob__tcp__peer_8h_af03af866d071c904569eaf01539c8a2a}

\item 
\hypertarget{oob__tcp__peer_8h_a9e45032e0156e5c926a569ec661fa01a}{void {\bfseries mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+dump} (\hyperlink{structmca__oob__tcp__peer__t}{mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t} $\ast$peer, const char $\ast$msg)}\label{oob__tcp__peer_8h_a9e45032e0156e5c926a569ec661fa01a}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Contains the data structure which describes each connection. 



\subsection{Macro Definition Documentation}
\hypertarget{oob__tcp__peer_8h_ad644f3fc34f82d704b26047ec70a92a9}{\index{oob\+\_\+tcp\+\_\+peer.\+h@{oob\+\_\+tcp\+\_\+peer.\+h}!M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+A\+L\+L\+O\+C}}
\index{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+A\+L\+L\+O\+C@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+A\+L\+L\+O\+C}!oob\+\_\+tcp\+\_\+peer.\+h@{oob\+\_\+tcp\+\_\+peer.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+A\+L\+L\+O\+C(
\begin{DoxyParamCaption}
\item[{}]{peer, }
\item[{}]{rc}
\end{DoxyParamCaption}
)}}\label{oob__tcp__peer_8h_ad644f3fc34f82d704b26047ec70a92a9}
{\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_a02817bfb880e695e7aba8241a858651e}{tcp\_peer\_free}, item, rc); \(\backslash\)
    peer = (\hyperlink{structmca__oob__tcp__peer__t}{mca\_oob\_tcp\_peer\_t}*)item;                                   \(\backslash\)
\}
\end{DoxyCode}


Get a new peer data structure. 



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

\hypertarget{oob__tcp__peer_8h_a94002bb949113d83b40d6aef1da17182}{\index{oob\+\_\+tcp\+\_\+peer.\+h@{oob\+\_\+tcp\+\_\+peer.\+h}!M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+R\+E\+T\+U\+R\+N}}
\index{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+R\+E\+T\+U\+R\+N@{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+R\+E\+T\+U\+R\+N}!oob\+\_\+tcp\+\_\+peer.\+h@{oob\+\_\+tcp\+\_\+peer.\+h}}
\subsubsection[{M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+R\+E\+T\+U\+R\+N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+R\+E\+T\+U\+R\+N(
\begin{DoxyParamCaption}
\item[{}]{peer}
\end{DoxyParamCaption}
)}}\label{oob__tcp__peer_8h_a94002bb949113d83b40d6aef1da17182}
{\bfseries Value\+:}
\begin{DoxyCode}
\{                                                                       \(\backslash\)
    mca\_oob\_tcp\_peer\_shutdown(peer);                                    \hyperlink{opal__hash__table_8h_a0ca4857d7d10aacf22a1dfcba6156b35}{\(\backslash\)}
\hyperlink{opal__hash__table_8h_a0ca4857d7d10aacf22a1dfcba6156b35}{    opal\_hash\_table\_remove\_value\_uint64}(&mca\_oob\_tcp\_component.
      \hyperlink{structmca__oob__tcp__component__t_aec499b5c25cdd0f8ceb0a92ad53c127b}{tcp\_peers}, \hyperlink{name__fns_8h_a35bf3694b561cefd9c9e6a51819389d2}{orte\_util\_hash\_name}(&peer->peer\_name)); \(\backslash\)
    OPAL\_FREE\_LIST\_RETURN(&mca\_oob\_tcp\_component.\hyperlink{structmca__oob__tcp__component__t_a02817bfb880e695e7aba8241a858651e}{tcp\_peer\_free},         \(\backslash\)
                          &peer->super);                                \(\backslash\)
\}
\end{DoxyCode}


Return a peer data structure. 



Referenced by mca\+\_\+oob\+\_\+tcp\+\_\+fini(), and mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+lookup().



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


Connection request for this peer. 

Check the status of our connection before accepting the peers.


\begin{DoxyParams}{Parameters}
{\em peer} & The peer process. \\
\hline
{\em sd} & Incoming connection request. \\
\hline
\end{DoxyParams}


References mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+close(), opal\+\_\+output(), 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, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+lock, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+name, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+recv\+\_\+event, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+sd, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+state, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+debug.

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


Cleanup/close the connection to the peer. 


\begin{DoxyParams}{Parameters}
{\em peer} & The peer process. \\
\hline
\end{DoxyParams}


References orte\+\_\+process\+\_\+name\+\_\+t\+::jobid, opal\+\_\+output(), O\+P\+A\+L\+\_\+\+O\+U\+T\+P\+U\+T\+\_\+\+V\+E\+R\+B\+O\+S\+E, 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, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+lock, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+name, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+sd, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+state, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+debug, and orte\+\_\+errmgr\+\_\+base\+\_\+module\+\_\+2\+\_\+3\+\_\+0\+\_\+t\+::update\+\_\+state.



Referenced by mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+recv\+\_\+handler(), mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler(), and mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+accept().

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


Lookup a peer in the cache -\/ if it doesn't exists create one and cache it. 


\begin{DoxyParams}{Parameters}
{\em peer\+\_\+name} & the name of the peer \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em pointer} & to the peer's (possibly newly created) struture \\
\hline
{\em N\+U\+L\+L} & if there was a problem \\
\hline
\end{DoxyRetVals}


References M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+A\+L\+L\+O\+C, M\+C\+A\+\_\+\+O\+O\+B\+\_\+\+T\+C\+P\+\_\+\+P\+E\+E\+R\+\_\+\+R\+E\+T\+U\+R\+N, opal\+\_\+hash\+\_\+table\+\_\+get\+\_\+value\+\_\+uint64(), opal\+\_\+hash\+\_\+table\+\_\+set\+\_\+value\+\_\+uint64(), opal\+\_\+list\+\_\+get\+\_\+begin(), opal\+\_\+list\+\_\+get\+\_\+last(), opal\+\_\+list\+\_\+get\+\_\+prev, opal\+\_\+list\+\_\+get\+\_\+size(), opal\+\_\+list\+\_\+prepend(), 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, orte\+\_\+util\+\_\+hash\+\_\+name(), mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+addr, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+current\+\_\+af, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+name, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+recv\+\_\+msg, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+retries, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+sd, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+send\+\_\+msg, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+state, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+lock, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+peer\+\_\+limit, mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+peer\+\_\+list, and mca\+\_\+oob\+\_\+tcp\+\_\+component\+\_\+t\+::tcp\+\_\+peers.

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


Start sending a message to the specified peer. 

The routine can return before the send completes.


\begin{DoxyParams}{Parameters}
{\em peer} & The peer process. \\
\hline
{\em msg} & The message to send. \\
\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 mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+complete(), mca\+\_\+oob\+\_\+tcp\+\_\+msg\+\_\+send\+\_\+handler(), mca\+\_\+oob\+\_\+tcp\+\_\+resolve(), 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, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+lock, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+name, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+send\+\_\+event, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+send\+\_\+msg, mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+send\+\_\+queue, and mca\+\_\+oob\+\_\+tcp\+\_\+peer\+\_\+t\+::peer\+\_\+state.

