src/lib/lightmediascanner_private.h

Go to the documentation of this file.
00001 
00021 #ifndef _LIGHTMEDIASCANNER_PRIVATE_H_
00022 #define _LIGHTMEDIASCANNER_PRIVATE_H_ 1
00023 
00024 #ifdef __GNUC__
00025 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
00026 #  define GNUC_NON_NULL(...) __attribute__((nonnull(__VA_ARGS__)))
00027 # else
00028 #  define GNUC_NON_NULL(...)
00029 # endif
00030 #else
00031 #  define GNUC_NON_NULL(...)
00032 #endif
00033 
00034 #include "lightmediascanner.h"
00035 #include "lightmediascanner_plugin.h"
00036 #include "lightmediascanner_charset_conv.h"
00037 #include <sys/types.h>
00038 #include <poll.h>
00039 #include <limits.h>
00040 #include <sqlite3.h>
00041 
00042 #define PATH_SIZE PATH_MAX
00043 
00044 struct fds {
00045     int r;
00046     int w;
00047 };
00048 
00049 /* info to be carried along lms_process() and lms_check() */
00050 struct pinfo {
00051     struct fds master;
00052     struct fds slave;
00053     struct pollfd poll;
00054     lms_t *lms;
00055     pid_t child;
00056 };
00057 
00058 struct parser {
00059     lms_plugin_t *plugin;
00060     void *dl_handle;
00061     char *so_path;
00062 };
00063 
00064 struct lms {
00065     struct parser *parsers;
00066     int n_parsers;
00067     lms_charset_conv_t *cs_conv;
00068     char *db_path;
00069     int slave_timeout;
00070     unsigned int commit_interval;
00071     unsigned int is_processing:1;
00072 };
00073 
00074 int lms_parser_del_int(lms_t *lms, int i) GNUC_NON_NULL(1);
00075 int lms_create_pipes(struct pinfo *pinfo) GNUC_NON_NULL(1);
00076 int lms_close_pipes(struct pinfo *pinfo) GNUC_NON_NULL(1);
00077 int lms_create_slave(struct pinfo *pinfo, int (*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1, 2);
00078 int lms_restart_slave(struct pinfo *pinfo, int (*work)(lms_t *lms, struct fds *fds)) GNUC_NON_NULL(1, 2);
00079 int lms_finish_slave(struct pinfo *pinfo, int (*finish)(const struct fds *fds)) GNUC_NON_NULL(1, 2);
00080 
00081 int lms_parsers_setup(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1, 2);
00082 int lms_parsers_start(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1, 2);
00083 int lms_parsers_finish(lms_t *lms, sqlite3 *db) GNUC_NON_NULL(1, 2);
00084 int lms_parsers_check_using(lms_t *lms, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1, 2, 3);
00085 int lms_parsers_run(lms_t *lms, sqlite3 *db, void **parser_match, struct lms_file_info *finfo) GNUC_NON_NULL(1, 2, 3, 4);
00086 
00087 
00088 #endif /* _LIGHTMEDIASCANNER_PRIVATE_H_ */

Generated on Thu Dec 13 02:04:03 2007 for Light Media Scanner by  doxygen 1.5.2