Private Locker object used by TDbiCascader. More...
Public Member Functions | |
Lock (TDbiStatement *stmtDB, const string &seqnoTable, const string &dataTable) | |
~Lock () | |
Purpose: Dtor: Clear lock. | |
Bool_t | IsLocked () const |
Private Member Functions | |
void | SetLock (Bool_t setting=kTRUE) |
Private Attributes | |
TDbiStatement * | fStmt |
string | fSeqnoTableName |
string | fDataTableName |
Bool_t | fLocked |
Private Locker object used by TDbiCascader.
Definition at line 133 of file TDbiCascader.hxx.
TDbiCascader::Lock::Lock | ( | TDbiStatement * | stmtDB, | |
const string & | seqnoTable, | |||
const string & | dataTable | |||
) |
Purpose: Ctor: Create a lock on a table accessed via connection. (will be released by dtor) Arguments: stmtDB in TDbiStatement (given to Lock).
Definition at line 583 of file TDbiCascader.cxx.
References fStmt, SetLock(), and SK_DBI_Severe.
00583 : 00584 fStmt(stmtDB), 00585 fSeqnoTableName(seqnoTable), 00586 fDataTableName(dataTable), 00587 fLocked(kFALSE) 00588 { 00589 00590 00591 if ( ! fStmt ) { 00592 SK_DBI_Severe( "Cannot obtain statment to set lock" << " "); 00593 return; 00594 } 00595 00596 this->SetLock(kTRUE); 00597 00598 } //.....................................................................
TDbiCascader::Lock::~Lock | ( | ) |
Bool_t TDbiCascader::Lock::IsLocked | ( | ) | const [inline] |
Definition at line 139 of file TDbiCascader.hxx.
References fLocked.
Referenced by TDbiCascader::ReserveNextSeqNo().
00139 { return fLocked; }
void TDbiCascader::Lock::SetLock | ( | Bool_t | setting = kTRUE |
) | [private] |
Purpose: Set or clear lock. Arguments: setting in Required setting of lock. [default kTRUE] Program Notes:- ============= No-op if locked otherwise use the LOCK TABLES command.
Definition at line 626 of file TDbiCascader.cxx.
References TDbiStatement::ExecuteUpdate(), fDataTableName, fLocked, fSeqnoTableName, fStmt, TDbiStatement::GetExceptionLog(), TDbiExceptionLog::IsEmpty(), TDbiStatement::PrintExceptions(), and SK_DBI_Log.
Referenced by Lock(), and ~Lock().
00626 { 00627 00628 00629 if ( setting == fLocked || ! fStmt ) return; 00630 00631 string sql; 00632 00633 if ( setting ) { 00634 sql = "LOCK TABLES "; 00635 sql += fSeqnoTableName + " WRITE"; 00636 if ( fDataTableName != "" ) sql += ", " + fDataTableName + "VLD WRITE"; 00637 } 00638 else { 00639 sql = "UNLOCK TABLES;"; 00640 } 00641 SK_DBI_Log( "Lock requested: " << setting 00642 << " issuing lock command: " << sql << " "); 00643 fStmt->ExecuteUpdate(sql.c_str()); 00644 if ( fStmt->GetExceptionLog().IsEmpty() ) fLocked = setting; 00645 fStmt->PrintExceptions(); 00646 00647 }
string TDbiCascader::Lock::fDataTableName [private] |
Definition at line 147 of file TDbiCascader.hxx.
Referenced by SetLock().
Bool_t TDbiCascader::Lock::fLocked [private] |
Definition at line 148 of file TDbiCascader.hxx.
Referenced by IsLocked(), and SetLock().
string TDbiCascader::Lock::fSeqnoTableName [private] |
Definition at line 146 of file TDbiCascader.hxx.
Referenced by SetLock().
TDbiStatement* TDbiCascader::Lock::fStmt [private] |
Definition at line 145 of file TDbiCascader.hxx.