00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MPD_INPUT_PLUGIN_H
00021 #define MPD_INPUT_PLUGIN_H
00022
00023 #include "input_stream.h"
00024
00025 #include <stddef.h>
00026 #include <stdbool.h>
00027 #include <sys/types.h>
00028
00029 struct config_param;
00030 struct input_stream;
00031
00032 struct input_plugin {
00033 const char *name;
00034
00043 bool (*init)(const struct config_param *param, GError **error_r);
00044
00049 void (*finish)(void);
00050
00051 struct input_stream *(*open)(const char *uri,
00052 GMutex *mutex, GCond *cond,
00053 GError **error_r);
00054 void (*close)(struct input_stream *is);
00055
00062 bool (*check)(struct input_stream *is, GError **error_r);
00063
00068 void (*update)(struct input_stream *is);
00069
00070 struct tag *(*tag)(struct input_stream *is);
00071
00080 bool (*available)(struct input_stream *is);
00081
00082 size_t (*read)(struct input_stream *is, void *ptr, size_t size,
00083 GError **error_r);
00084 bool (*eof)(struct input_stream *is);
00085 bool (*seek)(struct input_stream *is, goffset offset, int whence,
00086 GError **error_r);
00087 };
00088
00089 #endif