Loading...
Searching...
No Matches
DataProvider.qc.dox.h
// -*- mode: c++; indent-tabs-mode: nil -*-
namespace DataProvider {
const DPO_EnableServers = (1 << 0);
const DPO_DisableOnDemandInitialization = (1 << 1);
const DPO_AllOptions = ...;
class DataProvider {
public:
const FactoryMap = ...;
const TypeMap = ...;
const FactoryModuleList = keys (map {$1: True}, FactoryMap.iterator());
// "map" is used above to ensure that the values only appear once in the final list
const NoApp = "$NO_APP";
protected:
static hash<string, AbstractDataProviderFactory> factory_cache;
static hash<string, string> factory_module_map;
static Gate factory_cache_lock();
static DataProviderTypeCache type_cache();
static hash<string, string> type_module_map;
static bool allow_env_config = False;
static bool env_config_locked = False;
static hash<string, bool> mod_map;
static list<code> ilist;
static list<*list<code>> ilist_save;
static hash<string, code> smap;
static int options = 0;
static *LoggerInterface logger;
public:
static setGlobalLogger(*LoggerInterface logger);
static *LoggerInterface getGlobalLogger();
static addOptions(int options);
static removeOptions(int options);
static int getOptions();
static setOptions(int options);
static checkOptions(int options);
static registerFactory(AbstractDataProviderFactory factory);
static *AbstractDataProviderFactory getFactory(string name);
static AbstractDataProviderFactory getFactoryEx(string name);
static AbstractDataProvider getFactoryObjectWithTemplate(string path, *hash<auto> template_options, *hash<auto> options);
static AbstractDataProvider getFactoryObjectFromExample(string path, data example, *hash<auto> options);
static AbstractDataProvider getFactoryObjectFromExample(string path, InputStream example, *hash<auto> options);
static AbstractDataProvider getFactoryObject(string path, *hash<auto> options);
static AbstractDataProvider getFactoryObjectFromString(string name);
static AbstractDataProvider getFactoryObjectFromStringUseEnv(string name);
protected:
static hash<FactoryInfo> getFactoryInfoFromString(string name);
public:
static *list<string> listFactories();
static DataProviderTypeCache getTypeCache();
static registerType(string path, AbstractDataProviderType type);
static *AbstractDataProviderType getType(string path);
static AbstractDataProviderType getTypeEx(string path);
static DataProviderTypeEntry getTypeRoot();
static lockAllTypes();
static *list<string> listTypes();
static registerKnownFactories();
static loadProvidersFromEnvironment(*LoggerInterface logger);
static *AbstractDataProvider tryLoadProviderForConnectionFromEnv(string name, *string subtype, *LoggerInterface logger);
static registerKnownTypes();
static loadTypesFromEnvironment(*LoggerInterface logger);
static hash<auto> getInfoAsData(hash<auto> info0, *bool with_type_info);
static setAutoConfig();
static bool getAutoConfig();
static list<string> getPathList(string path);
static list<string> getPathList(reference<string> path);
static registerStaticInitializer(code init);
static checkStaticInit();
static deferStaticInitialization();
static restoreStaticInitialization();
protected:
synchronized static checkStaticInitIntern();
public:
static shutdown();
static registerShutdownHandler(string key, code handler);
static bool deregisterShutdownHandler(string key);
protected:
static checkRequest();
public:
protected:
static *string tryGetFactoryModuleName(string name);
public:
protected:
static *string tryGetTypeModuleName(string name);
public:
protected:
static *string tryGetModuleName(string name, string func, string type);
public:
protected:
static *DataProviderTypeEntry tryLoadTypeFromPath(list<string> type_path);
public:
protected:
static bool tryLoad(string module_str, *bool init);
public:
protected:
static *object loadFromEnvironment(string func, string type, *hash<SymbolInfo> info, *LoggerInterface logger);
public:
protected:
static *object checkSymbol(hash<SymbolInfo> info, *LoggerInterface logger);
public:
protected:
static bool checkInjection(object obj, hash<string, string> module_map);
public:
protected:
static deregisterFactory(string name);
public:
};
// private hashdecls
hashdecl SymbolInfo {
// symbol type
string type;
// symbol name
string name;
// subtype, if any
*string subtype;
}
hashdecl FactoryInfo {
// factory name
string name;
// path to final data provider in factory
list<string> path_list;
// factory options
auto options;
}
}
DataProvider::AbstractDataProviderFactory
Data provider factory class.
Definition AbstractDataProviderFactory.qc.dox.h:68
DataProvider::AbstractDataProvider
The AbstractDataProvider class.
Definition AbstractDataProvider.qc.dox.h:917
DataProvider::AbstractDataProviderType
describes a data type
Definition AbstractDataProviderType.qc.dox.h:139
DataProvider::DataProvider::getPathList
static list< string > getPathList(reference< string > path)
Returns a list of strings in a path separated by "/" characters, normalizes the argument.
DataProvider::DataProvider::getType
static *AbstractDataProviderType getType(string path)
Returns the given data provider type or nothing if not present.
DataProvider::DataProvider::getTypeEx
static AbstractDataProviderType getTypeEx(string path)
Returns the given data provider type or throws an exception if not present.
DataProvider::DataProvider::getOptions
static int getOptions()
Returns global data provider options.
DataProvider::DataProvider::registerKnownFactories
static registerKnownFactories()
Registers all known data provider factories.
DataProvider::DataProvider::tryLoadTypeFromPath
static *DataProviderTypeEntry tryLoadTypeFromPath(list< string > type_path)
Tries to load the given type.
DataProvider::DataProvider::setAutoConfig
static setAutoConfig()
Sets the flag that allows for automatic configuration from environment variables.
DataProvider::DataProvider::getFactoryObjectFromString
static AbstractDataProvider getFactoryObjectFromString(string name)
Returns a data provider object from the given factory string.
DataProvider::DataProvider::checkRequest
static checkRequest()
Sets the env_config_locked variable if not already set.
DataProvider::DataProvider::logger
static *LoggerInterface logger
Global logger.
Definition DataProvider.qc.dox.h:113
DataProvider::DataProvider::deferStaticInitialization
static deferStaticInitialization()
Defers static initialization until restoreStaticInitialization() is called.
DataProvider::DataProvider::registerFactory
static registerFactory(AbstractDataProviderFactory factory)
Register a new data provider factory.
DataProvider::DataProvider::getFactory
static *AbstractDataProviderFactory getFactory(string name)
Returns the given data provider factory or nothing if not present.
DataProvider::DataProvider::deregisterFactory
static deregisterFactory(string name)
Deregisters a factory if an exception occurs during the other module's initialization.
DataProvider::DataProvider::checkStaticInit
static checkStaticInit()
Checks for static initialization.
DataProvider::DataProvider::loadFromEnvironment
static *object loadFromEnvironment(string func, string type, *hash< SymbolInfo > info, *LoggerInterface logger)
Loads modules from the QORE_DATA_PROVIDERS environment variable.
DataProvider::DataProvider::factory_cache_lock
static Gate factory_cache_lock()
data provider factory cache lock
DataProvider::DataProvider::getFactoryEx
static AbstractDataProviderFactory getFactoryEx(string name)
Returns the given data provider factory or throws an exception if not present.
DataProvider::DataProvider::ilist
static list< code > ilist
Static initializer list.
Definition DataProvider.qc.dox.h:101
DataProvider::DataProvider::getFactoryObjectWithTemplate
static AbstractDataProvider getFactoryObjectWithTemplate(string path, *hash< auto > template_options, *hash< auto > options)
Returns a data provider object from the given factory, created with the given constructor options.
DataProvider::DataProvider::getTypeCache
static DataProviderTypeCache getTypeCache()
Returns the data provider cache.
DataProvider::DataProvider::registerShutdownHandler
static registerShutdownHandler(string key, code handler)
Registers a handler to run when shutting down data provider services.
DataProvider::DataProvider::registerType
static registerType(string path, AbstractDataProviderType type)
Register a new data provider type.
DataProvider::DataProvider::checkOptions
static checkOptions(int options)
Checks for valid global data provider options.
DataProvider::DataProvider::getFactoryObjectFromStringUseEnv
static AbstractDataProvider getFactoryObjectFromStringUseEnv(string name)
Returns a data provider object from the given factory string using environment variables to find the ...
DataProvider::DataProvider::getPathList
static list< string > getPathList(string path)
Returns a list of strings in a path separated by "/" characters.
DataProvider::DataProvider::getGlobalLogger
static *LoggerInterface getGlobalLogger()
Returns the global data provider logger.
DataProvider::DataProvider::listTypes
static *list< string > listTypes()
Returns a list of registered data provider type paths.
DataProvider::DataProvider::restoreStaticInitialization
static restoreStaticInitialization()
Restores static initialization deferred by deferStaticInitialization()
DataProvider::DataProvider::shutdown
static shutdown()
Shuts down background services related to data providers.
DataProvider::DataProvider::tryGetModuleName
static *string tryGetModuleName(string name, string func, string type)
Tries to load a module corresponding to the given factory.
DataProvider::DataProvider::checkInjection
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.
DataProvider::DataProvider::ilist_save
static list< *list< code > > ilist_save
Deferred static initializers.
Definition DataProvider.qc.dox.h:104
DataProvider::DataProvider::removeOptions
static removeOptions(int options)
Removes the given global data provider options.
DataProvider::DataProvider::type_module_map
static hash< string, string > type_module_map
data provider type module map
Definition DataProvider.qc.dox.h:87
DataProvider::DataProvider::addOptions
static addOptions(int options)
Adds the given global data provider options.
DataProvider::DataProvider::getFactoryObjectFromExample
static AbstractDataProvider getFactoryObjectFromExample(string path, InputStream example, *hash< auto > options)
Returns a data provider object from the given factory, created with the given options and example dat...
DataProvider::DataProvider::smap
static hash< string, code > smap
Shutdown handlers; key -> handler.
Definition DataProvider.qc.dox.h:107
DataProvider::DataProvider::factory_cache
static hash< string, AbstractDataProviderFactory > factory_cache
data provider factory cache
Definition DataProvider.qc.dox.h:75
DataProvider::DataProvider::type_cache
static DataProviderTypeCache type_cache()
data provider data type cache
DataProvider::DataProvider::getFactoryObjectFromExample
static AbstractDataProvider getFactoryObjectFromExample(string path, data example, *hash< auto > options)
Returns a data provider object from the given factory, created with the given options and example dat...
DataProvider::DataProvider::listFactories
static *list< string > listFactories()
Returns a list of registered data provider factories.
DataProvider::DataProvider::getTypeRoot
static DataProviderTypeEntry getTypeRoot()
Returns the root type entry.
DataProvider::DataProvider::tryLoadProviderForConnectionFromEnv
static *AbstractDataProvider tryLoadProviderForConnectionFromEnv(string name, *string subtype, *LoggerInterface logger)
Tries to load a data provider from the environment from the connection name.
DataProvider::DataProvider::checkSymbol
static *object checkSymbol(hash< SymbolInfo > info, *LoggerInterface logger)
Returns True if an object of the given type has been loaded.
DataProvider::DataProvider::deregisterShutdownHandler
static bool deregisterShutdownHandler(string key)
Deregisters a shutdown handler.
DataProvider::DataProvider::registerKnownTypes
static registerKnownTypes()
Registers all known data provider types.
DataProvider::DataProvider::getFactoryInfoFromString
static hash< FactoryInfo > getFactoryInfoFromString(string name)
Returns a hash of factory information from a string.
DataProvider::DataProvider::loadProvidersFromEnvironment
static loadProvidersFromEnvironment(*LoggerInterface logger)
Loads data providers from the environment.
DataProvider::DataProvider::lockAllTypes
static lockAllTypes()
Locks all types.
DataProvider::DataProvider::tryLoad
static bool tryLoad(string module_str, *bool init)
Try to load the given module.
DataProvider::DataProvider::setOptions
static setOptions(int options)
Replaces data provider global options with the value provided.
DataProvider::DataProvider::loadTypesFromEnvironment
static loadTypesFromEnvironment(*LoggerInterface logger)
Loads data types from the environment.
DataProvider::DataProvider::mod_map
static hash< string, bool > mod_map
set of module already loaded
Definition DataProvider.qc.dox.h:98
DataProvider::DataProvider::registerStaticInitializer
static registerStaticInitializer(code init)
Registers a static initializer.
DataProvider::DataProvider::getFactoryObject
static AbstractDataProvider getFactoryObject(string path, *hash< auto > options)
Returns a data provider object from the given factory, created with the given constructor options.
DataProvider::DataProvider::tryGetTypeModuleName
static *string tryGetTypeModuleName(string name)
Tries to load a module corresponding to the given factory.
DataProvider::DataProvider::getInfoAsData
static hash< auto > getInfoAsData(hash< auto > info0, *bool with_type_info)
Converts an info hash with objects to a hash with string descriptions instead of the objects.
DataProvider::DataProvider::factory_module_map
static hash< string, string > factory_module_map
data provider factory module map
Definition DataProvider.qc.dox.h:78
DataProvider::DataProvider::setGlobalLogger
static setGlobalLogger(*LoggerInterface logger)
Sets or clears the global logger.
DataProvider::DataProvider::getAutoConfig
static bool getAutoConfig()
Returns the auto config flag.
DataProvider::DataProvider::checkStaticInitIntern
static synchronized checkStaticInitIntern()
Checks for static initialization.
DataProvider::DataProvider::tryGetFactoryModuleName
static *string tryGetFactoryModuleName(string name)
Tries to load a module corresponding to the given factory.
DataProvider::DataProviderTypeCache
Data provider type cache class.
Definition DataProviderTypeCache.qc.dox.h:29
DataProvider::DataProviderTypeEntry
the DataProviderTypeEntry class
Definition DataProviderTypeEntry.qc.dox.h:67
DataProvider::DPO_EnableServers
const DPO_EnableServers
Definition DataProvider.qc.dox.h:41
DataProvider::DPO_DisableOnDemandInitialization
const DPO_DisableOnDemandInitialization
Disable on-demand initialization.
Definition DataProvider.qc.dox.h:47
DataProvider::DPO_AllOptions
const DPO_AllOptions
The mask of all data provider options.
Definition DataProvider.qc.dox.h:50
DataProvider
Qore AbstractDataField class definition.
Definition AbstractDataField.qc.dox.h:27