The startup procedure that initializes the eXtremeDB runtime environment in C# applications is implemented in the Database.RuntimeStart() method which is invoked automatically by the constructor when a Database object is instantiated. And Database.RuntimeStop() is invoked automatically to shutdown the runtime in an orderly manner when the Database object is destroyed.
Runtime Libraries
For C# applications, the runtime library options are specified in the Database constructor call. There are four constructors for the Database class:
Database() Database(Mode mode) Database(Mode mode, string runtime_path) Database(ExtremedbWrapper)The first (default) constructor loads the default runtime which uses conventional memory for all-in-memory databases and the
MURSIW
transaction manager in the release mode libraries.The second constructor allows selecting which runtime libraries to load. Prior to instantiating the Database object, it is common practice to set runtime options to load specific eXtremeDB DLLs by setting Database.Mode values.
The possible options are:
DebugSupport Load debug versions of libraries to provide additional diagnostic exceptions SharedMemorySupport Load " _shm
" versions of libraries for databases using shared memoryDiskSupport Load persistent storage libraries MVCCTransactionManager Load " _mvcc
" versions of libraries to use the MVCC transaction manager - by default "_mursiw
" (MURSIW transaction manager) versions are loadedTransactionLoggingSupport Load eXtremeDB Transaction Logging libraries HighAvailabilitySupport Load eXtremeDB High Availability libraries ClusterSupport Load eXtremeDB Cluster libraries MPIClusterSupport Load eXtremeDB Cluster libraries for the MPI channel transport layer Multiple options are combined using the
or
operator “|”. For example the following options together specify the disk-based version of theMVCC
transaction manager and the Debug libraries:db = new Database( Database.DiskSupport | Database.MVCCTransactionManager | Database.DebugSupport);When a
mode
argument is specified, the runtime libraries to be loaded are searched using the standard rules for loading .NET Framework assemblies: first the Global Assembly Cache (GAC) is searched, then the local application directory. If another location is desired for loading the runtime libraries, the third constructor can be used to specify a runtime file pathruntime_path
.For backward compatibility with applications created with previous versions or the .NET Framework API, the fourth constructor accepts the
ExtremedbWrapper
argument. This constructor is typically invoked as follows:Database db = new Database( new ExtremedbWrapper() );
ExtremedbWrapper
is the wrapper class necessary for the eXtremeDB managed API (implemented in managed C++). The other constructors instantiate this wrapper interface automatically.Persistent Databases
For Persistent Database applications, the
Database.Mode.DiskSupport
flag must be specified in the Database constructor call. For example:Database.Mode mode = Database.Mode.DiskSupport; db = new Database(mode);
GetRuntimeInfo
The Database.GetRunTimeInfo() method can be called any time after Database instantiation to obtain the specific configuration details of the current runtime. (Please refer to SDK sample csharp/open for an example.)
The typical sequence of API calls would look like the following:
public static void Main(String[] args) { Database db; ... Database.Mode mode = Database.Mode.SharedMemorySupport | Database.Mode.MVCCTransactionManager; ... mode |= Database.Mode.DebugSupport; // Initialize runtime and open database with shared memory, MVCC and debug libraries db = new Database(mode); ... // Call method GetRunTimeInfo() to view runtime options Database.RuntimeInfo ri = db.GetRunTimeInfo(); }