\hypertarget{group__Ecore__Pipe__Group}{}\section{Pipe wrapper}
\label{group__Ecore__Pipe__Group}\index{Pipe wrapper@{Pipe wrapper}}


These functions wrap the pipe / write / read functions to easily integrate its use into ecore\textquotesingle{}s main loop.  


\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{}typedef struct \+\_\+\+Ecore\+\_\+\+Pipe \hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}\label{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}

\begin{DoxyCompactList}\small\item\em A handle for pipes. \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}{}typedef void($\ast$ \hyperlink{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}{Ecore\+\_\+\+Pipe\+\_\+\+Cb}) (void $\ast$data, void $\ast$buffer, unsigned int nbyte)\label{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}

\begin{DoxyCompactList}\small\item\em The callback that data written to the pipe is sent to. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$ \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add} (\hyperlink{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}{Ecore\+\_\+\+Pipe\+\_\+\+Cb} handler, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Create two file descriptors (sockets on Windows). \end{DoxyCompactList}\item 
\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$ \hyperlink{group__Ecore__Pipe__Group_ga09637c246ad7bb903c498f347c929d62}{ecore\+\_\+pipe\+\_\+full\+\_\+add} (\hyperlink{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}{Ecore\+\_\+\+Pipe\+\_\+\+Cb} handler, const void $\ast$data, int fd\+\_\+read, int fd\+\_\+write, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} read\+\_\+survive\+\_\+fork, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} write\+\_\+survive\+\_\+fork)
\begin{DoxyCompactList}\small\item\em Create a pipe with more parameters. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Ecore__Pipe__Group_ga7ed5669e83a3119d2023c64288f9af60}{ecore\+\_\+pipe\+\_\+del} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p)
\begin{DoxyCompactList}\small\item\em Free an Ecore\+\_\+\+Pipe object created with \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()}. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Ecore__Pipe__Group_ga5336bc71e829c391926c26750ae0f407}{ecore\+\_\+pipe\+\_\+write} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p, const void $\ast$buffer, unsigned int nbytes)
\begin{DoxyCompactList}\small\item\em Write on the file descriptor the data passed as parameter. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Pipe__Group_ga60099202e0880dd3de617ca14fa0c58b}{ecore\+\_\+pipe\+\_\+write\+\_\+close} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p)
\begin{DoxyCompactList}\small\item\em Close the write end of an Ecore\+\_\+\+Pipe object created with \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()}. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Pipe__Group_gab9df469d955d67dbcd95fd6f2dabdc79}{ecore\+\_\+pipe\+\_\+read\+\_\+close} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p)
\begin{DoxyCompactList}\small\item\em Close the read end of an Ecore\+\_\+\+Pipe object created with \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()}. \end{DoxyCompactList}\item 
int \hyperlink{group__Ecore__Pipe__Group_ga7d74cabc7a3ee9aa0795ed4e5211ce81}{ecore\+\_\+pipe\+\_\+read\+\_\+fd} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p)
\begin{DoxyCompactList}\small\item\em Get the pipe read file descriptor. \end{DoxyCompactList}\item 
int \hyperlink{group__Ecore__Pipe__Group_ga41e986373544cfb7e4bd19786d27a157}{ecore\+\_\+pipe\+\_\+write\+\_\+fd} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p)
\begin{DoxyCompactList}\small\item\em Get the pipe write file descriptor. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Pipe__Group_gacf6095f3a1b07d9aec2bd76909b76239}{ecore\+\_\+pipe\+\_\+thaw} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p)
\begin{DoxyCompactList}\small\item\em Start monitoring again the pipe for reading. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Pipe__Group_ga4c80814c9589a4e64c057a52f15361c3}{ecore\+\_\+pipe\+\_\+freeze} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p)
\begin{DoxyCompactList}\small\item\em Stop monitoring if necessary the pipe for reading. \end{DoxyCompactList}\item 
int \hyperlink{group__Ecore__Pipe__Group_ga0d65cf04c81863ef39cf63788605b86a}{ecore\+\_\+pipe\+\_\+wait} (\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe} $\ast$p, int message\+\_\+count, double wait)
\begin{DoxyCompactList}\small\item\em Wait from another thread on the read side of a pipe. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
These functions wrap the pipe / write / read functions to easily integrate its use into ecore\textquotesingle{}s main loop. 

The \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()} function creates file descriptors (sockets on Windows) and attach a handle to the ecore main loop. That handle is called when data is read in the pipe. To write data in the pipe, just call \hyperlink{group__Ecore__Pipe__Group_ga5336bc71e829c391926c26750ae0f407}{ecore\+\_\+pipe\+\_\+write()}. When you are done, just call \hyperlink{group__Ecore__Pipe__Group_ga7ed5669e83a3119d2023c64288f9af60}{ecore\+\_\+pipe\+\_\+del()}.

For examples see here\+: \begin{DoxyItemize}
\item \hyperlink{tutorial_ecore_pipe_gstreamer_example}{tutorial\+\_\+ecore\+\_\+pipe\+\_\+gstreamer\+\_\+example} \item \hyperlink{tutorial_ecore_pipe_simple_example}{tutorial\+\_\+ecore\+\_\+pipe\+\_\+simple\+\_\+example} \end{DoxyItemize}


\subsection{Function Documentation}
\hypertarget{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+add@{ecore\+\_\+pipe\+\_\+add}}
\index{ecore\+\_\+pipe\+\_\+add@{ecore\+\_\+pipe\+\_\+add}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Ecore\+\_\+\+Pipe}$\ast$ ecore\+\_\+pipe\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe\+\_\+\+Cb}}]{handler, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}


Create two file descriptors (sockets on Windows). 

Add a callback that will be called when the file descriptor that is listened receives data. An event is also put in the event queue when data is received.


\begin{DoxyParams}{Parameters}
{\em handler} & The handler called when data is received. \\
\hline
{\em data} & Data to pass to {\ttfamily handler} when it is called. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A newly created Ecore\+\_\+\+Pipe object if successful. {\ttfamily N\+U\+L\+L} otherwise. 
\end{DoxyReturn}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_pipe_gstreamer_example_8c-example}{ecore\+\_\+pipe\+\_\+gstreamer\+\_\+example.\+c}, and \hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}.\end{Desc}


Referenced by ecore\+\_\+fork\+\_\+reset().

\hypertarget{group__Ecore__Pipe__Group_ga09637c246ad7bb903c498f347c929d62}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+full\+\_\+add@{ecore\+\_\+pipe\+\_\+full\+\_\+add}}
\index{ecore\+\_\+pipe\+\_\+full\+\_\+add@{ecore\+\_\+pipe\+\_\+full\+\_\+add}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+full\+\_\+add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Ecore\+\_\+\+Pipe}$\ast$ ecore\+\_\+pipe\+\_\+full\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe\+\_\+\+Cb}}]{handler, }
\item[{const void $\ast$}]{data, }
\item[{int}]{fd\+\_\+read, }
\item[{int}]{fd\+\_\+write, }
\item[{{\bf Eina\+\_\+\+Bool}}]{read\+\_\+survive\+\_\+fork, }
\item[{{\bf Eina\+\_\+\+Bool}}]{write\+\_\+survive\+\_\+fork}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga09637c246ad7bb903c498f347c929d62}


Create a pipe with more parameters. 


\begin{DoxyParams}{Parameters}
{\em handler} & Same as \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()} \\
\hline
{\em data} & Same as \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()} \\
\hline
{\em fd\+\_\+read} & An fd to use for reading or -\/1 otherwise \\
\hline
{\em fd\+\_\+write} & An fd to use for writing or -\/1 otherwise \\
\hline
{\em read\+\_\+survive\+\_\+fork} & Should read fd survive a fork \\
\hline
{\em write\+\_\+survive\+\_\+fork} & Should write fd survive a fork\\
\hline
\end{DoxyParams}
This is the same as \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()} but with some added parameters.

\begin{DoxyReturn}{Returns}
A pointer to the new Ecore\+\_\+\+Pipe object on success, else N\+U\+L\+L. 
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()} 
\end{DoxySeeAlso}


References E\+C\+O\+R\+E\+\_\+\+F\+D\+\_\+\+R\+E\+A\+D, ecore\+\_\+main\+\_\+fd\+\_\+handler\+\_\+add(), E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N\+\_\+\+V\+A\+L, E\+R\+R, fcntl(), and pipe.

\hypertarget{group__Ecore__Pipe__Group_ga7ed5669e83a3119d2023c64288f9af60}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+del@{ecore\+\_\+pipe\+\_\+del}}
\index{ecore\+\_\+pipe\+\_\+del@{ecore\+\_\+pipe\+\_\+del}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+del}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ ecore\+\_\+pipe\+\_\+del (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga7ed5669e83a3119d2023c64288f9af60}


Free an Ecore\+\_\+\+Pipe object created with \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()}. 


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object to be freed. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The pointer to the private data 
\end{DoxyReturn}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_pipe_gstreamer_example_8c-example}{ecore\+\_\+pipe\+\_\+gstreamer\+\_\+example.\+c}, and \hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}.\end{Desc}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N\+\_\+\+V\+A\+L.



Referenced by ecore\+\_\+fork\+\_\+reset().

\hypertarget{group__Ecore__Pipe__Group_ga5336bc71e829c391926c26750ae0f407}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+write@{ecore\+\_\+pipe\+\_\+write}}
\index{ecore\+\_\+pipe\+\_\+write@{ecore\+\_\+pipe\+\_\+write}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+write}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} ecore\+\_\+pipe\+\_\+write (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p, }
\item[{const void $\ast$}]{buffer, }
\item[{unsigned int}]{nbytes}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga5336bc71e829c391926c26750ae0f407}


Write on the file descriptor the data passed as parameter. 


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object. \\
\hline
{\em buffer} & The data to write into the pipe. \\
\hline
{\em nbytes} & The size of the {\ttfamily buffer} in bytes \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+U\+E} on a successful write, {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} on error. 
\end{DoxyReturn}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_pipe_gstreamer_example_8c-example}{ecore\+\_\+pipe\+\_\+gstreamer\+\_\+example.\+c}, and \hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}.\end{Desc}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E, E\+I\+N\+A\+\_\+\+T\+R\+U\+E, and E\+R\+R.



Referenced by ecore\+\_\+fork\+\_\+reset().

\hypertarget{group__Ecore__Pipe__Group_ga60099202e0880dd3de617ca14fa0c58b}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+write\+\_\+close@{ecore\+\_\+pipe\+\_\+write\+\_\+close}}
\index{ecore\+\_\+pipe\+\_\+write\+\_\+close@{ecore\+\_\+pipe\+\_\+write\+\_\+close}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+write\+\_\+close}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+pipe\+\_\+write\+\_\+close (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga60099202e0880dd3de617ca14fa0c58b}


Close the write end of an Ecore\+\_\+\+Pipe object created with \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()}. 


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object. \\
\hline
\end{DoxyParams}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}.\end{Desc}
\hypertarget{group__Ecore__Pipe__Group_gab9df469d955d67dbcd95fd6f2dabdc79}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+read\+\_\+close@{ecore\+\_\+pipe\+\_\+read\+\_\+close}}
\index{ecore\+\_\+pipe\+\_\+read\+\_\+close@{ecore\+\_\+pipe\+\_\+read\+\_\+close}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+read\+\_\+close}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+pipe\+\_\+read\+\_\+close (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_gab9df469d955d67dbcd95fd6f2dabdc79}


Close the read end of an Ecore\+\_\+\+Pipe object created with \hyperlink{group__Ecore__Pipe__Group_ga3d584a8f962644f748dfd84d39d3421a}{ecore\+\_\+pipe\+\_\+add()}. 


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object. \\
\hline
\end{DoxyParams}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}.\end{Desc}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N.

\hypertarget{group__Ecore__Pipe__Group_ga7d74cabc7a3ee9aa0795ed4e5211ce81}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+read\+\_\+fd@{ecore\+\_\+pipe\+\_\+read\+\_\+fd}}
\index{ecore\+\_\+pipe\+\_\+read\+\_\+fd@{ecore\+\_\+pipe\+\_\+read\+\_\+fd}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+read\+\_\+fd}]{\setlength{\rightskip}{0pt plus 5cm}int ecore\+\_\+pipe\+\_\+read\+\_\+fd (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga7d74cabc7a3ee9aa0795ed4e5211ce81}


Get the pipe read file descriptor. 


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object query. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The file descriptor or -\/1 if none 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N\+\_\+\+V\+A\+L.

\hypertarget{group__Ecore__Pipe__Group_ga41e986373544cfb7e4bd19786d27a157}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+write\+\_\+fd@{ecore\+\_\+pipe\+\_\+write\+\_\+fd}}
\index{ecore\+\_\+pipe\+\_\+write\+\_\+fd@{ecore\+\_\+pipe\+\_\+write\+\_\+fd}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+write\+\_\+fd}]{\setlength{\rightskip}{0pt plus 5cm}int ecore\+\_\+pipe\+\_\+write\+\_\+fd (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga41e986373544cfb7e4bd19786d27a157}


Get the pipe write file descriptor. 


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object query. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The file descriptor or -\/1 if none 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N\+\_\+\+V\+A\+L.

\hypertarget{group__Ecore__Pipe__Group_gacf6095f3a1b07d9aec2bd76909b76239}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+thaw@{ecore\+\_\+pipe\+\_\+thaw}}
\index{ecore\+\_\+pipe\+\_\+thaw@{ecore\+\_\+pipe\+\_\+thaw}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+thaw}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+pipe\+\_\+thaw (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_gacf6095f3a1b07d9aec2bd76909b76239}


Start monitoring again the pipe for reading. 

See \hyperlink{group__Ecore__Pipe__Group_ga4c80814c9589a4e64c057a52f15361c3}{ecore\+\_\+pipe\+\_\+freeze()} for stopping the monitoring activity. This will not work if \hyperlink{group__Ecore__Pipe__Group_gab9df469d955d67dbcd95fd6f2dabdc79}{ecore\+\_\+pipe\+\_\+read\+\_\+close()} was previously called on the same pipe.


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object. \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References E\+C\+O\+R\+E\+\_\+\+F\+D\+\_\+\+R\+E\+A\+D, ecore\+\_\+main\+\_\+fd\+\_\+handler\+\_\+add(), and E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N.

\hypertarget{group__Ecore__Pipe__Group_ga4c80814c9589a4e64c057a52f15361c3}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+freeze@{ecore\+\_\+pipe\+\_\+freeze}}
\index{ecore\+\_\+pipe\+\_\+freeze@{ecore\+\_\+pipe\+\_\+freeze}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+freeze}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+pipe\+\_\+freeze (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga4c80814c9589a4e64c057a52f15361c3}


Stop monitoring if necessary the pipe for reading. 

See \hyperlink{group__Ecore__Pipe__Group_gacf6095f3a1b07d9aec2bd76909b76239}{ecore\+\_\+pipe\+\_\+thaw()} for monitoring it again.


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object. \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N.

\hypertarget{group__Ecore__Pipe__Group_ga0d65cf04c81863ef39cf63788605b86a}{}\index{Pipe wrapper@{Pipe wrapper}!ecore\+\_\+pipe\+\_\+wait@{ecore\+\_\+pipe\+\_\+wait}}
\index{ecore\+\_\+pipe\+\_\+wait@{ecore\+\_\+pipe\+\_\+wait}!Pipe wrapper@{Pipe wrapper}}
\subsubsection[{ecore\+\_\+pipe\+\_\+wait}]{\setlength{\rightskip}{0pt plus 5cm}int ecore\+\_\+pipe\+\_\+wait (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Pipe} $\ast$}]{p, }
\item[{int}]{message\+\_\+count, }
\item[{double}]{wait}
\end{DoxyParamCaption}
)}\label{group__Ecore__Pipe__Group_ga0d65cf04c81863ef39cf63788605b86a}


Wait from another thread on the read side of a pipe. 


\begin{DoxyParams}{Parameters}
{\em p} & The pipe to watch on. \\
\hline
{\em message\+\_\+count} & The minimal number of message to wait before exiting. \\
\hline
{\em wait} & The amount of time in second to wait before exiting. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the number of message catched during that wait call. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1
\end{DoxySince}
Negative value for {\ttfamily wait} means infite wait. 

Referenced by ecore\+\_\+main\+\_\+loop\+\_\+thread\+\_\+safe\+\_\+call\+\_\+wait().

