rm_MediaPool Class Reference
[Resource Manager Database Library]

#include <rmdb.h>

Collaboration diagram for rm_MediaPool:

Collaboration graph
[legend]

List of all members.


Detailed Description

Definition at line 397 of file rmdb.h.


Public Attributes

Int32_t mediaPoolKey
rm_String mediaPoolName
rm_String poolUUIDString
Int32_t mediaFamily
Int32_t mediaPoolType
Int32_t maxMediaAge
Int32_t maxNrReadWrite
Int32_t blockSize
Int16_t numOfVolumes
Int16_t sysVolLocation
Int32_t sizeOfSysVol
Int32_t sizeOfVolume
rm_String partitionUUIDString

Private Member Functions

void Insert ()
void Update ()
void Remove (Int32_t a_mediaPoolKey)
void Select (Int32_t a_mediaPoolKey)
void SelectByName (rm_String a_name)
void SelectByUUID (cmn_UUID_t &a_uuid)
void StartSelectAll ()
void EndSelectAll ()
rm_MediaPoolNext ()
 rm_MediaPool ()
 rm_MediaPool (Int32_t a_mediaPoolKey)
bool operator== (const rm_MediaPool &mp1) const

Private Attributes

 log_CLASSID_m

Friends

class rm_Operator
class rm_Medium

Constructor & Destructor Documentation

rm_MediaPool::rm_MediaPool (  )  [private]

rm_MediaPool::rm_MediaPool ( Int32_t  a_mediaPoolKey  )  [private]

Definition at line 2168 of file librmdb.exx.

References Select().

Here is the call graph for this function:


Member Function Documentation

void rm_MediaPool::Insert (  )  [private]

Definition at line 2176 of file librmdb.exx.

References blockSize, rm_String::cvalue_p, dbg_NORM, errorDesc(), log_DBG_m, log_FUNC_m, MAX, maxMediaAge, maxNrReadWrite, mediaFamily, mediaPoolKey, mediaPoolName, mediaPoolType, NAME, numOfVolumes, partitionUUIDString, poolUUIDString, sizeOfSysVol, sizeOfVolume, SQL_CHECK_M, SQL_NOERROR, SQL_UNIQUEVIOLATION, sysVolLocation, and cmn_UUID_t::ToString().

Referenced by rm_Operator::Add().

02176                           {
02177     log_FUNC_m(Insert);
02178 
02179     EXEC SQL
02180         SET TRANSACTION NAME readWriteTrans;
02181 
02182     Int32_t k = 0;
02183     if ( mediaPoolKey == 0 ) {
02184         EXEC SQL
02185             SELECT TRANSACTION readWriteTrans
02186             MAX(MEDIAPOOLKEY) INTO :k FROM MEDIAPOOL;
02187         mediaPoolKey = k + 1;
02188     }
02189     else {
02190         EXEC SQL
02191             SELECT TRANSACTION readWriteTrans
02192             MEDIAPOOLKEY INTO :k FROM MEDIAPOOL
02193             WHERE MEDIAPOOLKEY = :mediaPoolKey;
02194 
02195         if (SQLCODE == SQL_NOERROR) {
02196             log_DBG_m(dbg_NORM,"key exists");
02197             throw ivd_DBException( SQL_UNIQUEVIOLATION ,"MediumPool Key already exists");
02198         }
02199     }
02200     cmn_UUID_t uuid;
02201     poolUUIDString = uuid.ToString();
02202 
02203     if (partitionUUIDString.empty())  bi1 = -1; else bi1 = 0;
02204 
02205     EXEC SQL
02206         INSERT TRANSACTION readWriteTrans
02207         INTO MEDIAPOOL VALUES(
02208                     :mediaPoolKey,
02209                     :mediaPoolName.cvalue_p,
02210                     :poolUUIDString.cvalue_p,
02211                     :mediaFamily,
02212                     :mediaPoolType,
02213                     :partitionUUIDString.cvalue_p INDICATOR :bi1,
02214                     :maxMediaAge,
02215                     :maxNrReadWrite,
02216                     :blockSize,
02217                     :numOfVolumes,
02218                     :sysVolLocation,
02219                     :sizeOfSysVol,
02220                     :sizeOfVolume
02221 
02222                );
02223 
02224 
02225     string sqlErrDesc = errorDesc(SQLCODE,"Insert record into MediumPool", mediaPoolKey);
02226     SQL_CHECK_M( sqlErrDesc );
02227 
02228 }//  rm_MediaPool::Insert()

Here is the call graph for this function:

Here is the caller graph for this function:

void rm_MediaPool::Update (  )  [private]

Definition at line 2248 of file librmdb.exx.

References blockSize, rm_String::cvalue_p, errorDesc(), log_FUNC_m, maxMediaAge, maxNrReadWrite, mediaFamily, mediaPoolKey, mediaPoolName, mediaPoolType, NAME, numOfVolumes, partitionUUIDString, sizeOfSysVol, sizeOfVolume, SQL_CHECK_M, and sysVolLocation.

Referenced by rm_Operator::Update().

02248                           {
02249     log_FUNC_m(Update);
02250     if (partitionUUIDString.empty())  bi1 = -1; else bi1 = 0;
02251 
02252     EXEC SQL
02253         SET TRANSACTION NAME readWriteTrans;
02254     //ATTENTION!!! Update will not update mediaPoolUUID
02255     EXEC SQL
02256         UPDATE TRANSACTION readWriteTrans
02257         MEDIAPOOL SET
02258                 MEDIAPOOLNAME   = :mediaPoolName.cvalue_p,
02259                 POOLUUID        = POOLUUID,
02260                 MEDIAFAMILY     = :mediaFamily,
02261                 MEDIAPOOLTYPE   = :mediaPoolType,
02262                 PARTITIONUUID   = :partitionUUIDString.cvalue_p INDICATOR :bi1,
02263                 MAXMEDIAAGE     = :maxMediaAge,
02264                 MAXNRREADWRITE  = :maxNrReadWrite,
02265                 BLOCKSIZE       = :blockSize,
02266                 NUMOFVOLUMES    = :numOfVolumes,
02267                 IDXOFSYSVOL     = :sysVolLocation,
02268                 SIZEOFSYSVOL    = :sizeOfSysVol,
02269                 SIZEOFVOLUME    = :sizeOfVolume
02270         WHERE MEDIAPOOLKEY = :mediaPoolKey;
02271 
02272     string sqlErrDesc = errorDesc(SQLCODE,"Update MediumPool record", mediaPoolKey);
02273     SQL_CHECK_M( sqlErrDesc );
02274 
02275 }//  rm_MediaPool::Update()

Here is the call graph for this function:

Here is the caller graph for this function:

void rm_MediaPool::Remove ( Int32_t  a_mediaPoolKey  )  [private]

Definition at line 2232 of file librmdb.exx.

References errorDesc(), log_FUNC_m, NAME, and SQL_CHECK_M.

Referenced by rm_Operator::RemoveMediaPool().

02232                                                 {
02233     log_FUNC_m(Remove);
02234     EXEC SQL
02235         SET TRANSACTION NAME readWriteTrans;
02236 
02237     EXEC SQL
02238         DELETE TRANSACTION readWriteTrans
02239         FROM MEDIAPOOL WHERE MEDIAPOOLKEY = :a_mediaPoolKey;
02240 
02241     string sqlErrDesc = errorDesc(SQLCODE,"Remove MediumPool record", a_mediaPoolKey);
02242     SQL_CHECK_M( sqlErrDesc );
02243 
02244 }//  rm_MediaPool::Remove

Here is the call graph for this function:

Here is the caller graph for this function:

void rm_MediaPool::Select ( Int32_t  a_mediaPoolKey  )  [private]

Definition at line 2280 of file librmdb.exx.

References blockSize, errorDesc(), ivd_UUID_STR_SIZE_d, log_FUNC_m, maxMediaAge, maxNrReadWrite, mediaFamily, mediaPoolKey, mediaPoolName, mediaPoolType, NAME, numOfVolumes, partitionUUIDString, poolUUIDString, rmdb_MAX_MEDIAPOOLNAME, sizeOfSysVol, sizeOfVolume, SQL_CHECKREAD_M, SQL_NOERROR, and sysVolLocation.

Referenced by rm_Operator::AllocateAdmin(), rm_MediaPool(), and rm_Operator::SelectMediaPool().

02280                                                 {
02281 
02282     log_FUNC_m(Select);
02283 
02284     EXEC SQL
02285         SET TRANSACTION NAME readTrans
02286             READ ONLY
02287             ISOLATION LEVEL READ COMMITTED;
02288 
02289     char mediaPoolNameVal[rmdb_MAX_MEDIAPOOLNAME];
02290     char poolUUIDStringVal[ivd_UUID_STR_SIZE_d + 1];
02291     char partitionUUIDStringVal[ivd_UUID_STR_SIZE_d + 1];
02292 
02293     EXEC SQL
02294         SELECT TRANSACTION readTrans
02295         * INTO
02296                 :mediaPoolKey,
02297                 :mediaPoolNameVal,
02298                 :poolUUIDStringVal,
02299                 :mediaFamily,
02300                 :mediaPoolType,
02301                 :partitionUUIDStringVal,
02302                 :maxMediaAge,
02303                 :maxNrReadWrite,
02304                 :blockSize,
02305                 :numOfVolumes,
02306                 :sysVolLocation,
02307                 :sizeOfSysVol,
02308                 :sizeOfVolume
02309         FROM MEDIAPOOL WHERE MEDIAPOOLKEY = :a_mediaPoolKey;
02310 
02311     if (SQLCODE == SQL_NOERROR) {
02312         mediaPoolName = mediaPoolNameVal;
02313         poolUUIDString = poolUUIDStringVal;
02314         partitionUUIDString = partitionUUIDStringVal;
02315     };
02316 
02317     string sqlErrDesc = errorDesc(SQLCODE,"Select MediumPool record: ", mediaPoolKey);
02318     SQL_CHECKREAD_M( sqlErrDesc );
02319 }//  rm_MediaPool::Select

Here is the call graph for this function:

Here is the caller graph for this function:

void rm_MediaPool::SelectByName ( rm_String  a_name  )  [private]

Definition at line 2324 of file librmdb.exx.

References blockSize, rm_String::cvalue_p, errorDesc(), ivd_UUID_STR_SIZE_d, log_FUNC_m, maxMediaAge, maxNrReadWrite, mediaFamily, mediaPoolKey, mediaPoolName, mediaPoolType, NAME, numOfVolumes, partitionUUIDString, poolUUIDString, rmdb_MAX_MEDIAPOOLNAME, sizeOfSysVol, sizeOfVolume, SQL_CHECKREAD_M, SQL_NOERROR, and sysVolLocation.

Referenced by rm_Operator::Add(), rm_Operator::RemoveMediaPool(), rm_Operator::SelectMediaPool(), and rm_Operator::Update().

02324                                                 {
02325     log_FUNC_m(SelectByName);
02326 
02327     EXEC SQL
02328         SET TRANSACTION NAME readTrans
02329             READ ONLY
02330             ISOLATION LEVEL READ COMMITTED;
02331 
02332     char mediaPoolNameVal[rmdb_MAX_MEDIAPOOLNAME];
02333     char poolUUIDStringVal[ivd_UUID_STR_SIZE_d + 1];
02334     char partitionUUIDStringVal[ivd_UUID_STR_SIZE_d + 1];
02335 
02336     EXEC SQL
02337         SELECT TRANSACTION readTrans
02338         * INTO
02339                 :mediaPoolKey,
02340                 :mediaPoolNameVal,
02341                 :poolUUIDStringVal,
02342                 :mediaFamily,
02343                 :mediaPoolType,
02344                 :partitionUUIDStringVal,
02345                 :maxMediaAge,
02346                 :maxNrReadWrite,
02347                 :blockSize,
02348                 :numOfVolumes,
02349                 :sysVolLocation,
02350                 :sizeOfSysVol,
02351                 :sizeOfVolume
02352          FROM MEDIAPOOL WHERE MEDIAPOOLNAME = :a_name.cvalue_p;
02353 
02354     if (SQLCODE == SQL_NOERROR) {
02355         mediaPoolName = mediaPoolNameVal;
02356         poolUUIDString = poolUUIDStringVal;
02357         partitionUUIDString = partitionUUIDStringVal;
02358     };
02359     string sqlErrDesc = errorDesc(SQLCODE,"Select MediumPool record by Name: "+ a_name);
02360     SQL_CHECKREAD_M( sqlErrDesc );
02361 }

Here is the call graph for this function:

Here is the caller graph for this function:

void rm_MediaPool::SelectByUUID ( cmn_UUID_t a_uuid  )  [private]

Definition at line 2364 of file librmdb.exx.

References blockSize, rm_String::cvalue_p, errorDesc(), ivd_UUID_STR_SIZE_d, log_FUNC_m, maxMediaAge, maxNrReadWrite, mediaFamily, mediaPoolKey, mediaPoolName, mediaPoolType, NAME, numOfVolumes, partitionUUIDString, poolUUIDString, rmdb_MAX_MEDIAPOOLNAME, sizeOfSysVol, sizeOfVolume, SQL_CHECKREAD_M, SQL_NOERROR, sysVolLocation, and cmn_UUID_t::ToString().

Referenced by rm_Operator::SelectMediaPoolbyUUID().

02364                                                   {
02365     log_FUNC_m(SelectByUUID);
02366 
02367     EXEC SQL
02368         SET TRANSACTION NAME readTrans
02369             READ ONLY
02370             ISOLATION LEVEL READ COMMITTED;
02371 
02372     char mediaPoolNameVal[rmdb_MAX_MEDIAPOOLNAME];
02373     char poolUUIDStringVal[ivd_UUID_STR_SIZE_d + 1];
02374     char partitionUUIDStringVal[ivd_UUID_STR_SIZE_d + 1];
02375 
02376     rm_String uuid(ivd_UUID_STR_SIZE_d);
02377     uuid = a_uuid.ToString();
02378 
02379     EXEC SQL
02380         SELECT TRANSACTION readTrans
02381         * INTO
02382                         :mediaPoolKey,
02383                         :mediaPoolNameVal,
02384                         :poolUUIDStringVal,
02385                         :mediaFamily,
02386                         :mediaPoolType,
02387                         :partitionUUIDStringVal,
02388                         :maxMediaAge,
02389                         :maxNrReadWrite,
02390                         :blockSize,
02391                         :numOfVolumes,
02392                         :sysVolLocation,
02393                         :sizeOfSysVol,
02394                         :sizeOfVolume
02395                  FROM MEDIAPOOL WHERE POOLUUID = :uuid.cvalue_p;
02396 
02397     if (SQLCODE == SQL_NOERROR) {
02398         mediaPoolName = mediaPoolNameVal;
02399         poolUUIDString = poolUUIDStringVal;
02400         partitionUUIDString = partitionUUIDStringVal;
02401     };
02402     string sqlErrDesc = errorDesc(SQLCODE, "Selecting MediumPool record by Name. Search String was:" , uuid);
02403     SQL_CHECKREAD_M( sqlErrDesc );
02404 }

Here is the call graph for this function:

Here is the caller graph for this function:

void rm_MediaPool::StartSelectAll (  )  [private]

Definition at line 2407 of file librmdb.exx.

References errorDesc(), cmn_Mutex::Lock(), log_ERR_m, log_FUNC_m, NAME, SQL_NOERROR, and cmn_Mutex::Unlock().

Referenced by rm_Operator::SelectAllMediaPools().

02407                                  {
02408     log_FUNC_m(StartSelectAll);
02409 
02410     g_mediaPoolCursor_x.Lock();
02411     EXEC SQL
02412         SET TRANSACTION NAME readTrans
02413             READ ONLY
02414             ISOLATION LEVEL READ COMMITTED;
02415 
02416     EXEC SQL
02417         OPEN TRANSACTION readTrans
02418         SELECT_ALL_MEDIAPOOL;
02419     if ( SQLCODE != SQL_NOERROR ) {
02420         string sqlErrDesc = errorDesc(SQLCODE, "Opening SELECT_ALL_MEDIAPOOL Cursor failed");
02421         log_ERR_m(sqlErrDesc);
02422         g_mediaPoolCursor_x.Unlock();
02423         throw ivd_DBException( SQLCODE ,sqlErrDesc, true);
02424     }
02425 }

Here is the call graph for this function:

Here is the caller graph for this function:

void rm_MediaPool::EndSelectAll (  )  [private]

Definition at line 2427 of file librmdb.exx.

References errorDesc(), log_FUNC_m, SQL_CHECKREAD_M, and cmn_Mutex::Unlock().

02427                                {
02428     log_FUNC_m(EndSelectAll);
02429 
02430     EXEC SQL
02431         CLOSE SELECT_ALL_MEDIAPOOL;
02432     g_mediaPoolCursor_x.Unlock();
02433 
02434     string sqlErrDesc = errorDesc(SQLCODE, "CLOSE SELECT_ALL_MEDIAPOOL" );
02435     SQL_CHECKREAD_M( sqlErrDesc );
02436 
02437 }

Here is the call graph for this function:

rm_MediaPool & rm_MediaPool::Next (  )  [private]

Definition at line 2439 of file librmdb.exx.

References blockSize, errorDesc(), ivd_UUID_STR_SIZE_d, log_FUNC_m, maxMediaAge, maxNrReadWrite, mediaFamily, mediaPoolKey, mediaPoolName, mediaPoolType, numOfVolumes, partitionUUIDString, poolUUIDString, rmdb_MAX_MEDIAPOOLNAME, sizeOfSysVol, sizeOfVolume, SQL_CHECKREAD_M, SQL_NOERROR, sysVolLocation, and cmn_Mutex::Unlock().

Referenced by rm_Operator::SelectAllMediaPools().

02439                                  {
02440     log_FUNC_m(Next);
02441 
02442     char mediaPoolNameVal[rmdb_MAX_MEDIAPOOLNAME];
02443     char poolUUIDStringVal[ivd_UUID_STR_SIZE_d + 1];
02444     char partitionUUIDStringVal[ivd_UUID_STR_SIZE_d + 1];
02445 
02446     EXEC SQL
02447         FETCH SELECT_ALL_MEDIAPOOL
02448             INTO
02449                 :mediaPoolKey,
02450                 :mediaPoolNameVal,
02451                 :poolUUIDStringVal,
02452                 :mediaFamily,
02453                 :mediaPoolType,
02454                 :partitionUUIDStringVal,
02455                 :maxMediaAge,
02456                 :maxNrReadWrite,
02457                 :blockSize,
02458                 :numOfVolumes,
02459                 :sysVolLocation,
02460                 :sizeOfSysVol,
02461                 :sizeOfVolume;
02462 
02463     if (SQLCODE == SQL_NOERROR) {
02464         mediaPoolName = mediaPoolNameVal;
02465         poolUUIDString = poolUUIDStringVal;
02466         partitionUUIDString = partitionUUIDStringVal;
02467     }
02468     else {
02469         int fetchCode = SQLCODE;
02470         EXEC SQL
02471             CLOSE SELECT_ALL_MEDIAPOOL;
02472         g_mediaPoolCursor_x.Unlock();
02473         SQLCODE = fetchCode;
02474         string sqlErrDesc = errorDesc(fetchCode, "CLOSE SELECT_ALL_MEDIAPOOL" );
02475         SQL_CHECKREAD_M( sqlErrDesc );
02476     };
02477 
02478     return *this;
02479 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool rm_MediaPool::operator== ( const rm_MediaPool mp1  )  const [inline, private]

Definition at line 459 of file rmdb.h.

References mediaPoolKey, mediaPoolName, and mediaPoolType.

00459                                                    {
00460         return (    ( mediaPoolKey == mp1.mediaPoolKey)      &&
00461                     ( mediaPoolType == mp1.mediaPoolType)    &&
00462                     ( mediaPoolName == mp1.mediaPoolName)    );
00463     };


Friends And Related Function Documentation

friend class rm_Operator [friend]

Definition at line 399 of file rmdb.h.

friend class rm_Medium [friend]

Definition at line 400 of file rmdb.h.


Member Data Documentation

Definition at line 463 of file rmdb.h.


The documentation for this class was generated from the following files:

Generated on Mon Feb 27 19:46:59 2012 for OPENARCHIVE by  doxygen 1.5.6