libresman
annotate src/resman_impl.h @ 23:f8e5a1491275
win32 file change notification attempt1 (failed)
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Thu, 13 Feb 2014 13:17:07 +0200 |
parents | 174ddb6bf92a |
children | ce04fa12afdd |
rev | line source |
---|---|
nuclear@22 | 1 #ifndef RESMAN_IMPL_H_ |
nuclear@22 | 2 #define RESMAN_IMPL_H_ |
nuclear@22 | 3 |
nuclear@22 | 4 #include <pthread.h> |
nuclear@22 | 5 #include "rbtree.h" |
nuclear@22 | 6 #include "threadpool.h" |
nuclear@22 | 7 |
nuclear@22 | 8 #ifdef __linux__ |
nuclear@22 | 9 #include <unistd.h> |
nuclear@22 | 10 #include <fcntl.h> |
nuclear@22 | 11 #include <sys/inotify.h> |
nuclear@22 | 12 #endif |
nuclear@23 | 13 #ifdef WIN32 |
nuclear@23 | 14 #include <windows.h> |
nuclear@23 | 15 #endif |
nuclear@22 | 16 |
nuclear@22 | 17 struct resource { |
nuclear@22 | 18 int id; |
nuclear@22 | 19 char *name; |
nuclear@22 | 20 void *data; |
nuclear@22 | 21 int result; /* last callback-reported success/fail code */ |
nuclear@22 | 22 |
nuclear@22 | 23 int done_pending; |
nuclear@22 | 24 int delete_pending; |
nuclear@22 | 25 pthread_mutex_t lock; |
nuclear@22 | 26 |
nuclear@22 | 27 int num_loads; /* number of loads up to now */ |
nuclear@22 | 28 |
nuclear@22 | 29 /* file change monitoring */ |
nuclear@23 | 30 #ifdef WIN32 |
nuclear@22 | 31 HANDLE nhandle; |
nuclear@23 | 32 char *watch_path; |
nuclear@22 | 33 #endif |
nuclear@22 | 34 #ifdef __linux__ |
nuclear@22 | 35 int nfd; |
nuclear@22 | 36 #endif |
nuclear@22 | 37 }; |
nuclear@22 | 38 |
nuclear@22 | 39 |
nuclear@22 | 40 struct resman { |
nuclear@22 | 41 struct resource **res; |
nuclear@22 | 42 struct thread_pool *tpool; |
nuclear@22 | 43 |
nuclear@22 | 44 pthread_mutex_t lock; /* global resman lock (for res array changes) */ |
nuclear@22 | 45 |
nuclear@22 | 46 resman_load_func load_func; |
nuclear@22 | 47 resman_done_func done_func; |
nuclear@22 | 48 resman_destroy_func destroy_func; |
nuclear@22 | 49 |
nuclear@22 | 50 void *load_func_cls; |
nuclear@22 | 51 void *done_func_cls; |
nuclear@22 | 52 void *destroy_func_cls; |
nuclear@22 | 53 |
nuclear@22 | 54 /* file change monitoring */ |
nuclear@22 | 55 struct rbtree *nresmap; |
nuclear@22 | 56 #ifdef __linux__ |
nuclear@22 | 57 int inotify_fd; |
nuclear@23 | 58 struct rbtree *modset; |
nuclear@23 | 59 #endif |
nuclear@23 | 60 #ifdef WIN32 |
nuclear@23 | 61 struct rbtree *watchdirs; |
nuclear@23 | 62 HANDLE *watch_handles; /* dynamic array of all the watch handles */ |
nuclear@22 | 63 #endif |
nuclear@22 | 64 }; |
nuclear@22 | 65 |
nuclear@22 | 66 |
nuclear@22 | 67 #endif /* RESMAN_IMPL_H_ */ |