diff options
-rw-r--r-- | iemnet_data.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/iemnet_data.h b/iemnet_data.h index 6124a85..0039e43 100644 --- a/iemnet_data.h +++ b/iemnet_data.h @@ -28,6 +28,8 @@ /* */ /* ---------------------------------------------------------------------------- */ +#ifndef INCLUDE__IEMNET_DATA_H_ +#define INCLUDE__IEMNET_DATA_H_ /** * a resizable list of float-only atoms @@ -55,6 +57,66 @@ void iemnet__floatlist_destroy(t_iemnet_floatlist*cl); /** + * chunk of data as sent to a socket or received from it + * for received data, this might additionally hold the originator (if available) + */ +typedef struct _iemnet_chunk { + unsigned char* data; + size_t size; + + long addr; + unsigned short port; +} t_iemnet_chunk; + +/** + * free a "chunk" (de-allocate memory,...) + */ +void iemnet__chunk_destroy(t_iemnet_chunk*); + +/** + * initialize a "chunk" (allocate memory,...) of fixed size + * receiver address will be set to 0 + * + * \param size of the chunk (data will be zeroed out) + * \return a new chunk of given size + */ +t_iemnet_chunk*iemnet__chunk_create_empty(int); +/** + * initialize a "chunk" (allocate memory,...) with given data + * receiver address will be set to 0 + * + * \param size of data + * \param data of size + * \return a new chunk that holds a copy of data + */ +t_iemnet_chunk*iemnet__chunk_create_data(int size, unsigned char*data); +/** + * initialize a "chunk" (allocate memory,...) with given data from specified address + * \param size of data + * \param data of size + * \param addr originating address (can be NULL) + * \return a new chunk that holds a copy of data + */ +t_iemnet_chunk*iemnet__chunk_create_dataaddr(int size, unsigned char*data, struct sockaddr_in*addr); +/** + * initialize a "chunk" (allocate memory,...) with given data + * receiver address will be set to 0 + * + * \param argc size of list + * \param argv list of atoms containing only "bytes" (t_floats [0..255]) + * \return a new chunk that holds a copy of the list data + */ +t_iemnet_chunk*iemnet__chunk_create_list(int argc, t_atom*argv); +/** + * initialize a "chunk" (allocate memory,...) from another chunk + * + * \param src the source chunk + * \return a new chunk that holds a copy of the source data + */ +t_iemnet_chunk*iemnet__chunk_create_chunk(t_iemnet_chunk*source); + + +/** * convert a data chunk to a Pd-list of A_FLOATs * the destination list will eventually be resized if it is too small to hold the chunk * @@ -136,3 +198,6 @@ void queue_destroy(t_iemnet_queue* q); * \return the newly created queue; if something went wrong NULL is returned */ t_iemnet_queue* queue_create(void); + + +#endif /* INCLUDE__IEMNET_DATA_H_ */ |