Electroneum
tube.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tube
 
struct  tube_res_list
 

Typedefs

typedef void tube_callback_type(struct tube *, uint8_t *, size_t, int, void *)
 

Functions

struct tubetube_create (void)
 
void tube_delete (struct tube *tube)
 
int tube_write_msg (struct tube *tube, uint8_t *buf, uint32_t len, int nonblock)
 
int tube_read_msg (struct tube *tube, uint8_t **buf, uint32_t *len, int nonblock)
 
void tube_close_read (struct tube *tube)
 
void tube_close_write (struct tube *tube)
 
int tube_poll (struct tube *tube)
 
int tube_wait (struct tube *tube)
 
int tube_read_fd (struct tube *tube)
 
int tube_setup_bg_listen (struct tube *tube, struct comm_base *base, tube_callback_type *cb, void *arg)
 
void tube_remove_bg_listen (struct tube *tube)
 
int tube_setup_bg_write (struct tube *tube, struct comm_base *base)
 
void tube_remove_bg_write (struct tube *tube)
 
int tube_queue_item (struct tube *tube, uint8_t *msg, size_t len)
 
int tube_handle_listen (struct comm_point *c, void *arg, int error, struct comm_reply *reply_info)
 
int tube_handle_write (struct comm_point *c, void *arg, int error, struct comm_reply *reply_info)
 
void tube_handle_signal (int fd, short events, void *arg)
 

Detailed Description

This file contains pipe service functions.

Definition in file tube.h.

Typedef Documentation

◆ tube_callback_type

typedef void tube_callback_type(struct tube *, uint8_t *, size_t, int, void *)

Callback from pipe listen function void mycallback(tube, msg, len, error, user_argument); if error is true (NETEVENT_*), msg is probably NULL.

Definition at line 58 of file tube.h.

Function Documentation

◆ tube_close_read()

void tube_close_read ( struct tube tube)

Close read part of the pipe. The tube can no longer be read from.

Parameters
tubetube to operate on.

◆ tube_close_write()

void tube_close_write ( struct tube tube)

Close write part of the pipe. The tube can no longer be written to.

Parameters
tubetube to operate on.

◆ tube_create()

struct tube* tube_create ( void  )

Create a pipe

Returns
: new tube struct or NULL on error.

◆ tube_delete()

void tube_delete ( struct tube tube)

Delete and destroy a pipe

Parameters
tubeto delete

◆ tube_handle_listen()

int tube_handle_listen ( struct comm_point c,
void *  arg,
int  error,
struct comm_reply reply_info 
)

for fptr wlist, callback function

◆ tube_handle_signal()

void tube_handle_signal ( int  fd,
short  events,
void *  arg 
)

for fptr wlist, winsock signal event callback function

◆ tube_handle_write()

int tube_handle_write ( struct comm_point c,
void *  arg,
int  error,
struct comm_reply reply_info 
)

for fptr wlist, callback function

◆ tube_poll()

int tube_poll ( struct tube tube)

See if data is ready for reading on the tube without blocking.

Parameters
tubetube to check for readable items
Returns
true if readable items are present. False if not (or error). true on pipe_closed.

◆ tube_queue_item()

int tube_queue_item ( struct tube tube,
uint8_t msg,
size_t  len 
)

Append data item to background list of writes. Mallocs a list entry behind the scenes. Not locked behind the scenes, call from one thread or lock on outside.

Parameters
tubewhat tube to queue on.
msgmemory message to send. Is free()d after use. Put at the end of the to-send queue.
lenlength of item.
Returns
0 on failure (msg freed).

◆ tube_read_fd()

int tube_read_fd ( struct tube tube)

Get FD that is readable when new information arrives.

Parameters
tube
Returns
file descriptor.

◆ tube_read_msg()

int tube_read_msg ( struct tube tube,
uint8_t **  buf,
uint32_t len,
int  nonblock 
)

Read length bytes followed by message.

Parameters
tubeThe tube to read on. If that tube is a pipe, its read fd is used as the socket to read on. Is nonblocking. Set to blocking by the function, and back to non-blocking at exit of function.
bufthe message, malloced.
lenlength of message, returned.
nonblockif set to true, the first read is nonblocking. If the first read fails the function returns -1. If set false, the first read is blocking.
Returns
: all remainder reads are nonblocking. return 0 on error, in that case blocking/nonblocking of socket is unknown. On EOF 0 is returned. return 1 if all OK.

◆ tube_remove_bg_listen()

void tube_remove_bg_listen ( struct tube tube)

Remove bg listen setup from event base.

Parameters
tubewhat tube to cleanup

◆ tube_remove_bg_write()

void tube_remove_bg_write ( struct tube tube)

Remove bg write setup from event base.

Parameters
tubewhat tube to cleanup

◆ tube_setup_bg_listen()

int tube_setup_bg_listen ( struct tube tube,
struct comm_base base,
tube_callback_type cb,
void *  arg 
)

Start listening for information over the pipe. Background registration of a read listener, callback when read completed. Do not mix with tube_read_msg style direct reads from the pipe.

Parameters
tubetube to listen on
basewhat base to register event callback.
cbcallback routine.
arguser argument for callback routine.
Returns
true if successful, false on error.

◆ tube_setup_bg_write()

int tube_setup_bg_write ( struct tube tube,
struct comm_base base 
)

Start background write handler for the pipe. Do not mix with tube_write_msg style direct writes to the pipe.

Parameters
tubetube to write on
basewhat base to register event handler on.
Returns
true if successful, false on error.

◆ tube_wait()

int tube_wait ( struct tube tube)

Wait for data to be ready for reading on the tube. is blocking. No timeout.

Parameters
tubethe tube to wait on.
Returns
: if there was something to read (false on error). true on pipe_closed.

◆ tube_write_msg()

int tube_write_msg ( struct tube tube,
uint8_t buf,
uint32_t  len,
int  nonblock 
)

Write length bytes followed by message.

Parameters
tubethe tube to write on. If that tube is a pipe, its write fd is used as the socket to write on. Is nonblocking. Set to blocking by the function, and back to non-blocking at exit of function.
bufthe message.
lenlength of message.
nonblockif set to true, the first write is nonblocking. If the first write fails the function returns -1. If set false, the first write is blocking.
Returns
: all remainder writes are nonblocking. return 0 on error, in that case blocking/nonblocking of socket is unknown. return 1 if all OK.