Resource Manager Database Library
[Server]

Collaboration diagram for Resource Manager Database Library:

Detailed Description

The RMDB Library contains classes for:.

  1. Insert, select, update and removing of database records,
  2. Resource Allocation policies,
  3. Job Id Generation,
  4. Migration ID Generation,
  5. other methods like VolumeFull, DriveError, MediumLoaded etc.

All operation are performed through a single thread (class rm_DBThread). For this purpose all operations are packed in classes wich provide sequential execution (see also: class rm_DBOperation)


Classes

class  rm_TimeStamp
class  rm_String
class  ivd_DBException
class  rm_Library
class  rm_Drive
class  rm_DriveHost
class  rm_DiskSubsys
class  rm_Slot
class  rm_MediaPool
class  rm_Medium
class  rm_MediumVol
class  rm_JobIdGen
 JobID Generator Generates a new Job ID on request. More...
class  rm_MigIdGen
 Migration Id Generator Generates a new Migration ID per IVD-Partition on request. More...
class  rm_Partition
class  rm_DB
struct  rm_MediumPos_t
struct  rm_CopyPos_t
class  rm_MajorCol
class  rm_MinorCol
class  rm_ColMediaVol
struct  rm_ColAlloc

Defines

#define SQL_NOERROR   (0)
#define SQL_100   (100)
#define SQL_NOTFOUND   (SQL_100)
#define SQL_DEADLOCK   (-913)
#define SQL_FKVIOLATION   (-530)
#define SQL_UNIQUEVIOLATION   (-803)
#define SQL_MULTIPLERECORDS   (100)
#define RM_ALLOC_FAILUE   (1000)
#define IB_TABLE_NAME_SIZE   (31)
#define rmdb_MAX_LIBRARYNAME   50
#define rmdb_MAX_MEDIAPOOLNAME   50
#define rmdb_MAX_PARTITIONNAME   50
#define rmdb_MAX_DRIVENAME   50
#define rmdb_MAX_HOSTNAME   192
#define rmdb_MAX_MOUNTPOINT   255
#define rmdb_MAX_FSID   128
#define rmdb_MAX_CTRLDEVICE   255
#define rmdb_MAX_DRIVEIDX   64
#define rmdb_MAX_BARCODE   64
#define rmdb_MAX_VENDORID   32
#define rmdb_MAX_PRODUCTID   32
#define rmdb_MAX_SERIALNO   128
#define rmdb_MAX_UUID   36
#define rmdb_MAX_FIRMWAREREV   32
#define rmdb_MAX_SCSIID   32
#define rmdb_MAX_SLOTADDR   64
#define rmdb_MAX_LOCATION   255
#define rmdb_MAX_MEDIUMSERIALNO   128
#define rmdb_MAX_DSSNAME   50
#define rmdb_INIT_LIBRARY_STATUS   (ls_ONLINE)
#define rmdb_LIBRARY_ERROR   (ls_ERROR)
#define rmdb_LIBRARY_DISABLED   (ls_DISABLED)
#define elem_DRIVE   (0x04)
#define elem_SLOT   (0x02)
#define elem_MAILSLOT   (0x03)
#define rmdb_REP_SLOT_TYPE_ID   (st_REPOSITORY)
 Slot type identifiers for RMDB.
#define rmdb_MAIL_SLOT_TYPE_ID   (st_MAIL)
#define rmdb_CLEAN_SLOT_TYPE_ID   (st_CLEAN)
#define rmdb_INIT_DRIVE_STATUS   (ds_ONLINE)
#define rmdb_DRIVE_IN_USE   (ds_INUSE)
#define rmdb_DRIVE_ERROR   (ds_ERROR)
#define rmdb_DRIVE_DISABLED   (ds_DISABLED)
#define rmdb_INIT_DSS_STATUS   (0)
#define rmdb_DSS_IN_USE   (1 << 0)
#define rmdb_SLOT_FREE   (ss_FREE)
#define rmdb_SLOT_IN_USE   (ss_SLOTINUSE)
#define rmdb_DATA_VOLUME   (0)
 System/data volume identifiers for RMDB.
#define rmdb_SYSTEM_VOLUME   (1)
#define rmdb_PARTITION_ENABLED   (rmdb_PARTITION_ENABLED_d)
 Partition status identifiers for RMDB.
#define rmdb_PARTITION_DISABLED   (rmdb_PARTITION_DISABLED_d)
#define rmdb_PARTITION_RECOVERY_MODE   (rmdb_PARTITION_RECOVERY_MODE_d)
#define rmdb_PARTITION_REORG_SCAN_INPROG   (rmdb_PARTITION_REORG_SCAN_INPROG_d)
#define rmdb_PARTITION_OPTION_NOT_SET   (fst_UNKNOWN)
 Partition option identifiers for RMDB.
#define rmdb_PARTITION_OPTION_REGULAR   (fst_REGULAR)
#define rmdb_PARTITION_OPTION_WORM   (fst_WORM)
#define rmdb_INIT_MEDIUM_STATUS   (ms_UNKNOWN)
#define rmdb_MEDIUM_IN_USE   (ms_INUSE)
#define rmdb_MEDIUM_OPEN   (ms_OPEN)
#define rmdb_MEDIUM_UNUSABLE   (ms_UNUSABLE)
#define rmdb_MEDIUM_UNRELIABLE   (ms_UNRELIABLE)
#define rmdb_MEDIUM_FULL   (ms_FULL)
#define rmdb_INIT_MEDIUMVOL_STATUS   (mvs_EMPTY)
#define rmdb_MEDVOL_EMPTY   (mvs_EMPTY)
#define rmdb_MEDVOL_USED   (mvs_OPEN)
#define rmdb_MEDVOL_FULL   (mvs_FULL)
#define rmdb_MEDVOL_ERROR   (mvs_ERROR)
#define rmdb_MEDVOL_RECOVER   (mvs_RECOVER)
#define rmdb_MEDVOL_REORG_SCANNED   (mvs_REORG_SCANNED)
#define rmdb_MEDVOL_REORG_INREORG   (mvs_REORG_INREORG)
#define rmdb_MEDVOL_REORG_RECYCLED   (mvs_REORG_RECYCLED)

Typedefs

typedef vector< rm_Mediumrm_MedList
typedef vector< rm_CopyPos_trm_CopiesPos_v_t

Functions

static long int isc_dsql_execute_m (long int *a_statusVector, void **a_dbHandle, void **a_trHandle, short unsigned int a_stmtLength, char *a_stmt, int a_6, short unsigned int a_7, char *a_xsqlda)
void TableExists (char[IB_TABLE_NAME_SIZE])


Define Documentation

#define elem_DRIVE   (0x04)

Definition at line 77 of file rmdb_defines.h.

Referenced by rm_Operator::InventoryUpdate().

#define elem_MAILSLOT   (0x03)

Definition at line 79 of file rmdb_defines.h.

#define elem_SLOT   (0x02)

Definition at line 78 of file rmdb_defines.h.

#define IB_TABLE_NAME_SIZE   (31)

Definition at line 40 of file rmdb_defines.h.

#define RM_ALLOC_FAILUE   (1000)

Definition at line 38 of file rmdb_defines.h.

Referenced by rm_Operator::AllocateAdmin().

#define rmdb_CLEAN_SLOT_TYPE_ID   (st_CLEAN)

Definition at line 84 of file rmdb_defines.h.

#define rmdb_DATA_VOLUME   (0)

#define rmdb_DRIVE_DISABLED   (ds_DISABLED)

#define rmdb_DRIVE_ERROR   (ds_ERROR)

#define rmdb_DRIVE_IN_USE   (ds_INUSE)

#define rmdb_DSS_IN_USE   (1 << 0)

Definition at line 95 of file rmdb_defines.h.

Referenced by rm_Operator::RemoveDSS().

#define rmdb_INIT_DRIVE_STATUS   (ds_ONLINE)

Definition at line 87 of file rmdb_defines.h.

Referenced by rm_Operator::AutoDetect().

#define rmdb_INIT_DSS_STATUS   (0)

Definition at line 94 of file rmdb_defines.h.

Referenced by rm_Operator::AutoDetect().

#define rmdb_INIT_LIBRARY_STATUS   (ls_ONLINE)

#define rmdb_INIT_MEDIUM_STATUS   (ms_UNKNOWN)

#define rmdb_INIT_MEDIUMVOL_STATUS   (mvs_EMPTY)

Definition at line 131 of file rmdb_defines.h.

Referenced by rm_Operator::AutoDetect().

#define rmdb_LIBRARY_DISABLED   (ls_DISABLED)

#define rmdb_LIBRARY_ERROR   (ls_ERROR)

#define rmdb_MAIL_SLOT_TYPE_ID   (st_MAIL)

#define rmdb_MAX_BARCODE   64

#define rmdb_MAX_CTRLDEVICE   255

#define rmdb_MAX_DRIVEIDX   64

#define rmdb_MAX_DRIVENAME   50

#define rmdb_MAX_DSSNAME   50

#define rmdb_MAX_FIRMWAREREV   32

#define rmdb_MAX_FSID   128

#define rmdb_MAX_HOSTNAME   192

#define rmdb_MAX_LIBRARYNAME   50

#define rmdb_MAX_LOCATION   255

#define rmdb_MAX_MEDIAPOOLNAME   50

#define rmdb_MAX_MEDIUMSERIALNO   128

#define rmdb_MAX_MOUNTPOINT   255

#define rmdb_MAX_PARTITIONNAME   50

#define rmdb_MAX_PRODUCTID   32

#define rmdb_MAX_SCSIID   32

#define rmdb_MAX_SERIALNO   128

#define rmdb_MAX_SLOTADDR   64

#define rmdb_MAX_UUID   36

#define rmdb_MAX_VENDORID   32

#define rmdb_MEDIUM_FULL   (ms_FULL)

#define rmdb_MEDIUM_IN_USE   (ms_INUSE)

#define rmdb_MEDIUM_OPEN   (ms_OPEN)

#define rmdb_MEDIUM_UNRELIABLE   (ms_UNRELIABLE)

#define rmdb_MEDIUM_UNUSABLE   (ms_UNUSABLE)

#define rmdb_MEDVOL_EMPTY   (mvs_EMPTY)

#define rmdb_MEDVOL_ERROR   (mvs_ERROR)

Definition at line 135 of file rmdb_defines.h.

Referenced by dbo_VolumeError::Process(), and rm_Operator::SelectOpenedVolume().

#define rmdb_MEDVOL_FULL   (mvs_FULL)

#define rmdb_MEDVOL_RECOVER   (mvs_RECOVER)

#define rmdb_MEDVOL_REORG_INREORG   (mvs_REORG_INREORG)

#define rmdb_MEDVOL_REORG_RECYCLED   (mvs_REORG_RECYCLED)

#define rmdb_MEDVOL_REORG_SCANNED   (mvs_REORG_SCANNED)

#define rmdb_MEDVOL_USED   (mvs_OPEN)

#define rmdb_PARTITION_DISABLED   (rmdb_PARTITION_DISABLED_d)

#define rmdb_PARTITION_ENABLED   (rmdb_PARTITION_ENABLED_d)

Partition status identifiers for RMDB.

Definition at line 106 of file rmdb_defines.h.

Referenced by i_ManagementInterface_i::AddPartition(), and i_ManagementInterface_i::EnablePartition().

#define rmdb_PARTITION_OPTION_NOT_SET   (fst_UNKNOWN)

Partition option identifiers for RMDB.

Definition at line 112 of file rmdb_defines.h.

Referenced by i_ResourceManager_i::RegisterPartition().

#define rmdb_PARTITION_OPTION_REGULAR   (fst_REGULAR)

Definition at line 113 of file rmdb_defines.h.

#define rmdb_PARTITION_OPTION_WORM   (fst_WORM)

Definition at line 114 of file rmdb_defines.h.

#define rmdb_PARTITION_RECOVERY_MODE   (rmdb_PARTITION_RECOVERY_MODE_d)

#define rmdb_PARTITION_REORG_SCAN_INPROG   (rmdb_PARTITION_REORG_SCAN_INPROG_d)

#define rmdb_REP_SLOT_TYPE_ID   (st_REPOSITORY)

#define rmdb_SLOT_FREE   (ss_FREE)

#define rmdb_SLOT_IN_USE   (ss_SLOTINUSE)

#define rmdb_SYSTEM_VOLUME   (1)

#define SQL_100   (100)

Definition at line 31 of file rmdb_defines.h.

#define SQL_DEADLOCK   (-913)

Definition at line 33 of file rmdb_defines.h.

#define SQL_FKVIOLATION   (-530)

Definition at line 34 of file rmdb_defines.h.

#define SQL_MULTIPLERECORDS   (100)

Definition at line 36 of file rmdb_defines.h.

#define SQL_NOERROR   (0)

Definition at line 30 of file rmdb_defines.h.

Referenced by rm_DB::Connect(), rm_DB::Disconnect(), rm_DB::ExistExtFunctions(), rm_Medium::Insert(), rm_Slot::Insert(), rm_MediaPool::Insert(), rm_DiskSubsys::Insert(), rm_Drive::Insert(), rm_ColMediaVol::Next(), rm_MinorCol::Next(), rm_MajorCol::Next(), rm_Partition::Next(), rm_MediumVol::Next(), rm_Medium::Next(), rm_Slot::Next(), rm_MediaPool::Next(), rm_DiskSubsys::Next(), rm_DriveHost::Next(), rm_Drive::Next(), rm_Library::Next(), rm_Partition::Select(), rm_MediumVol::Select(), rm_Medium::Select(), rm_Slot::Select(), rm_MediaPool::Select(), rm_DiskSubsys::Select(), rm_DriveHost::Select(), rm_Drive::Select(), rm_Library::Select(), rm_ColMediaVol::SelectAll(), rm_MinorCol::SelectAll(), rm_Drive::SelectAll(), rm_Drive::SelectByAddr(), rm_Medium::SelectByBarcode(), rm_Medium::SelectByDrive(), rm_Slot::SelectByLibAddrType(), rm_MinorCol::SelectByMajCol(), rm_MediumVol::SelectByMajColId(), rm_MediumVol::SelectByMedium(), rm_MediumVol::SelectByMedVolId(), rm_Partition::SelectByName(), rm_MediaPool::SelectByName(), rm_DiskSubsys::SelectByName(), rm_Drive::SelectByName(), rm_Library::SelectByName(), rm_MediumVol::SelectByPartition(), rm_Medium::SelectByPartition(), rm_Medium::SelectBySlot(), rm_Medium::SelectByStatus(), rm_Drive::SelectByStatus(), rm_Partition::SelectByUuid(), rm_MediaPool::SelectByUUID(), rm_ColMediaVol::SelectByVolume(), rm_MediumVol::SelectEmptyCollocation(), rm_Drive::SelectForOperation(), rm_Operator::SelectMediumForMig(), rm_Operator::SelectMediumVolumeCol(), rm_Operator::SelectMediumVolumeMig(), rm_ColMediaVol::StartSelectAll(), rm_MinorCol::StartSelectAll(), rm_MajorCol::StartSelectAll(), rm_Partition::StartSelectAll(), rm_MediumVol::StartSelectAll(), rm_Medium::StartSelectAll(), rm_Slot::StartSelectAll(), rm_MediaPool::StartSelectAll(), rm_DiskSubsys::StartSelectAll(), and rm_DriveHost::StartSelectAll().

#define SQL_NOTFOUND   (SQL_100)

#define SQL_UNIQUEVIOLATION   (-803)


Typedef Documentation

Definition at line 864 of file rmdb.h.

Definition at line 468 of file rmdb.h.


Function Documentation

static long int isc_dsql_execute_m ( long int *  a_statusVector,
void **  a_dbHandle,
void **  a_trHandle,
short unsigned int  a_stmtLength,
char *  a_stmt,
int  a_6,
short unsigned int  a_7,
char *  a_xsqlda 
) [static]

Definition at line 749 of file rmdb.h.

00756                                                    {
00757 
00758     return ::isc_dsql_execute_m(    a_statusVector,
00759                                     a_dbHandle,
00760                                     a_trHandle,
00761                                     a_stmtLength,
00762                                     a_stmt,
00763                                     static_cast<short unsigned int>(a_6),
00764                                     a_7,
00765                                     a_xsqlda);
00766 
00767 
00768 }

void TableExists ( char  [IB_TABLE_NAME_SIZE]  ) 

Definition at line 308 of file librmdb.exx.

References dbg_LOW, errorDesc(), ie_RMDB_ERROR, ivd_Error, log_DBG_m, log_FUNC_m, NAME, SQL_CHECKREAD_M, str, and TableExists().

Referenced by rm_DB::Check(), and TableExists().

00308                                                        {
00309     log_FUNC_m(TableExists);
00310 
00311     EXEC SQL
00312         SET TRANSACTION NAME readTrans
00313         READ ONLY
00314         ISOLATION LEVEL READ COMMITTED;
00315 
00316     int count(0);
00317     EXEC SQL
00318         SELECT TRANSACTION readTrans
00319         COUNT(*)
00320     INTO :count
00321         FROM RDB$RELATIONS
00322         WHERE RDB$RELATION_NAME = :a_tablename;
00323 
00324     string sqlErrDesc = errorDesc(SQLCODE, "Table exsist");
00325     SQL_CHECKREAD_M( sqlErrDesc );
00326     log_DBG_m(dbg_LOW, "Count:" << count);
00327     if (count == 1 ) {
00328         log_DBG_m(dbg_LOW, " OK a_tablename:" << a_tablename );
00329     }
00330     else {
00331         ostringstream str;
00332         str << "Table missing in rmdb: " << a_tablename;
00333         log_DBG_m(dbg_LOW, str.str());
00334         throw ivd_Error(ie_RMDB_ERROR, str.str());
00335     }
00336 }//TableExists

Here is the call graph for this function:

Here is the caller graph for this function:


Generated on Mon Feb 27 18:56:25 2012 for OPENARCHIVE by  doxygen 1.5.6