132 lines
3.8 KiB
C++
132 lines
3.8 KiB
C++
// This code implementation is the intellectual property of
|
|
// the GEANT4 collaboration.
|
|
//
|
|
// By copying, distributing or modifying the Program (or any work
|
|
// based on the Program) you indicate your acceptance of this statement,
|
|
// and all its terms.
|
|
//
|
|
// $Id: G4TransactionManager.hh,v 1.7 2000/12/05 14:40:03 morita Exp $
|
|
// GEANT4 tag $Name: geant4-03-00 $
|
|
//
|
|
|
|
// class description:
|
|
//
|
|
// This is a class for handling database transaction
|
|
// for G4PersistencyManager.
|
|
// To be used by G4PersistencyManager only.
|
|
//
|
|
|
|
// History:
|
|
// 99.11.25 Y.Morita Initial version
|
|
|
|
#ifndef G4TransactionManager_HH
|
|
#define G4TransactionManager_HH 1
|
|
|
|
#include "globals.hh"
|
|
#include "G4VPersistentSubMan.hh"
|
|
|
|
// forward declarations
|
|
class G4PersistentRunMan;
|
|
class G4PersistentEventMan;
|
|
class G4PersistentHitMan;
|
|
class G4PersistentDigitMan;
|
|
class G4PersistentGeomMan;
|
|
|
|
#include "HepODBMS/clustering/HepDbApplication.h"
|
|
|
|
#include "G4DatabaseTypes.hh"
|
|
|
|
class G4TransactionManager
|
|
: public G4VPersistentSubMan
|
|
{
|
|
friend class G4PersistencyManager;
|
|
|
|
protected: // with description
|
|
G4TransactionManager(G4PersistentRunMan* runMan,
|
|
G4PersistentEventMan* eventMan,
|
|
G4PersistentHitMan* hitMan,
|
|
G4PersistentDigitMan* digitMan,
|
|
G4PersistentGeomMan* geomMan);
|
|
~G4TransactionManager();
|
|
// Contructor and Destructor.
|
|
|
|
private:
|
|
HepDbApplication* f_dbApp;
|
|
|
|
G4bool f_isSustained;
|
|
ETypeOfDB f_whichDB;
|
|
ETransactionMode f_transactionMode;
|
|
ETypeOfDB f_currentDB;
|
|
|
|
HepDatabaseRef f_RunDB;
|
|
HepDatabaseRef f_EventDB;
|
|
HepDatabaseRef f_HitDB;
|
|
HepDatabaseRef f_DigitDB;
|
|
HepDatabaseRef f_GeomDB;
|
|
|
|
G4String f_RunDBName;
|
|
G4String f_EventDBName;
|
|
G4String f_HitDBName;
|
|
G4String f_DigitDBName;
|
|
G4String f_GeomDBName;
|
|
|
|
HepContainerRef f_RunContainer;
|
|
HepContainerRef f_EventContainer;
|
|
HepContainerRef f_HitContainer;
|
|
HepContainerRef f_DigitContainer;
|
|
HepContainerRef f_GeomContainer;
|
|
|
|
const G4String f_RunContainerName;
|
|
const G4String f_EventContainerName;
|
|
const G4String f_HitContainerName;
|
|
const G4String f_DigitContainerName;
|
|
const G4String f_GeomContainerName;
|
|
|
|
private:
|
|
// interface with PersistencyManager
|
|
inline HepDbApplication* DbApp()
|
|
{ return f_dbApp; }
|
|
G4bool StartTransaction( ETypeOfDB dbtype,
|
|
ETransactionMode dbmode,
|
|
G4bool isSustained);
|
|
G4bool Commit(ETypeOfDB dbtype, G4bool isSustained);
|
|
G4bool Abort(ETypeOfDB dbtype, G4bool isSustained);
|
|
inline G4bool SustainedMode()
|
|
{ return f_isSustained; }
|
|
|
|
private:
|
|
// interface with PersistencyManager
|
|
G4bool SelectDB(ETypeOfDB dbtype, G4String dbname, G4bool updateMode);
|
|
|
|
G4String DBName(ETypeOfDB dbtype);
|
|
G4String ContainerName(ETypeOfDB dbtype);
|
|
HepDatabaseRef DBref(ETypeOfDB dbtype);
|
|
HepContainerRef ContainerRef(ETypeOfDB dbtype);
|
|
|
|
G4String DBContainerName(ETypeOfDB dbtype);
|
|
|
|
private:
|
|
// for internal use
|
|
ESustainedState CheckState(ETypeOfDB dbtype, G4bool isSustained);
|
|
G4bool DoStart(ETypeOfDB dbtype,
|
|
ETransactionMode dbmode,
|
|
G4bool isSustained);
|
|
void SetDBName(ETypeOfDB dbtype, G4String dbname);
|
|
void SetDB(ETypeOfDB dbtype, HepDatabaseRef aDB);
|
|
void SetContainer(ETypeOfDB dbtype, HepContainerRef aCont);
|
|
void SendDB(ETypeOfDB dbtype);
|
|
void SendContainer(ETypeOfDB dbtype);
|
|
|
|
// Utility Classes
|
|
private:
|
|
G4PersistentRunMan* f_pRunMan;
|
|
G4PersistentEventMan* f_pEventMan;
|
|
G4PersistentHitMan* f_pHitMan;
|
|
G4PersistentDigitMan* f_pDigitMan;
|
|
G4PersistentGeomMan* f_pGeomMan;
|
|
};
|
|
|
|
|
|
#endif
|
|
|