# The C# Database Class embeded classes and structures

### For an overview see page C# Classes

### Embeded classes and structures:

            /// Actual loaded runtime information
            public struct RuntimeInfo
            {
                public byte mco_version_major;
                public byte mco_version_minor;
                public short mco_build_number;
                public byte mco_size_t;
                public byte mco_offs_t;
                public bool uint4_supported;
                public bool float_supported;
                public byte mco_checklevel;
                public bool evaluation_version;
                public bool large_database_supported;
                public bool collation_supported;
                public bool heap31_supported;
                public bool bin_serialization_supported;
                public bool fixedrec_supported;
                public bool statistics_supported;
                public bool events_supported;
                public bool save_load_supported;
                public bool object_initialization_supported;
                public bool direct_index_field_access_supported;
                public bool multiprocess_access_supported;
                public bool object_repack_supported;
                public bool transaction_logging_supported;
                public bool cluster_supported;
                public bool high_availability_supported;
                public bool ha_multicast_supported;
                public bool ha_incremental_replication_supported;
                public bool binary_schema_evolution_supported;
                public bool unicode_supported;
                public bool wchar_supported;
                public bool recovery_supported;
                public bool disk_supported;
                public bool direct_pointers_supported;
                public bool persistent_object_supported;
                public bool xml_import_export_supported;
                public bool user_defined_index_supported;
                public bool multifile_supported;
                public bool multifile_descriptor_supported;
                public bool two_phase_commit_supported;
                public bool rtree_supported;
                public bool tree_based_hash;
                public bool tmgr_mvcc_async_cleanup;
                public bool concurent_disk_btree;
                public bool open_cursor_goto_first;
                public bool smart_index_insert;
                public bool btree_leaf_lock;
                public bool null_statistics;
                public bool implicit_runtime_start;
                public bool bufferized_sync_iostream;
                public bool async_replication;
                public bool fast_transaction_list;
                public bool extendable_dirty_page_bitmap;
                public byte mursiw_policy;
                public byte sync_capabilities;
                public byte char_comparison_policy;
                public long stream_buffer_size;
                public short max_db_instances;
                public byte max_db_name_length;
                public byte max_extends;
                public long tl_page_buffer_size;
                public short ha_max_replicas;
                public long ha_transmit_buffer_size;
                public long ha_syncronization_buffer_size;
                public long default_redo_log_limit;
                public byte mvcc_critical_sections;
                public byte mvcc_per_index_locks;
                public short con_disk_page_cache_size;
                public byte small_con_cache_threshold;
                public long extendable_dirty_page_bitmap_limit;
                public byte max_vista_sessions;
                public bool concurrent_write_transactions;
                public byte encryption_support;
                public bool backup_support;
                public String mco_revision;
                public byte mco_process_t;
                public long mco_database_default_map_address;
            }

            public struct BackupInfo {
                public int        ProtocolVersion;
                public BackupType Type;
                public int        Flags;
                public int        BackupNo;
                public long       Timestamp;
                public long       Size;
                public long       Offset;
                public int        Crc;
                public long       TransNo;
                public int        MemPageSize;
                public int        DiskPageSize;
                public long       NPagesTotal;
                public String     DbName;
                public String     Label;
            }

            public struct HAChannelInfo
            {
                public String  ProtocolType;
                public long    BytesSent;
                public long    BytesRcvd;
                public bool    SupportUnreliable;
                public bool    AsyncMode;
            }

            public struct ClusterNodeParams
            {
                public String Addr;
                public int QRank;
            }

            public struct ClusterWindow
            {
                public int Length;
                public int BSize;
                public int Timeout;
            }

            public struct ClusterNodeInfo
            {
                public String Addr;
                public int QRank;
                public int NodeId;
            }

            public class ClusterTCPParams : Database.ClusterNWParams
            {
                public int SocketSendBuf;
                public int SocketRecvBuf;
                public int ConnectTimeout;
                public int ConnectInterval;
                public int SocketDomain;
                public int KeepAliveTime;
                public int KeepAliveProbes;
                public int CompressionLevel;
                public Database.SSLParameters SSLParameters;

                public ClusterTCPParams();
            }

            public class ClusterMPIParams : Database.ClusterNWParams
            {
                public int Flags;

                public ClusterMPIParams()
            }

            public class ClusterParams
            {
                public ClusterNodeParams[] Nodes;
                public int NodeId;
                public int ConnPoolFactor;
                public int SyncMsgObjects;
                public int SyncMsgSize;
                public int ClusterSendBuf;
                public int ClusterRecvBuf;
                public int Mode;
                public ClusterWindow Window;
                public ClusterQuorumDelegate QuorumDelegate;
                public ClusterNotifyDelegate NotifyDelegate;
                public ClusterNWParams NWParams;

                public ClusterParams(ClusterNodeParams[] nodes, int nodeId);
            }

            public struct ClusterInfo
            {
                public int RTransCommit;
                public int RTransRollback;
                public long BytesSent;
                public long BytesRecv;
                public int ActiveNodeNum;
                public int NodeId;
            }

            public class Parameters {...}

            /// An abstract database device (a volatile or non-volatile memory resource).
            public abstract class Device
            {
                /// The assignment of this device.
                public enum Kind
                {
                    /// This device is used for database data (disk or memory).
                    Data,
                    /// This device is used for the disk cache.
                    DiskCache,
                    /// This device is used for the transaction log.
                    TransactionLog,
                    /// This device is used as async buffer for HA.
                    AsyncBuffer,
                    /// This device is used as pipe buffer for TL.
                    PipeBuffer
                }
            }

            /// An in-process private memory segment (allocated using malloc).
            public class PrivateMemoryDevice : Database.Device
            {
                /// The private in-process memory device constructor.
                /// kind - the device assignment
                /// size - the region size
                public PrivateMemoryDevice(Device.Kind kind, long size);

                public long Size;
                public IntPtr AllocatedMemory;
            }

            /// A shared memory region (allocated using mmap or a similar system call).
            public class SharedMemoryDevice : Database.Device
            {
                /// The shared memory device constructor.
                ///
                /// kind - the device assignment.
                /// name - the segment name.
                /// hint - the proposed region.
                /// size - the region size.
                public SharedMemoryDevice(Device.Kind kind, String name, IntPtr hint, long size);

                public String Name;
                public IntPtr Hint;
                public long Size;
            }

            /// An Operating System file device.
            public class FileDevice : Database.Device
            {
                /// The file device constructor.
                ///
                /// kind - the device assignment.
                /// path - the file path.
                public FileDevice(Device.Kind kind, String path);
                public String Path;
            }

            /// A multifile segment. A multifile consists of several physical files. The
            /// size of each segment except the last is fixed, the last segment can be
            /// extended indefinitely.
            public class MultiFileDevice : Database.FileDevice
            {
                /// The multifile device constructor.
                ///
                /// kind - the device assignment.
                /// path - the file path.
                /// size - the multifile segment size (ignored for last segment).
                public MultiFileDevice(Device.Kind kind, String path, long size);
                public long Size;
            }

            /// A RAID segment.
            public class RaidDevice : Database.FileDevice
            {
                /// The RAID device constructor.
                ///
                /// kind - the device assignment.
                /// path - the file path.
                /// raidLevel - 0 - (RAID-0: striping) or 1 (RAID-1: mirroring).
                public RaidDevice(Device.Kind kind, String path, int raidLevel);

                public int RaidLevel;
            }