\hypertarget{iof__hnp_8h}{\section{orte/mca/iof/hnp/iof\+\_\+hnp.h File Reference}
\label{iof__hnp_8h}\index{orte/mca/iof/hnp/iof\+\_\+hnp.\+h@{orte/mca/iof/hnp/iof\+\_\+hnp.\+h}}
}


The hnp I\+O\+F component is used in H\+N\+P processes only.  


{\ttfamily \#include \char`\"{}orte\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/iof/iof.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}orte/mca/iof/base/base.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structorte__iof__hnp__component__t}{orte\+\_\+iof\+\_\+hnp\+\_\+component\+\_\+t}
\begin{DoxyCompactList}\small\item\em I\+O\+F H\+N\+P Component. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{iof__hnp_8h_aecad5c76f3ec6a9f8af13d58ebc82dd5}{typedef struct \\*
\hyperlink{structorte__iof__hnp__component__t}{orte\+\_\+iof\+\_\+hnp\+\_\+component\+\_\+t} {\bfseries orte\+\_\+iof\+\_\+hnp\+\_\+component\+\_\+t}}\label{iof__hnp_8h_aecad5c76f3ec6a9f8af13d58ebc82dd5}

\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{iof__hnp_8h_aaaae369c2fda62773ec96ec50d2eb854}{void {\bfseries orte\+\_\+iof\+\_\+hnp\+\_\+recv} (int status, \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$sender, \hyperlink{structopal__buffer__t}{opal\+\_\+buffer\+\_\+t} $\ast$buffer, \hyperlink{rml__types_8h_ab0683f653b0908cf6520469d91559917}{orte\+\_\+rml\+\_\+tag\+\_\+t} tag, void $\ast$cbdata)}\label{iof__hnp_8h_aaaae369c2fda62773ec96ec50d2eb854}

\item 
\hypertarget{iof__hnp_8h_a4d3b95c3399a40f4cc7fa4d16aae5d88}{void {\bfseries orte\+\_\+iof\+\_\+hnp\+\_\+read\+\_\+local\+\_\+handler} (int fd, short \hyperlink{structevent}{event}, void $\ast$cbdata)}\label{iof__hnp_8h_a4d3b95c3399a40f4cc7fa4d16aae5d88}

\item 
\hypertarget{iof__hnp_8h_a37e9b01655db13bcf8c6e20a44dde153}{void {\bfseries orte\+\_\+iof\+\_\+hnp\+\_\+stdin\+\_\+cb} (int fd, short \hyperlink{structevent}{event}, void $\ast$cbdata)}\label{iof__hnp_8h_a37e9b01655db13bcf8c6e20a44dde153}

\item 
\hypertarget{iof__hnp_8h_a4a7498e416b3fc761ed3369e9b25fd44}{bool {\bfseries orte\+\_\+iof\+\_\+hnp\+\_\+stdin\+\_\+check} (int fd)}\label{iof__hnp_8h_a4a7498e416b3fc761ed3369e9b25fd44}

\item 
\hypertarget{iof__hnp_8h_a26cb06ec64836564af601820892bbf1b}{int {\bfseries orte\+\_\+iof\+\_\+hnp\+\_\+send\+\_\+data\+\_\+to\+\_\+endpoint} (\hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$host, \hyperlink{structorte__process__name__t}{orte\+\_\+process\+\_\+name\+\_\+t} $\ast$target, orte\+\_\+iof\+\_\+tag\+\_\+t tag, unsigned char $\ast$data, int numbytes)}\label{iof__hnp_8h_a26cb06ec64836564af601820892bbf1b}

\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{iof__hnp_8h_ad9cdd76392168c33290607bb89981194}{O\+R\+T\+E\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+D\+E\+C\+L\+S\+P\+E\+C \\*
\hyperlink{structorte__iof__hnp__component__t}{orte\+\_\+iof\+\_\+hnp\+\_\+component\+\_\+t} {\bfseries mca\+\_\+iof\+\_\+hnp\+\_\+component}}\label{iof__hnp_8h_ad9cdd76392168c33290607bb89981194}

\item 
\hypertarget{iof__hnp_8h_ae37d8961a5da2b2c4ea40f440da1dfb9}{\hyperlink{structorte__iof__base__module__2__0__0__t}{orte\+\_\+iof\+\_\+base\+\_\+module\+\_\+t} {\bfseries orte\+\_\+iof\+\_\+hnp\+\_\+module}}\label{iof__hnp_8h_ae37d8961a5da2b2c4ea40f440da1dfb9}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
The hnp I\+O\+F component is used in H\+N\+P processes only. 

It is the \char`\"{}hub\char`\"{} for all I\+O\+F activity, meaning that {\itshape all} I\+O\+F traffic is routed to the hnp component, and this component figures out where it is supposed to go from there. Specifically\+: there is {\itshape no} direct proxy-\/to-\/proxy I\+O\+F communication. If a proxy/orted wants to get a stream from another proxy/orted, the stream will go proxy/orted -\/$>$ H\+N\+P -\/$>$ proxy/orted.

The hnp I\+O\+F component does two things\+: 1. forward fragments between file descriptors and streams, and 2. maintain forwarding tables to \char`\"{}route\char`\"{} incoming fragments to outgoing destinations (both file descriptors and other published streams). 