XMMS2
xmms_ringbuf.h
Go to the documentation of this file.
1 /* XMMS2 - X Music Multiplexer System
2  * Copyright (C) 2003-2011 XMMS2 Team
3  *
4  * PLUGINS ARE NOT CONSIDERED TO BE DERIVED WORK !!!
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  */
16 
17 
18 
19 
20 #ifndef __XMMS_RINGBUF_H__
21 #define __XMMS_RINGBUF_H__
22 
23 #include <glib.h>
24 
25 typedef struct xmms_ringbuf_St xmms_ringbuf_t;
26 
27 xmms_ringbuf_t *xmms_ringbuf_new (guint size);
28 void xmms_ringbuf_destroy (xmms_ringbuf_t *ringbuf);
29 void xmms_ringbuf_clear (xmms_ringbuf_t *ringbuf);
30 guint xmms_ringbuf_bytes_free (const xmms_ringbuf_t *ringbuf);
31 guint xmms_ringbuf_bytes_used (const xmms_ringbuf_t *ringbuf);
32 guint xmms_ringbuf_size (xmms_ringbuf_t *ringbuf);
33 
34 guint xmms_ringbuf_read (xmms_ringbuf_t *ringbuf, gpointer data, guint length);
35 guint xmms_ringbuf_read_wait (xmms_ringbuf_t *ringbuf, gpointer data, guint length, GMutex *mtx);
36 guint xmms_ringbuf_peek (xmms_ringbuf_t *ringbuf, gpointer data, guint length);
37 guint xmms_ringbuf_peek_wait (xmms_ringbuf_t *ringbuf, gpointer data, guint length, GMutex *mtx);
38 void xmms_ringbuf_hotspot_set (xmms_ringbuf_t *ringbuf, gboolean (*cb) (void *), void (*destroy) (void *), void *arg);
39 guint xmms_ringbuf_write (xmms_ringbuf_t *ringbuf, gconstpointer data, guint length);
40 guint xmms_ringbuf_write_wait (xmms_ringbuf_t *ringbuf, gconstpointer data, guint length, GMutex *mtx);
41 
42 void xmms_ringbuf_wait_free (const xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx);
43 void xmms_ringbuf_wait_used (const xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx);
44 
45 gboolean xmms_ringbuf_iseos (const xmms_ringbuf_t *ringbuf);
46 void xmms_ringbuf_set_eos (xmms_ringbuf_t *ringbuf, gboolean eos);
47 void xmms_ringbuf_wait_eos (const xmms_ringbuf_t *ringbuf, GMutex *mtx);
48 
49 #endif /* __XMMS_RINGBUF_H__ */
struct xmms_ringbuf_St xmms_ringbuf_t
Definition: xmms_ringbuf.h:25
gboolean xmms_ringbuf_iseos(const xmms_ringbuf_t *ringbuf)
Tell if the ringbuffer is EOS.
Definition: ringbuf.c:416
guint xmms_ringbuf_read_wait(xmms_ringbuf_t *ringbuf, gpointer data, guint length, GMutex *mtx)
Same as xmms_ringbuf_read but blocks until you have all the data you want.
Definition: ringbuf.c:265
guint xmms_ringbuf_peek(xmms_ringbuf_t *ringbuf, gpointer data, guint length)
Same as xmms_ringbuf_read but does not advance in the buffer after the data has been read...
Definition: ringbuf.c:249
void xmms_ringbuf_wait_free(const xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx)
Block until we have free space in the ringbuffer.
Definition: ringbuf.c:380
guint xmms_ringbuf_size(xmms_ringbuf_t *ringbuf)
The usable size of the ringbuffer.
Definition: ringbuf.c:60
guint xmms_ringbuf_peek_wait(xmms_ringbuf_t *ringbuf, gpointer data, guint length, GMutex *mtx)
Same as xmms_ringbuf_peek but blocks until you have all the data you want.
Definition: ringbuf.c:295
guint xmms_ringbuf_write(xmms_ringbuf_t *ringbuf, gconstpointer data, guint length)
Write data to the ringbuffer.
Definition: ringbuf.c:321
guint xmms_ringbuf_bytes_free(const xmms_ringbuf_t *ringbuf)
Number of bytes free in the ringbuffer.
Definition: ringbuf.c:142
guint xmms_ringbuf_bytes_used(const xmms_ringbuf_t *ringbuf)
Number of bytes used in the buffer.
Definition: ringbuf.c:154
void xmms_ringbuf_wait_used(const xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx)
Block until we have used space in the buffer.
Definition: ringbuf.c:397
guint xmms_ringbuf_read(xmms_ringbuf_t *ringbuf, gpointer data, guint length)
Reads data from the ringbuffer.
Definition: ringbuf.c:222
xmms_ringbuf_t * xmms_ringbuf_new(guint size)
Allocate a new ringbuffer.
Definition: ringbuf.c:74
void xmms_ringbuf_wait_eos(const xmms_ringbuf_t *ringbuf, GMutex *mtx)
Block until we are EOSed.
Definition: ringbuf.c:445
void xmms_ringbuf_hotspot_set(xmms_ringbuf_t *ringbuf, gboolean(*cb)(void *), void(*destroy)(void *), void *arg)
Definition: ringbuf.c:462
guint xmms_ringbuf_write_wait(xmms_ringbuf_t *ringbuf, gconstpointer data, guint length, GMutex *mtx)
Same as xmms_ringbuf_write but blocks until there is enough free space.
Definition: ringbuf.c:353
void xmms_ringbuf_clear(xmms_ringbuf_t *ringbuf)
Clear the ringbuffers data.
Definition: ringbuf.c:121
void xmms_ringbuf_set_eos(xmms_ringbuf_t *ringbuf, gboolean eos)
Set EOS flag on ringbuffer.
Definition: ringbuf.c:427
void xmms_ringbuf_destroy(xmms_ringbuf_t *ringbuf)
Free all memory used by the ringbuffer.
Definition: ringbuf.c:104