## prelude-msgbuf prelude-msgbuf |

## Synopsis

    typedef             prelude_msgbuf_t;
    enum                prelude_msgbuf_flags_t;
    int                 prelude_msgbuf_new                  (prelude_msgbuf_t **msgbuf);
    void                prelude_msgbuf_destroy              (prelude_msgbuf_t *msgbuf);
    void                prelude_msgbuf_mark_end             (prelude_msgbuf_t *msgbuf);
    int                 prelude_msgbuf_set                  (prelude_msgbuf_t *msgbuf,
                                                             uint8_t tag,
                                                             uint32_t len,
                                                             const void *data);
    prelude_msg_t*      prelude_msgbuf_get_msg              (prelude_msgbuf_t *msgbuf);
    void                prelude_msgbuf_set_callback         (prelude_msgbuf_t *msgbuf,
                                                             int (*send_msg) (prelude_msgbuf_t *msgbuf, prelude_msg_t *msg));
    void                prelude_msgbuf_set_data             (prelude_msgbuf_t *msgbuf,
                                                             void *data);
    void*               prelude_msgbuf_get_data             (prelude_msgbuf_t *msgbuf);
    void                prelude_msgbuf_set_flags            (prelude_msgbuf_t *msgbuf,
                                                             prelude_msgbuf_flags_t flags);
    prelude_msgbuf_flags_t prelude_msgbuf_get_flags         (prelude_msgbuf_t *msgbuf);

## Description

## Details

### prelude_msgbuf_t

    typedef struct prelude_msgbuf prelude_msgbuf_t;

### enum prelude_msgbuf_flags_t

    typedef enum {
            PRELUDE_MSGBUF_FLAGS_ASYNC = 0x01
    } prelude_msgbuf_flags_t;

### prelude_msgbuf_new ()

    int                 prelude_msgbuf_new                  (prelude_msgbuf_t **msgbuf);

Create a new prelude_msgbuf_t object and store it into `msgbuf`. You can then write data to `msgbuf` using the `prelude_msgbuf_set()` function.

When the message buffer is full, the message will be flushed using the user provided callback.

`msgbuf` : | Pointer where to store the created prelude_msgbuf_t object.
Returns : | 0 on success, or a negative value if an error occured.

### prelude_msgbuf_destroy ()

    void                prelude_msgbuf_destroy              (prelude_msgbuf_t *msgbuf);

Destroy `msgbuf`, all data remaining will be flushed.

`msgbuf` : | Pointer on a prelude_msgbuf_t object.

### prelude_msgbuf_mark_end ()

    void                prelude_msgbuf_mark_end             (prelude_msgbuf_t *msgbuf);

This function should be called to tell the msgbuf subsystem that you finished writing your message.

`msgbuf` : | Pointer on prelude_msgbuf_t object.

### prelude_msgbuf_set ()

    int                 prelude_msgbuf_set                  (prelude_msgbuf_t *msgbuf,
                                                             uint8_t tag,
                                                             uint32_t len,
                                                             const void *data);

`prelude_msgbuf_set()` append `len` bytes of data from the `data` buffer to the `msgbuf` object representing a message. The data is tagged with `tag`.

`msgbuf` : | Pointer on a prelude_msgbuf_t object to store the data to.
`tag` : | 8 bits unsigned integer describing the kind of data.
`len` : | len of the data chunk.
`data` : | Pointer to the data.
Returns : | 0 on success, a negative value if an error occured.

### prelude_msgbuf_get_msg ()

    prelude_msg_t*      prelude_msgbuf_get_msg              (prelude_msgbuf_t *msgbuf);

`msgbuf` : | Pointer on a prelude_msgbuf_t object.
Returns : | This function return the current message associated with the message buffer.

### prelude_msgbuf_set_callback ()

    void                prelude_msgbuf_set_callback         (prelude_msgbuf_t *msgbuf,
                                                             int (*send_msg) (prelude_msgbuf_t *msgbuf, prelude_msg_t *msg));

Associate an application specific callback to this `msgbuf`.

`msgbuf` : | Pointer on a prelude_msgbuf_t object.
`send_msg` : | Pointer to a function for sending a message.

### prelude_msgbuf_set_data ()

    void                prelude_msgbuf_set_data             (prelude_msgbuf_t *msgbuf,
                                                             void *data);

`msgbuf` : |
`data` : |

### prelude_msgbuf_get_data ()

    void*               prelude_msgbuf_get_data             (prelude_msgbuf_t *msgbuf);

`msgbuf` : |
Returns : |

### prelude_msgbuf_set_flags ()

    void                prelude_msgbuf_set_flags            (prelude_msgbuf_t *msgbuf,
                                                             prelude_msgbuf_flags_t flags);

`msgbuf` : |
`flags` : |

### prelude_msgbuf_get_flags ()

    prelude_msgbuf_flags_t prelude_msgbuf_get_flags         (prelude_msgbuf_t *msgbuf);

`msgbuf` : |
Returns : |