#ifndef __RFB_BUFFER_H__ #define __RFB_BUFFER_H__ #include typedef struct _RfbBuffer RfbBuffer; typedef struct _RfbBufferQueue RfbBufferQueue; struct _RfbBuffer { unsigned char *data; int length; int ref_count; RfbBuffer *parent; void (*free) (RfbBuffer *, void *); void *priv; }; struct _RfbBufferQueue { GList *buffers; int depth; int offset; }; RfbBuffer *rfb_buffer_new (void); RfbBuffer *rfb_buffer_new_and_alloc (int size); RfbBuffer *rfb_buffer_new_with_data (void *data, int size); RfbBuffer *rfb_buffer_new_subbuffer (RfbBuffer * buffer, int offset, int length); void rfb_buffer_ref (RfbBuffer * buffer); void rfb_buffer_unref (RfbBuffer * buffer); RfbBufferQueue *rfb_buffer_queue_new (void); void rfb_buffer_queue_free (RfbBufferQueue * queue); int rfb_buffer_queue_get_depth (RfbBufferQueue * queue); int rfb_buffer_queue_get_offset (RfbBufferQueue * queue); void rfb_buffer_queue_push (RfbBufferQueue * queue, RfbBuffer * buffer); RfbBuffer *rfb_buffer_queue_pull (RfbBufferQueue * queue, int len); RfbBuffer *rfb_buffer_queue_peek (RfbBufferQueue * queue, int len); #endif