\hypertarget{group__Ecore__Pipe__Group}{}\doxysection{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.  


\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}\label{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}} 
typedef struct \+\_\+\+Ecore\+\_\+\+Pipe {\bfseries Ecore\+\_\+\+Pipe}
\begin{DoxyCompactList}\small\item\em A handle for pipes. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}\label{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}} 
typedef void($\ast$ {\bfseries Ecore\+\_\+\+Pipe\+\_\+\+Cb}) (void $\ast$data, void $\ast$buffer, unsigned int nbyte)
\begin{DoxyCompactList}\small\item\em The callback that data written to the pipe is sent to. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$ \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{ecore\+\_\+pipe\+\_\+add}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}{Ecore\+\_\+\+Pipe\+\_\+\+Cb}} handler, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Creates two file descriptors (sockets on Windows). \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$ \mbox{\hyperlink{group__Ecore__Pipe__Group_gaaa0c221d03d11b90e48ba0b3cd70e7c8}{ecore\+\_\+pipe\+\_\+full\+\_\+add}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}{Ecore\+\_\+\+Pipe\+\_\+\+Cb}} handler, const void $\ast$data, int fd\+\_\+read, int fd\+\_\+write, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} read\+\_\+survive\+\_\+fork, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} write\+\_\+survive\+\_\+fork)
\begin{DoxyCompactList}\small\item\em Creates a pipe with more parameters. \end{DoxyCompactList}\item 
void $\ast$ \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa7ed35ca29f47097e30ccd83776d5866}{ecore\+\_\+pipe\+\_\+del}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p)
\begin{DoxyCompactList}\small\item\em Frees an Ecore\+\_\+\+Pipe object created with \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{ecore\+\_\+pipe\+\_\+add()}}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Pipe__Group_ga5336bc71e829c391926c26750ae0f407}{ecore\+\_\+pipe\+\_\+write}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p, const void $\ast$buffer, unsigned int nbytes)
\begin{DoxyCompactList}\small\item\em Writes on the file descriptor the data passed as parameter. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Ecore__Pipe__Group_ga60099202e0880dd3de617ca14fa0c58b}{ecore\+\_\+pipe\+\_\+write\+\_\+close}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p)
\begin{DoxyCompactList}\small\item\em Closes the write end of an Ecore\+\_\+\+Pipe object created with \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{ecore\+\_\+pipe\+\_\+add()}}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Ecore__Pipe__Group_gab9df469d955d67dbcd95fd6f2dabdc79}{ecore\+\_\+pipe\+\_\+read\+\_\+close}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p)
\begin{DoxyCompactList}\small\item\em Closes the read end of an Ecore\+\_\+\+Pipe object created with \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{ecore\+\_\+pipe\+\_\+add()}}. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__Ecore__Pipe__Group_ga7d74cabc7a3ee9aa0795ed4e5211ce81}{ecore\+\_\+pipe\+\_\+read\+\_\+fd}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p)
\begin{DoxyCompactList}\small\item\em Gets the pipe read file descriptor. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__Ecore__Pipe__Group_ga41e986373544cfb7e4bd19786d27a157}{ecore\+\_\+pipe\+\_\+write\+\_\+fd}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p)
\begin{DoxyCompactList}\small\item\em Gets the pipe write file descriptor. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Ecore__Pipe__Group_gacf6095f3a1b07d9aec2bd76909b76239}{ecore\+\_\+pipe\+\_\+thaw}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p)
\begin{DoxyCompactList}\small\item\em Starts monitoring again the pipe for reading. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Ecore__Pipe__Group_ga4c80814c9589a4e64c057a52f15361c3}{ecore\+\_\+pipe\+\_\+freeze}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p)
\begin{DoxyCompactList}\small\item\em Stops monitoring if necessary the pipe for reading. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__Ecore__Pipe__Group_ga0d65cf04c81863ef39cf63788605b86a}{ecore\+\_\+pipe\+\_\+wait}} (\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$p, int message\+\_\+count, double wait)
\begin{DoxyCompactList}\small\item\em Waits from another thread on the read side of a pipe. \end{DoxyCompactList}\end{DoxyCompactItemize}


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

The \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{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 \mbox{\hyperlink{group__Ecore__Pipe__Group_ga5336bc71e829c391926c26750ae0f407}{ecore\+\_\+pipe\+\_\+write()}}. When you are done, just call \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa7ed35ca29f47097e30ccd83776d5866}{ecore\+\_\+pipe\+\_\+del()}}.

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


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}\label{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}} 
\index{Pipe wrapper@{Pipe wrapper}!ecore\_pipe\_add@{ecore\_pipe\_add}}
\index{ecore\_pipe\_add@{ecore\_pipe\_add}!Pipe wrapper@{Pipe wrapper}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_add()}{ecore\_pipe\_add()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$ ecore\+\_\+pipe\+\_\+add (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}{Ecore\+\_\+\+Pipe\+\_\+\+Cb}}}]{handler,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Creates two file descriptors (sockets on Windows). 

Adds 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 NULL} otherwise. 
\end{DoxyReturn}
\begin{Desc}
\item[Examples]\par
\mbox{\hyperlink{ecore_pipe_gstreamer_example_8c-example}{ecore\+\_\+pipe\+\_\+gstreamer\+\_\+example.\+c}}, and \mbox{\hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}}.\end{Desc}


Referenced by \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaadff0a56ba8818d8a35f9dc95e25a808}{ecore\+\_\+fork\+\_\+reset()}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_gaaa0c221d03d11b90e48ba0b3cd70e7c8}\label{group__Ecore__Pipe__Group_gaaa0c221d03d11b90e48ba0b3cd70e7c8}} 
\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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_full\_add()}{ecore\_pipe\_full\_add()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$ ecore\+\_\+pipe\+\_\+full\+\_\+add (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga96cd889ad0fb3f9b41960e8a12cb565a}{Ecore\+\_\+\+Pipe\+\_\+\+Cb}}}]{handler,  }\item[{const void $\ast$}]{data,  }\item[{int}]{fd\+\_\+read,  }\item[{int}]{fd\+\_\+write,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{read\+\_\+survive\+\_\+fork,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{write\+\_\+survive\+\_\+fork }\end{DoxyParamCaption})}



Creates a pipe with more parameters. 


\begin{DoxyParams}{Parameters}
{\em handler} & Same as \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{ecore\+\_\+pipe\+\_\+add()}} \\
\hline
{\em data} & Same as \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{ecore\+\_\+pipe\+\_\+add()}} \\
\hline
{\em fd\+\_\+read} & An fd to use for reading or {\ttfamily -\/1} otherwise \\
\hline
{\em fd\+\_\+write} & An fd to use for writing or {\ttfamily -\/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 \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{ecore\+\_\+pipe\+\_\+add()}} but with some added parameters.

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


References \mbox{\hyperlink{group__Ecore__FD__Handler__Group_ggab5644f471dfa3bd182619601d9b60608a1699f804eccf88e7e169a4a20f1d44e7}{ECORE\+\_\+\+FD\+\_\+\+READ}}, \mbox{\hyperlink{group__Ecore__FD__Handler__Group_gaf8483e27f0c9fd4a2a7c97fa5539a55f}{ecore\+\_\+main\+\_\+fd\+\_\+handler\+\_\+add()}}, \mbox{\hyperlink{group__Eina__File__Group_ga858aff49902b2278be3e59aff989ed46}{eina\+\_\+file\+\_\+close\+\_\+on\+\_\+exec()}}, \mbox{\hyperlink{group__Eina__Lock__Group_ga2974eb3f18404edcc375910cc7e4859c}{EINA\+\_\+\+MAIN\+\_\+\+LOOP\+\_\+\+CHECK\+\_\+\+RETURN\+\_\+\+VAL}}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}, and \mbox{\hyperlink{group__Evil_ga454bde45f2e42a909a704d160869aad5}{fcntl()}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_gaa7ed35ca29f47097e30ccd83776d5866}\label{group__Ecore__Pipe__Group_gaa7ed35ca29f47097e30ccd83776d5866}} 
\index{Pipe wrapper@{Pipe wrapper}!ecore\_pipe\_del@{ecore\_pipe\_del}}
\index{ecore\_pipe\_del@{ecore\_pipe\_del}!Pipe wrapper@{Pipe wrapper}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_del()}{ecore\_pipe\_del()}}
{\footnotesize\ttfamily void $\ast$ ecore\+\_\+pipe\+\_\+del (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p }\end{DoxyParamCaption})}



Frees an Ecore\+\_\+\+Pipe object created with \mbox{\hyperlink{group__Ecore__Pipe__Group_gaa1fb078d1865197887f558e19532e02d}{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
\mbox{\hyperlink{ecore_pipe_gstreamer_example_8c-example}{ecore\+\_\+pipe\+\_\+gstreamer\+\_\+example.\+c}}, and \mbox{\hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}}.\end{Desc}


References \mbox{\hyperlink{group__Eina__Lock__Group_ga2974eb3f18404edcc375910cc7e4859c}{EINA\+\_\+\+MAIN\+\_\+\+LOOP\+\_\+\+CHECK\+\_\+\+RETURN\+\_\+\+VAL}}.



Referenced by \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaadff0a56ba8818d8a35f9dc95e25a808}{ecore\+\_\+fork\+\_\+reset()}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_ga5336bc71e829c391926c26750ae0f407}\label{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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_write()}{ecore\_pipe\_write()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+pipe\+\_\+write (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p,  }\item[{const void $\ast$}]{buffer,  }\item[{unsigned int}]{nbytes }\end{DoxyParamCaption})}



Writes 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 EINA\+\_\+\+TRUE} on a successful write, {\ttfamily EINA\+\_\+\+FALSE} on error. 
\end{DoxyReturn}
\begin{Desc}
\item[Examples]\par
\mbox{\hyperlink{ecore_pipe_gstreamer_example_8c-example}{ecore\+\_\+pipe\+\_\+gstreamer\+\_\+example.\+c}}, and \mbox{\hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}}.\end{Desc}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.



Referenced by \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaadff0a56ba8818d8a35f9dc95e25a808}{ecore\+\_\+fork\+\_\+reset()}}, and \mbox{\hyperlink{group__Evas__Main__Group_gafcca136f98f771bd1f159361f710786e}{evas\+\_\+async\+\_\+events\+\_\+put()}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_ga60099202e0880dd3de617ca14fa0c58b}\label{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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_write\_close()}{ecore\_pipe\_write\_close()}}
{\footnotesize\ttfamily void ecore\+\_\+pipe\+\_\+write\+\_\+close (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p }\end{DoxyParamCaption})}



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


\begin{DoxyParams}{Parameters}
{\em p} & The Ecore\+\_\+\+Pipe object. \\
\hline
\end{DoxyParams}
\begin{Desc}
\item[Examples]\par
\mbox{\hyperlink{ecore_pipe_simple_example_8c-example}{ecore\+\_\+pipe\+\_\+simple\+\_\+example.\+c}}.\end{Desc}
\mbox{\Hypertarget{group__Ecore__Pipe__Group_gab9df469d955d67dbcd95fd6f2dabdc79}\label{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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_read\_close()}{ecore\_pipe\_read\_close()}}
{\footnotesize\ttfamily void ecore\+\_\+pipe\+\_\+read\+\_\+close (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p }\end{DoxyParamCaption})}



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


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


References \mbox{\hyperlink{group__Eina__Lock__Group_ga6900a2b986f5536b73210e2560675cb0}{EINA\+\_\+\+MAIN\+\_\+\+LOOP\+\_\+\+CHECK\+\_\+\+RETURN}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_ga7d74cabc7a3ee9aa0795ed4e5211ce81}\label{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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_read\_fd()}{ecore\_pipe\_read\_fd()}}
{\footnotesize\ttfamily int ecore\+\_\+pipe\+\_\+read\+\_\+fd (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p }\end{DoxyParamCaption})}



Gets 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 {\ttfamily -\/1} if none 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Lock__Group_ga2974eb3f18404edcc375910cc7e4859c}{EINA\+\_\+\+MAIN\+\_\+\+LOOP\+\_\+\+CHECK\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_ga41e986373544cfb7e4bd19786d27a157}\label{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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_write\_fd()}{ecore\_pipe\_write\_fd()}}
{\footnotesize\ttfamily int ecore\+\_\+pipe\+\_\+write\+\_\+fd (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p }\end{DoxyParamCaption})}



Gets 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 {\ttfamily -\/1} if none 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Lock__Group_ga2974eb3f18404edcc375910cc7e4859c}{EINA\+\_\+\+MAIN\+\_\+\+LOOP\+\_\+\+CHECK\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_gacf6095f3a1b07d9aec2bd76909b76239}\label{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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_thaw()}{ecore\_pipe\_thaw()}}
{\footnotesize\ttfamily void ecore\+\_\+pipe\+\_\+thaw (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p }\end{DoxyParamCaption})}



Starts monitoring again the pipe for reading. 

See \mbox{\hyperlink{group__Ecore__Pipe__Group_ga4c80814c9589a4e64c057a52f15361c3}{ecore\+\_\+pipe\+\_\+freeze()}} for stopping the monitoring activity. This will not work if \mbox{\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 \mbox{\hyperlink{group__Ecore__FD__Handler__Group_ggab5644f471dfa3bd182619601d9b60608a1699f804eccf88e7e169a4a20f1d44e7}{ECORE\+\_\+\+FD\+\_\+\+READ}}, \mbox{\hyperlink{group__Ecore__FD__Handler__Group_gaf8483e27f0c9fd4a2a7c97fa5539a55f}{ecore\+\_\+main\+\_\+fd\+\_\+handler\+\_\+add()}}, and \mbox{\hyperlink{group__Eina__Lock__Group_ga6900a2b986f5536b73210e2560675cb0}{EINA\+\_\+\+MAIN\+\_\+\+LOOP\+\_\+\+CHECK\+\_\+\+RETURN}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_ga4c80814c9589a4e64c057a52f15361c3}\label{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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_freeze()}{ecore\_pipe\_freeze()}}
{\footnotesize\ttfamily void ecore\+\_\+pipe\+\_\+freeze (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p }\end{DoxyParamCaption})}



Stops monitoring if necessary the pipe for reading. 

See \mbox{\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 \mbox{\hyperlink{group__Eina__Lock__Group_ga6900a2b986f5536b73210e2560675cb0}{EINA\+\_\+\+MAIN\+\_\+\+LOOP\+\_\+\+CHECK\+\_\+\+RETURN}}.

\mbox{\Hypertarget{group__Ecore__Pipe__Group_ga0d65cf04c81863ef39cf63788605b86a}\label{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}}
\doxysubsubsection{\texorpdfstring{ecore\_pipe\_wait()}{ecore\_pipe\_wait()}}
{\footnotesize\ttfamily int ecore\+\_\+pipe\+\_\+wait (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Ecore__Pipe__Group_ga0092a6b764881362d1a051d7af215b3f}{Ecore\+\_\+\+Pipe}} $\ast$}]{p,  }\item[{int}]{message\+\_\+count,  }\item[{double}]{wait }\end{DoxyParamCaption})}



Waits 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 minimum number of messages to wait for before exiting. \\
\hline
{\em wait} & The amount of time in seconds to wait before exiting. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The number of message caught during the wait call. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1
\end{DoxySince}
Negative value for {\ttfamily wait} means infite wait. 

Referenced by \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gace69e5961a239cbf4f586fae651e4cc9}{ecore\+\_\+main\+\_\+loop\+\_\+thread\+\_\+safe\+\_\+call\+\_\+wait()}}, and \mbox{\hyperlink{group__Evas__Main__Group_gafb0c8400b15321d38543a10a5950d050}{evas\+\_\+async\+\_\+events\+\_\+process()}}.

