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
25typedef struct xmms_ringbuf_St xmms_ringbuf_t;
26
30guint xmms_ringbuf_bytes_free (const xmms_ringbuf_t *ringbuf);
31guint xmms_ringbuf_bytes_used (const xmms_ringbuf_t *ringbuf);
32guint xmms_ringbuf_size (xmms_ringbuf_t *ringbuf);
33
34guint xmms_ringbuf_read (xmms_ringbuf_t *ringbuf, gpointer data, guint length);
35guint xmms_ringbuf_read_wait (xmms_ringbuf_t *ringbuf, gpointer data, guint length, GMutex *mtx);
36guint xmms_ringbuf_peek (xmms_ringbuf_t *ringbuf, gpointer data, guint length);
37guint xmms_ringbuf_peek_wait (xmms_ringbuf_t *ringbuf, gpointer data, guint length, GMutex *mtx);
38void xmms_ringbuf_hotspot_set (xmms_ringbuf_t *ringbuf, gboolean (*cb) (void *), void (*destroy) (void *), void *arg);
39guint xmms_ringbuf_write (xmms_ringbuf_t *ringbuf, gconstpointer data, guint length);
40guint xmms_ringbuf_write_wait (xmms_ringbuf_t *ringbuf, gconstpointer data, guint length, GMutex *mtx);
41
42void xmms_ringbuf_wait_free (const xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx);
43void xmms_ringbuf_wait_used (const xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx);
44
45gboolean xmms_ringbuf_iseos (const xmms_ringbuf_t *ringbuf);
46void xmms_ringbuf_set_eos (xmms_ringbuf_t *ringbuf, gboolean eos);
47void xmms_ringbuf_wait_eos (const xmms_ringbuf_t *ringbuf, GMutex *mtx);
48
49#endif /* __XMMS_RINGBUF_H__ */
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
guint xmms_ringbuf_read(xmms_ringbuf_t *ringbuf, gpointer data, guint length)
Reads data from the ringbuffer.
Definition ringbuf.c:222
void xmms_ringbuf_set_eos(xmms_ringbuf_t *ringbuf, gboolean eos)
Set EOS flag on ringbuffer.
Definition ringbuf.c:427
void xmms_ringbuf_clear(xmms_ringbuf_t *ringbuf)
Clear the ringbuffers data.
Definition ringbuf.c:121
void xmms_ringbuf_wait_eos(const xmms_ringbuf_t *ringbuf, GMutex *mtx)
Block until we are EOSed.
Definition ringbuf.c:445
guint xmms_ringbuf_bytes_free(const xmms_ringbuf_t *ringbuf)
Number of bytes free in the ringbuffer.
Definition ringbuf.c:142
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
gboolean xmms_ringbuf_iseos(const xmms_ringbuf_t *ringbuf)
Tell if the ringbuffer is EOS.
Definition ringbuf.c:416
void xmms_ringbuf_destroy(xmms_ringbuf_t *ringbuf)
Free all memory used by the ringbuffer.
Definition ringbuf.c:104
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(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_used(const xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx)
Block until we have used space in the buffer.
Definition ringbuf.c:397
xmms_ringbuf_t * xmms_ringbuf_new(guint size)
Allocate a new ringbuffer.
Definition ringbuf.c:74
guint xmms_ringbuf_bytes_used(const xmms_ringbuf_t *ringbuf)
Number of bytes used in the buffer.
Definition ringbuf.c:154
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_write(xmms_ringbuf_t *ringbuf, gconstpointer data, guint length)
Write data to the ringbuffer.
Definition ringbuf.c:321
void xmms_ringbuf_hotspot_set(xmms_ringbuf_t *ringbuf, gboolean(*cb)(void *), void(*destroy)(void *), void *arg)
Definition ringbuf.c:462
struct xmms_ringbuf_St xmms_ringbuf_t