These functions wrap the pipe / write / read functions to easily integrate its use into ecore's main loop. More...

Typedefs

typedef struct _Ecore_Pipe Ecore_Pipe
 A handle for pipes.
 
typedef void(* Ecore_Pipe_Cb )(void *data, void *buffer, unsigned int nbyte)
 The callback that data written to the pipe is sent to.
 

Functions

Ecore_Pipeecore_pipe_add (Ecore_Pipe_Cb handler, const void *data)
 Create two file descriptors (sockets on Windows). More...
 
Ecore_Pipeecore_pipe_full_add (Ecore_Pipe_Cb handler, const void *data, int fd_read, int fd_write, Eina_Bool read_survive_fork, Eina_Bool write_survive_fork)
 
void * ecore_pipe_del (Ecore_Pipe *p)
 Free an Ecore_Pipe object created with ecore_pipe_add(). More...
 
Eina_Bool ecore_pipe_write (Ecore_Pipe *p, const void *buffer, unsigned int nbytes)
 Write on the file descriptor the data passed as parameter. More...
 
void ecore_pipe_write_close (Ecore_Pipe *p)
 Close the write end of an Ecore_Pipe object created with ecore_pipe_add(). More...
 
void ecore_pipe_read_close (Ecore_Pipe *p)
 Close the read end of an Ecore_Pipe object created with ecore_pipe_add(). More...
 
int ecore_pipe_read_fd (Ecore_Pipe *p)
 
int ecore_pipe_write_fd (Ecore_Pipe *p)
 
void ecore_pipe_thaw (Ecore_Pipe *p)
 Start monitoring again the pipe for reading. More...
 
void ecore_pipe_freeze (Ecore_Pipe *p)
 Stop monitoring if necessary the pipe for reading. More...
 
int ecore_pipe_wait (Ecore_Pipe *p, int message_count, double wait)
 Wait from another thread on the read side of a pipe. More...
 

Detailed Description

These functions wrap the pipe / write / read functions to easily integrate its use into ecore's main loop.

The 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 ecore_pipe_write(). When you are done, just call ecore_pipe_del().

For examples see here:

Function Documentation

EAPI Ecore_Pipe * ecore_pipe_add ( Ecore_Pipe_Cb  handler,
const void *  data 
)

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.

Parameters
handlerThe handler called when data is received.
dataData to pass to handler when it is called.
Returns
A newly created Ecore_Pipe object if successful. NULL otherwise.
Examples:
ecore_pipe_gstreamer_example.c, and ecore_pipe_simple_example.c.

Referenced by ecore_fork_reset().

EAPI void * ecore_pipe_del ( Ecore_Pipe p)

Free an Ecore_Pipe object created with ecore_pipe_add().

Parameters
pThe Ecore_Pipe object to be freed.
Returns
The pointer to the private data
Examples:
ecore_pipe_gstreamer_example.c, and ecore_pipe_simple_example.c.

References EINA_MAIN_LOOP_CHECK_RETURN_VAL.

Referenced by ecore_fork_reset().

EAPI Eina_Bool ecore_pipe_write ( Ecore_Pipe p,
const void *  buffer,
unsigned int  nbytes 
)

Write on the file descriptor the data passed as parameter.

Parameters
pThe Ecore_Pipe object.
bufferThe data to write into the pipe.
nbytesThe size of the buffer in bytes
Returns
EINA_TRUE on a successful write, EINA_FALSE on error.
Examples:
ecore_pipe_gstreamer_example.c, and ecore_pipe_simple_example.c.

References EINA_FALSE, and EINA_TRUE.

Referenced by ecore_fork_reset().

EAPI void ecore_pipe_write_close ( Ecore_Pipe p)

Close the write end of an Ecore_Pipe object created with ecore_pipe_add().

Parameters
pThe Ecore_Pipe object.
Examples:
ecore_pipe_simple_example.c.
EAPI void ecore_pipe_read_close ( Ecore_Pipe p)

Close the read end of an Ecore_Pipe object created with ecore_pipe_add().

Parameters
pThe Ecore_Pipe object.
Examples:
ecore_pipe_simple_example.c.

References EINA_MAIN_LOOP_CHECK_RETURN.

EAPI void ecore_pipe_thaw ( Ecore_Pipe p)

Start monitoring again the pipe for reading.

See ecore_pipe_freeze() for stopping the monitoring activity. This will not work if ecore_pipe_read_close() was previously called on the same pipe.

Parameters
pThe Ecore_Pipe object.
Since
1.1

References ECORE_FD_READ, ecore_main_fd_handler_add(), and EINA_MAIN_LOOP_CHECK_RETURN.

EAPI void ecore_pipe_freeze ( Ecore_Pipe p)

Stop monitoring if necessary the pipe for reading.

See ecore_pipe_thaw() for monitoring it again.

Parameters
pThe Ecore_Pipe object.
Since
1.1

References EINA_MAIN_LOOP_CHECK_RETURN.

EAPI int ecore_pipe_wait ( Ecore_Pipe p,
int  message_count,
double  wait 
)

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

Parameters
pThe pipe to watch on.
message_countThe minimal number of message to wait before exiting.
waitThe amount of time in second to wait before exiting.
Returns
the number of message catched during that wait call.
Since
1.1

Negative value for wait means infite wait.