| The Gaudi Framework v32r1 (f65d50dc)

IIODataManager.h
Go to the documentation of this file.
1 #ifndef GAUDIUTILS_IIODATAMANAGER_H
2 #define GAUDIUTILS_IIODATAMANAGER_H
3
4 // Framework include files
5 #include "GaudiKernel/IInterface.h"
6
7 // C++ include files
8 #include <string>
9 #include <vector>
10
11 /*
12 * LHCb namespace declaration
13 */
14 namespace Gaudi {
15
24 class GAUDI_API IDataConnection {
25 protected:
27 std::string m_name;
29 std::string m_fid;
31 std::string m_pfn;
33 int m_age = 0;
35 const IInterface* m_owner = nullptr;
36
37 public:
39 enum IoType { READ = 1 << 1, UPDATE = 1 << 2, CREATE = 1 << 3, RECREATE = ( 1 << 4 ) + ( 1 << 3 ) };
41 enum IoStatus { BAD_DATA_CONNECTION = 4 };
42
43 public:
45 IDataConnection( const IInterface* own, std::string nam ) : m_name( std::move( nam ) ), m_owner( own ) {}
47 virtual ~IDataConnection() = default;
49 const std::string& name() const { return m_name; }
51 void setFID( std::string fid ) { m_fid = std::move( fid ); }
53 const std::string& fid() const { return m_fid; }
55 const std::string& pfn() const { return m_pfn; }
57 void setPFN( std::string fn ) { m_pfn = std::move( fn ); }
59 int ageFile() { return ++m_age; }
61 void resetAge() { m_age = 0; }
63 int age() const { return m_age; }
65 const IInterface* owner() const { return m_owner; }
67 virtual StatusCode connectRead() = 0;
69 virtual StatusCode connectWrite( IoType type ) = 0;
71 virtual StatusCode disconnect() = 0;
73 virtual bool isConnected() const = 0;
75 virtual StatusCode read( void* const data, size_t len ) = 0;
77 virtual StatusCode write( const void* data, int len ) = 0;
79 virtual long long int seek( long long int where, int origin ) = 0;
80 };
81
88 class GAUDI_API IIODataManager : virtual public IInterface {
89 public:
91 DeclareInterfaceID( IIODataManager, 2, 0 );
92
94 typedef IDataConnection Connection;
95 typedef std::vector<Connection*> Connections;
96 typedef Connection::IoType IoType;
97 enum FileType { UNKNOWN = 1, PFN, LFN, FID };
98
100 virtual StatusCode connectRead( bool keep_open, IDataConnection* con ) = 0;
102 virtual StatusCode connectWrite( IDataConnection* con, IoType mode = Connection::CREATE,
103 const std::string& doctype = "UNKNOWN" ) = 0;
105 virtual StatusCode disconnect( IDataConnection* con ) = 0;
107 virtual Connection* connection( const std::string& dsn ) const = 0;
109 virtual Connections connections( const IInterface* owner ) const = 0;
111 virtual StatusCode read( IDataConnection* con, void* const data, size_t len ) = 0;
113 virtual StatusCode write( IDataConnection* con, const void* data, int len ) = 0;
115 virtual long long int seek( IDataConnection* con, long long int where, int origin ) = 0;
116 };
117 } // End namespace Gaudi
118 #endif // GAUDIUTILS_IIODATAMANAGER_H
Gaudi::IDataConnection::m_name
std::string m_name
Connection name/identifier.
Definition: IIODataManager.h:27
Gaudi::IDataConnection::IoType
IoType
I/O Connection types.
Definition: IIODataManager.h:39
Gaudi::IDataConnection::IoStatus
IoStatus
Status Code on bad file connection.
Definition: IIODataManager.h:41
Gaudi::IDataConnection::IDataConnection
IDataConnection(const IInterface *own, std::string nam)
Standard constructor.
Definition: IIODataManager.h:45
Gaudi::IDataConnection::m_fid
std::string m_fid
File ID of the connection.
Definition: IIODataManager.h:29
Gaudi::IIODataManager::FileType
FileType
Definition: IIODataManager.h:97
Gaudi::IIODataManager::Connections
std::vector< Connection * > Connections
Definition: IIODataManager.h:95
std
STL namespace.
Gaudi::IDataConnection::fid
const std::string & fid() const
Access file id.
Definition: IIODataManager.h:53
hivetimeline.read
def read(f, regex='.*', skipevents=0)
Definition: hivetimeline.py:22
Gaudi::IDataConnection::owner
const IInterface * owner() const
Owner instance.
Definition: IIODataManager.h:65
Gaudi::IIODataManager::IoType
Connection::IoType IoType
Definition: IIODataManager.h:96
std::string
STL class.
Gaudi::IDataConnection::pfn
const std::string & pfn() const
Access physical file name.
Definition: IIODataManager.h:55
Gaudi::IDataConnection::m_pfn
std::string m_pfn
Physical file name of the connection.
Definition: IIODataManager.h:31
Gaudi::IDataConnection::setPFN
void setPFN(std::string fn)
Set physical file name.
Definition: IIODataManager.h:57
Gaudi::IDataConnection::ageFile
int ageFile()
Increase age of I/O source.
Definition: IIODataManager.h:59
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
IInterface
Definition of the basic interface.
Definition: IInterface.h:244
gaudirun.type
type
Definition: gaudirun.py:142
Gaudi::IIODataManager::Connection
IDataConnection Connection
Connection type definition.
Definition: IIODataManager.h:94
Gaudi::IDataConnection::name
const std::string & name() const
Connection name.
Definition: IIODataManager.h:49
Io::READ
Definition: IFileMgr.h:27
std::move
T move(T... args)
DeclareInterfaceID
#define DeclareInterfaceID(iface, major, minor)
Macro to declare the interface ID when using the new mechanism of extending and implementing interfac...
Definition: IInterface.h:13
Gaudi::IDataConnection::age
int age() const
Access age counter.
Definition: IIODataManager.h:63
Gaudi::IDataConnection::setFID
void setFID(std::string fid)
Set file ID.
Definition: IIODataManager.h:51
std::vector
STL class.
Gaudi::IDataConnection
ABC describing basic data connection.
Definition: IIODataManager.h:24
Io::CREATE
Definition: IFileMgr.h:31
Gaudi::IDataConnection::resetAge
void resetAge()
Reset age.
Definition: IIODataManager.h:61
Gaudi::IIODataManager
Definition: IIODataManager.h:88
Io::UNKNOWN
Definition: IFileMgr.h:146
GAUDI_API
#define GAUDI_API
Definition: Kernel.h:71
IInterface.h
Gaudi
Header file for std:chrono::duration-based Counters.
Definition: __init__.py:1