6 DataSet<T>::DataSet(T (*create_func)(), bool (*load_func)(T, const char*), bool (*done_func)(T), void (*destr_func)(T))
13 rman = resman_create();
14 resman_set_load_func(rman, dataset_load_func, this);
15 resman_set_done_func(rman, dataset_done_func, this);
16 resman_set_destroy_func(rman, dataset_destroy_func, this);
20 DataSet<T>::~DataSet()
26 void DataSet<T>::clear()
31 rman = resman_create();
35 void DataSet<T>::update(long timeslice)
37 resman_setopt(rman, RESMAN_OPT_TIMESLICE, timeslice);
42 T DataSet<T>::get(const char *name) const
44 typename std::map<std::string, T>::const_iterator iter = data.find(name);
45 if(iter != data.end()) {
51 resman_add(rman, name, res);
56 int DataSet<T>::pending() const
58 return resman_pending(rman);
62 void DataSet<T>::wait() const
64 resman_wait_all(rman);
68 void DataSet<T>::add_loaded_callback(LoadedCallbackFunc func, void *cls)
70 std::pair<LoadedCallbackFunc, void*> cb;
73 loaded_cb.push_back(cb);
77 bool DataSet<T>::remove_loaded_callback(LoadedCallbackFunc func)
79 int numcb = (int)loaded_cb.size();
80 for(int i=0; i<numcb; i++) {
81 if(loaded_cb[i].first == func) {
82 loaded_cb.erase(loaded_cb.begin() + i);
90 // --- static functions to pass as callback to resman ---
93 int DataSet<T>::dataset_load_func(const char *fname, int id, void *cls)
95 DataSet<T> *dset = (DataSet<T>*)cls;
96 T data = (T)resman_get_res_data(dset->rman, id);
99 if(!dset->load(data, fname)) {
105 template <typename T>
106 int DataSet<T>::dataset_done_func(int id, void *cls)
108 DataSet<T> *dset = (DataSet<T>*)cls;
110 T data = (T)resman_get_res_data(dset->rman, id);
111 int load_res = resman_get_res_result(dset->rman, id);
114 error_log("failed to load resource %d (%s)\n", id, resman_get_res_name(dset->rman, id));
116 info_log("done loading resource %d (%s)\n", id, resman_get_res_name(dset->rman, id));
123 int numcb = (int)dset->loaded_cb.size();
124 for(int i=0; i<numcb; i++) {
125 dset->loaded_cb[i].first(data, dset->loaded_cb[i].second);
130 template <typename T>
131 void DataSet<T>::dataset_destroy_func(int id, void *cls)
133 DataSet<T> *dset = (DataSet<T>*)cls;
134 T data = (T)resman_get_res_data(dset->rman, id);