This interface is used to interact with the distributed database. More...
#include <idatabase.h>
Public Types | |
enum | Garbage_collection_priority { PRIORITY_LOW = 0 , PRIORITY_MEDIUM = 1 , PRIORITY_HIGH = 2 , PRIORITY_FORCE_32_BIT = 0xffffffffU } |
Priorities for synchronous garbage collection runs. More... | |
Public Types inherited from mi::base::Interface_declare< 0x814ae637, ... > | |
typedef Interface_declare< id1, ... > | Self |
Own type. More... | |
typedef Uuid_t< id1, ... > | IID |
Declares the interface ID (IID) of this interface. More... | |
Public Types inherited from mi::base::IInterface | |
typedef Uuid_t<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> | IID |
Declares the interface ID (IID) of this interface. More... | |
Public Member Functions | |
virtual IScope * | get_global_scope () const =0 |
Returns the global scope which is the root of a tree of scopes. More... | |
virtual IScope * | create_scope (IScope *parent, Uint8 privacy_level=0, bool temp=false)=0 |
Creates a new optionally temporary scope at the given privacy level with the given parent scope ID. More... | |
virtual IScope * | get_scope (const char *id) const =0 |
Looks up and returns a scope with a given ID. More... | |
virtual Sint32 | remove_scope (const char *id) const =0 |
Removes a scope with the specified ID. More... | |
virtual void | lock (Uint32 lock_id)=0 |
Acquires a DB lock. More... | |
virtual Sint32 | unlock (Uint32 lock_id)=0 |
Releases a previously obtained DB lock. More... | |
virtual IScope * | create_or_get_named_scope (const char *name, IScope *parent=0, Uint8 privacy_level=0)=0 |
Creates or retrieves a new named scope at the given privacy level with the given parent scope ID. More... | |
virtual IScope * | get_named_scope (const char *name) const =0 |
Looks up and returns a scope with a given name. More... | |
virtual void | garbage_collection (Garbage_collection_priority priority=PRIORITY_MEDIUM)=0 |
Triggers a synchronous garbage collection run. More... | |
Public Member Functions inherited from mi::base::IInterface | |
virtual Uint32 | retain () const =0 |
Increments the reference count. More... | |
virtual Uint32 | release () const =0 |
Decrements the reference count. More... | |
virtual const IInterface * | get_interface (const Uuid &interface_id) const =0 |
Acquires a const interface from another. More... | |
template<class T> | |
const T * | get_interface () const |
Acquires a const interface from another. More... | |
virtual IInterface * | get_interface (const Uuid &interface_id)=0 |
Acquires a mutable interface from another. More... | |
template<class T> | |
T * | get_interface () |
Acquires a mutable interface from another. More... | |
virtual Uuid | get_iid () const =0 |
Returns the interface ID of the most derived interface. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from mi::base::Interface_declare< 0x814ae637, ... > | |
static bool | compare_iid (const Uuid &iid) |
Compares the interface ID iid against the interface ID of this interface and of its ancestors. More... | |
Static Public Member Functions inherited from mi::base::IInterface | |
static bool | compare_iid (const Uuid &iid) |
Compares the interface ID iid against the interface ID of this interface. More... | |
This interface is used to interact with the distributed database.
Priorities for synchronous garbage collection runs.
|
pure virtual |
Creates or retrieves a new named scope at the given privacy level with the given parent scope ID.
name | A name which can be used to lookup the scope. If a scope with the same name exists already then it will be returned if the parent and privacy level are identical. Otherwise creating the scope will fail. |
parent | The parent scope for this scope. If the value is NULL the created scope will be a child of the global scope. |
privacy_level | The privacy level of the scope. This must be higher than the privacy level of the parent scope. The privacy level of the global scope is 0 (and the global scope is the only scope with privacy level 0). The default value of 0 indicates the privacy level of the parent scope plus 1. |
NULL
if something went wrong.
|
pure virtual |
Creates a new optionally temporary scope at the given privacy level with the given parent scope ID.
parent | The parent scope for this scope. If the value is NULL the created scope will be a child of the global scope. |
privacy_level | The privacy level of the scope. This must be higher than the privacy level of the parent scope. The privacy level of the global scope is 0 (and the global scope is the only scope with privacy level 0). The default value of 0 indicates the privacy level of the parent scope plus 1. |
temp | A bool indicating if the scope is temporary. If the scope is temporary, then when the host that created the scope is removed from the cluster the scope and all data contained in the scope will be removed. If the scope is not temporary, the default, then when the creating host is removed from the cluster the scope and all contained data will remain in the database. |
NULL
if something went wrong.
|
pure virtual |
Triggers a synchronous garbage collection run.
The method sweeps through the entire database and removes all database elements which have been marked for removal and are no longer referenced. Note that it is not possible to remove database elements if there are open transactions in which such an element is still referenced.
To mark an element for removal use mi::neuraylib::IDice_transaction::remove() or mi::neuraylib::IDice_transaction::store_for_reference_counting().
priority | The intended priority of the synchronous garbage collection run. |
|
pure virtual |
Returns the global scope which is the root of a tree of scopes.
|
pure virtual |
Looks up and returns a scope with a given name.
name | The name of the scope |
NULL
if no such scope exists.
|
pure virtual |
Looks up and returns a scope with a given ID.
id | The ID of the scope as returned by mi::neuraylib::IScope::get_id(). |
NULL
if no such scope exists.
|
pure virtual |
Acquires a DB lock.
The method blocks until the requested lock has been obtained. Recursively locking the same lock from within the same thread on the same host is supported.
If the host holding a lock leaves the cluster, the lock is automatically released.
lock_id | The lock to acquire. |
|
pure virtual |
Removes a scope with the specified ID.
Note that scopes are reference counted. The actual removal will not happen before all elements referencing the scope have been released, e.g., child scopes, transactions, database elements, including handles to the scope itself. Even when all these conditions are met, scope removal might actually happen at a later point in time, depending on the timing of past and current transactions, even in unrelated scopes.
It is not possible to remove the global scope.
id | The ID of the scope as returned by mi::neuraylib::IScope::get_id(). |
Releases a previously obtained DB lock.
If the lock has been locked several times from within the same thread on the same host, it simply decrements the lock count. If the lock count reaches zero, the lock is released.
lock_id | The lock to release. |