Mercurial > audlegacy-plugins
diff src/neon/neon.h @ 1719:29c35cb8873e
- Add neon HTTP transport plugin sources (for real)
author | Ralf Ertzinger <ralf@skytale.net> |
---|---|
date | Mon, 17 Sep 2007 21:46:53 +0200 |
parents | |
children | 50d151b259bb |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/neon/neon.h Mon Sep 17 21:46:53 2007 +0200 @@ -0,0 +1,63 @@ +#ifndef _NEON_PLUGIN_H +#define _NEON_PLUGIN_H + +#include <glib.h> +#include <audacious/vfs.h> +#include <ne_session.h> +#include <ne_request.h> +#include <ne_uri.h> +#include "rb.h" + + +static void init(void); +static void fini(void); + +VFSFile *neon_vfs_fopen_impl(const gchar* path, const gchar* mode); +gint neon_vfs_fclose_impl(VFSFile* file); +size_t neon_vfs_fread_impl(gpointer ptr_, size_t size, size_t nmemb, VFSFile* file); +size_t neon_vfs_fwrite_impl(gconstpointer ptr, size_t size, size_t nmemb, VFSFile* file); +gint neon_vfs_getc_impl(VFSFile* file); +gint neon_vfs_ungetc_impl(gint c, VFSFile* file); +void neon_vfs_rewind_impl(VFSFile* file); +glong neon_vfs_ftell_impl(VFSFile* file); +gboolean neon_vfs_feof_impl(VFSFile* file); +gint neon_vfs_truncate_impl(VFSFile* file, glong size); +gint neon_vfs_fseek_impl(VFSFile* file, glong offset, gint whence); +gchar *neon_vfs_metadata_impl(VFSFile* file, const gchar * field); +off_t neon_vfs_fsize_impl(VFSFile* file); + +ne_uri purl; + +typedef enum { + NEON_READER_INIT=0, + NEON_READER_RUN=1, + NEON_READER_ERROR, + NEON_READER_EOF, + NEON_READER_TERM +} neon_reader_t; + +struct reader_status { + GMutex* mutex; + GCond* cond; + gboolean reading; + neon_reader_t status; +}; + +struct neon_handle { + gchar* url; /* The URL, as passed to us */ + ne_uri* purl; /* The URL, parsed into a structure */ + struct ringbuf rb; /* Ringbuffer for our data */ + unsigned char redircount; /* Redirect count for the opened URL */ + long pos; /* Current position in the stream (number of last byte delivered to the player) */ + unsigned long content_start; /* Start position in the stream */ + long content_length; /* Total content length, counting from content_start, if known. -1 if unknown */ + gboolean can_ranges; /* TRUE if the webserver advertised accept-range: bytes */ + ne_session* session; + ne_request* request; + GThread* reader; + struct reader_status reader_status; + gboolean eof; +}; + + +#endif