Qore DataProvider Module Reference  1.2.1
DataProvider::DataProviderTypeCache Class Reference

Data provider type cache class. More...

Inherits Serializable.

Public Member Methods

 clear ()
 Clears the type hierarchy of all non-locked types.
 
bool empty ()
 Returns True if the cache is empty, False if not.
 
RWLock getLock ()
 Returns the RWLock to allow for external serialization.
 
DataProviderTypeEntry getRoot ()
 Returns the root type entry.
 
*AbstractDataProviderType getType (string path)
 Returns the given data provider type or NOTHING if not present. More...
 
AbstractDataProviderType getTypeEx (string path)
 Returns the given data provider type or throws an exception if not present. More...
 
*AbstractDataProviderType getTypeImpl (string path, bool throw_exception, *code type_loader)
 Returns the given data provider type and either throws an exception if not present or returns NOTHING. More...
 
*hash< DataProviderTypeEntryInfogetTypeInfo (string path, *bool rec_children_only)
 Returns the given data provider type or NOTHING if not present. More...
 
hash< DataProviderTypeEntryInfogetTypeInfoEx (string path, *bool rec_children_only)
 Returns the given data provider type or throws an exception if not present. More...
 
*hash< DataProviderTypeEntryInfogetTypeInfoImpl (string path, bool throw_exception, *bool rec_children_only)
 Returns information for the given data provider type and either throws an exception if not present or returns NOTHING. More...
 
*list< stringlistTypes ()
 Returns a list of registered data provider type paths. More...
 
 lockAll ()
 Locks all types.
 
bool registerOrReplaceType (string path, AbstractDataProviderType type)
 Register or replaces a data provider type in the cache. More...
 
 registerType (string path, AbstractDataProviderType type, bool locked=False)
 Register a new data provider type in the cache. More...
 
*AbstractDataProviderType removeType (string path)
 Removes a type from the type cache. More...
 
int size ()
 Returns the number of types in the cache.
 

Private Member Methods

DataProviderTypeEntry root ()
 Data provider data type cache.
 
transient RWLock rwlock ()
 Data provider type cache lock.
 

Static Private Member Methods

static *AbstractDataProviderType getTypeFromFields (string path, AbstractDataProviderType type, list< string > type_path, bool throw_exception)
 Returns the given data provider type and either throws an exception if not present or returns NOTHING. More...
 

Private Attributes

int size = 0
 The size of the cache.
 

Detailed Description

Data provider type cache class.

Member Function Documentation

◆ getType()

*AbstractDataProviderType DataProvider::DataProviderTypeCache::getType ( string  path)

Returns the given data provider type or NOTHING if not present.

Parameters
patha "/" separated path for the type; trailing path elements can be a path into fields
Returns
the given data provider type; NOTHING is returned if the type cannot be resolved
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ getTypeEx()

AbstractDataProviderType DataProvider::DataProviderTypeCache::getTypeEx ( string  path)

Returns the given data provider type or throws an exception if not present.

Parameters
patha "/" separated path for the type; trailing path elements can be a path into fields
Returns
the given data provider type; an exception is thrown if the data provider is unknown
Exceptions
PROVIDER-ERRORthe given data provider type path is unknown
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ getTypeFromFields()

static *AbstractDataProviderType DataProvider::DataProviderTypeCache::getTypeFromFields ( string  path,
AbstractDataProviderType  type,
list< string type_path,
bool  throw_exception 
)
staticprivate

Returns the given data provider type and either throws an exception if not present or returns NOTHING.

Parameters
patha "/" separated path for the type
typethe base type for the search
type_paththe path in the type for fields leading to the final return type
throw_exceptionif True then an exception is thrown if the path cannot be resolved, otherwise NOTHING is returned
Returns
the given data provider type or NOTHING is returned if the path cannot be resolved and the throw_exception argument is False
Exceptions
PROVIDER-ERRORthe given data provider type path is unknown; only thrown if the throw_exception argument is True
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ getTypeImpl()

*AbstractDataProviderType DataProvider::DataProviderTypeCache::getTypeImpl ( string  path,
bool  throw_exception,
*code  type_loader 
)

Returns the given data provider type and either throws an exception if not present or returns NOTHING.

Parameters
patha "/" separated path for the type
throw_exceptionif True then an exception is thrown if the path cannot be resolved, otherwise NOTHING is returned
type_loadera closure taking a list of strings giving the full path to the type and returning *AbstractDataProviderType
Returns
the given data provider type or NOTHING is returned if the path cannot be resolved and the throw_exception argument is False
Exceptions
PROVIDER-ERRORthe given data provider type path is unknown; only thrown if the throw_exception argument is True
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ getTypeInfo()

*hash<DataProviderTypeEntryInfo> DataProvider::DataProviderTypeCache::getTypeInfo ( string  path,
*bool  rec_children_only 
)

Returns the given data provider type or NOTHING if not present.

Parameters
patha "/" separated path for the type; trailing path elements can be a path into fields
rec_children_onlyif True, then only children with fields are returned
Returns
the given data provider type; NOTHING is returned if the type cannot be resolved
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ getTypeInfoEx()

hash<DataProviderTypeEntryInfo> DataProvider::DataProviderTypeCache::getTypeInfoEx ( string  path,
*bool  rec_children_only 
)

Returns the given data provider type or throws an exception if not present.

Parameters
patha "/" separated path for the type; trailing path elements can be a path into fields
rec_children_onlyif True, then only children with fields are returned
Returns
the given data provider type; an exception is thrown if the data provider is unknown
Exceptions
PROVIDER-ERRORthe given data provider type path is unknown
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ getTypeInfoImpl()

*hash<DataProviderTypeEntryInfo> DataProvider::DataProviderTypeCache::getTypeInfoImpl ( string  path,
bool  throw_exception,
*bool  rec_children_only 
)

Returns information for the given data provider type and either throws an exception if not present or returns NOTHING.

Parameters
patha "/" separated path for the type
throw_exceptionif True then an exception is thrown if the path cannot be resolved, otherwise NOTHING is returned
rec_children_onlyif True, then only children with fields are returned
Returns
information for the given data provider type or NOTHING is returned if the path cannot be resolved and the throw_exception argument is False
Exceptions
PROVIDER-ERRORthe given data provider type path is unknown; only thrown if the throw_exception argument is True
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ listTypes()

*list<string> DataProvider::DataProviderTypeCache::listTypes ( )

Returns a list of registered data provider type paths.

Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ registerOrReplaceType()

bool DataProvider::DataProviderTypeCache::registerOrReplaceType ( string  path,
AbstractDataProviderType  type 
)

Register or replaces a data provider type in the cache.

Parameters
patha "/" separated path for the type; this is the lookup index
typethe new data provider type
Returns
True if the type was replaced or added
Exceptions
TYPE-LOCK-ERRORtype entry cannot be replaced, because it is locked
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ registerType()

DataProvider::DataProviderTypeCache::registerType ( string  path,
AbstractDataProviderType  type,
bool  locked = False 
)

Register a new data provider type in the cache.

Parameters
patha "/" separated path for the type; this is the lookup index
typethe new data provider type
lockedif the data type should be locked, prohibiting updates and deletions
Exceptions
PROVIDER-ERRORthe given provider has already been registered
Note
types are stored based on the path provided which may differ from their type names (which may be generic and therefore not suitable for indexing)

◆ removeType()

*AbstractDataProviderType DataProvider::DataProviderTypeCache::removeType ( string  path)

Removes a type from the type cache.

Parameters
patha "/" separated path for the type; this is the lookup index
Returns
the type removed or NOTHING if the type was not present
Exceptions
TYPE-LOCK-ERRORthe given type cannot be removed, because it is locked