neuray API Programmer's Manual

mi::bridge::IServer_transaction Class Reference

[Bridge server]

Description

Represents the server side of a Bridge transaction. All data synchronization and job execution on the server requires a pair of client-side and server-side Bridge transactions. The lifetime of the server-side transaction is bound to the lifetime client-side transaction.

Public Member Functions

virtual Sint32 add_transaction_callback( IServer_transaction_callback* callback) =0
Adds a transaction callback. More...
virtual Sint32 create_incremental_snapshot_context( const char* element, IString* snapshot_id, IIncremental_snapshot_context** context) =0
Creates a base snapshot and a context for subsequent incremental snapshots. More...
virtual Sint32 create_snapshot( const char* element, IString* snapshot_id) =0
Creates a snapshot of some database elements. More...
virtual neuraylib::​ITransactionget_database_transaction() const =0
Returns the local transaction corresponding to this Bridge transaction.
template< class T>T* get_database_transaction() const
Returns the local transaction corresponding to this Bridge transaction. More...
virtual IServer_sessionget_session() const =0
Returns the session of the transaction.
virtual Size get_updated_element_count() const =0
Returns the number of database elements updated by this transaction so far. More...
virtual Sint32 remove_transaction_callback( IServer_transaction_callback* callback) =0
Removes a transaction callback. More...

Member Functions

virtual Sint32 mi::​bridge::​IServer_transaction::add_transaction_callback( IServer_transaction_callback* callback) [pure virtual]

Adds a transaction callback. The callback will be called when the transaction has been committed or aborted by the client, or if there is an error causing the transaction to be aborted.

See also:

remove_transaction_callback()

Parameters

callback
The callback to be added.

Returns

  • 0: Success.
  • -1: Invalid argument (callback is NULL).
  • -2: The transaction is not open.
  • -3: The transaction callback was already added.
  • <= -4: Unspecified error.
virtual Sint32 mi::​bridge::​IServer_transaction::create_incremental_snapshot_context( const char* element, IString* snapshot_id, IIncremental_snapshot_context** context) [pure virtual]

Creates a base snapshot and a context for subsequent incremental snapshots. In contrast to regular snapshots, incremental snapshots contain only those elements that have been changed since the last incremental snapshot of the same context. The first incremental snapshot, also called base snapshot, of a given context contains all elements, just as the regular snapshot.

Incremental snapshots must be imported in the same order as they were created, starting with the base snapshot.

Note:

The current transaction is only used for the base snapshot, the context itself is not bound to this transaction.

See also:

create_snapshot(), mi::bridge::IBridge_server::create_snapshot_context()

Parameters

element
The top level element that incremental snapshots will be created for.
snapshot_id
The ID of the snapshot will be stored here if the operation is successful.
context
The context to be used for incremental snapshots.

Returns

  • 0: Success.
  • -1: Invalid parameters (element, snapshot_id, or context is NULL).
  • -2: The specified element does not exist.
  • -3: Failed to create the snapshot.
  • <= -4: Unspecified error.
virtual Sint32 mi::​bridge::​IServer_transaction::create_snapshot( const char* element, IString* snapshot_id) [pure virtual]

Creates a snapshot of some database elements. The snapshot will save the provided element and all elements it references in their current state into the disk cache. The snapshot will only reference data already in the disk cache so storage cost of snapshots is very low. Data in the disk cache is guaranteed not to be removed for as long as there exists at least one snapshot that references the data.

See also:

create_incremental_snapshot_context(), mi::bridge::IBridge_server::create_snapshot_context()

Parameters

element
The top level element to save the snapshot for.
snapshot_id
The ID of the snapshot will be stored here if the operation is successful.

Returns

  • 0: Success.
  • -1: Invalid arguments (element or snapshot_id is NULL).
  • -2: The specified element does not exist.
  • -3: Failed to create the snapshot.
  • <= -4: Unspecified error.
virtual neuraylib::​ITransaction* mi::​bridge::​IServer_transaction::get_database_transaction() const [pure virtual]

Returns the local transaction corresponding to this Bridge transaction.

template< class T>

T* mi::​bridge::​IServer_transaction::get_database_transaction() const [inline]

Returns the local transaction corresponding to this Bridge transaction. This templated member function is a wrapper of the non-template variant for the user's convenience. It eliminates the need to call mi::base::IInterface::get_interface( const Uuid&) on the returned pointer, since the return type already is a pointer to the type T specified as template parameter.

virtual IServer_session* mi::​bridge::​IServer_transaction::get_session() const [pure virtual]

Returns the session of the transaction.

virtual Size mi::​bridge::​IServer_transaction::get_updated_element_count() const [pure virtual]

Returns the number of database elements updated by this transaction so far. This number includes elements that have just been uploaded to the disk cache as well as elements that also have been replicated in the database.

virtual Sint32 mi::​bridge::​IServer_transaction::remove_transaction_callback( IServer_transaction_callback* callback) [pure virtual]

Removes a transaction callback.

See also:

add_transaction_callback()

Parameters

callback
The callback to be removed.

Returns

  • 0: Success.
  • -1: Invalid argument (callback is NULL).
  • -2: There is no such callback.
  • <= -3: Unspecified error.