Qore DataProvider Module Reference  1.0.4
DataProvider.qc.dox.h
1 // -*- mode: c++; indent-tabs-mode: nil -*-
3 
27 namespace DataProvider {
29 class DataProvider {
30 
31 public:
33  const FactoryMap = ...;
34 
35 
37  const TypeMap = ...;
38 
39 
41  const FactoryModuleList = keys (map {$1: True}, FactoryMap.iterator());
42  // "map" is used above to ensure that the values only appear once in the final list
43 
44 protected:
46  static hash<string, AbstractDataProviderFactory> factory_cache;
47 
49  static hash<string, string> factory_module_map;
50 
52  static Mutex factory_cache_lock();
53 
56 
58  static hash<string, string> type_module_map;
59 
61 
63  static bool allow_env_config = False;
64 
66  static bool env_config_locked = False;
67 
68 public:
69 
71 
76 
79 
81 
88 
90 
95  static AbstractDataProvider getFactoryObject(string path, *hash<auto> options);
96 
98 
106 
108  static *list<string> listFactories();
109 
112 
114 
123 
125 
132  static *AbstractDataProviderType getType(string path);
133 
135 
144  static AbstractDataProviderType getTypeEx(string path);
145 
148 
150  static lockAllTypes();
151 
153 
157  static *list<string> listTypes();
158 
161 
164 
167 
170 
172  static hash<auto> getInfoAsData(hash<auto> info0);
173 
175 
179  static setAutoConfig();
180 
182  static bool getAutoConfig();
183 
185  static list<string> getPathList(string path);
186 
188 protected:
189  static checkRequest();
190 public:
191 
192 
194 protected:
195  static *string tryGetFactoryModuleName(string name);
196 public:
197 
198 
200 protected:
201  static *string tryGetTypeModuleName(string name);
202 public:
203 
204 
206 protected:
207  static *string tryGetModuleName(string name, string func, string type);
208 public:
209 
210 
212 protected:
213  static *DataProviderTypeEntry tryLoadTypeFromPath(list<string> type_path);
214 public:
215 
216 
218 protected:
219  static bool tryLoad(string module_str, *bool verbose);
220 public:
221 
222 
224 protected:
225  static loadFromEnvironment(string func, string type);
226 public:
227 
228 
230 protected:
231  static bool checkInjection(object obj, hash<string, string> module_map);
232 public:
233 
234 };
235 };
Data provider factory class.
Definition: AbstractDataProviderFactory.qc.dox.h:28
The AbstractDataProvider class.
Definition: AbstractDataProvider.qc.dox.h:194
describes a data type
Definition: AbstractDataProviderType.qc.dox.h:93
static list< string > getPathList(string path)
Returns a list of strings in a path separated by "/" characters.
static *AbstractDataProviderType getType(string path)
Returns the given data provider type or NOTHING if not present.
static AbstractDataProviderType getTypeEx(string path)
Returns the given data provider type or throws an exception if not present.
static registerKnownFactories()
Registers all known data provider factories.
static *DataProviderTypeEntry tryLoadTypeFromPath(list< string > type_path)
Tries to load the given type.
static setAutoConfig()
Sets the flag that allows for automatic configuration from environment variables.
static AbstractDataProvider getFactoryObjectFromString(string name)
Returns a data provider object from the given factory with options given as string-formatted hash in ...
static checkRequest()
Sets the env_config_locked variable if not already set.
static *list< string > listFactories()
Returns a list of registered data provider factories.
static registerFactory(AbstractDataProviderFactory factory)
Register a new data provider factory.
static *AbstractDataProviderFactory getFactory(string name)
Returns the given data provider factory or NOTHING if not present.
static AbstractDataProviderFactory getFactoryEx(string name)
Returns the given data provider factory or throws an exception if not present.
static loadFromEnvironment(string func, string type)
Loads modules from the QORE_DATA_PROVIDERS environment variable.
static Mutex factory_cache_lock()
data provider factory cache lock
static loadProvidersFromEnvironment()
Loads data providers from the environment.
static DataProviderTypeCache getTypeCache()
Returns the data provider cache.
static registerType(string path, AbstractDataProviderType type)
Register a new data provider type.
static *string tryGetModuleName(string name, string func, string type)
Tries to load a module corresponding to the given factory.
static bool checkInjection(object obj, hash< string, string > module_map)
Check if the object is from a module that has been subject to dependency injections.
static hash< string, string > type_module_map
data provider type module map
Definition: DataProvider.qc.dox.h:58
static *list< string > listTypes()
Returns a list of registered data provider type paths.
static loadTypesFromEnvironment()
Loads data types from the environment.
static hash< string, AbstractDataProviderFactory > factory_cache
data provider factory cache
Definition: DataProvider.qc.dox.h:46
static DataProviderTypeCache type_cache()
data provider data type cache
static bool tryLoad(string module_str, *bool verbose)
Try to load the given module.
static DataProviderTypeEntry getTypeRoot()
Returns the root type entry.
static registerKnownTypes()
Registers all known data provider types.
static lockAllTypes()
Locks all types.
static AbstractDataProvider getFactoryObject(string path, *hash< auto > options)
Returns a data provider object from the given factory, created with the given constructor options.
static hash< auto > getInfoAsData(hash< auto > info0)
Converts an info hash with objects to a hash with string descriptions instead of the objects.
static *string tryGetTypeModuleName(string name)
Tries to load a module corresponding to the given factory.
static hash< string, string > factory_module_map
data provider factory module map
Definition: DataProvider.qc.dox.h:49
static bool getAutoConfig()
Returns the auto config flag.
static *string tryGetFactoryModuleName(string name)
Tries to load a module corresponding to the given factory.
Data provider type cache class.
Definition: DataProviderTypeCache.qc.dox.h:29
the DataProviderTypeEntry class
Definition: DataProviderTypeEntry.qc.dox.h:55
const True
const False
string type(auto arg)
Qore AbstractDataField class definition.
Definition: AbstractDataField.qc.dox.h:32