All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
IODataManager.h
Go to the documentation of this file.
1 #ifndef GAUDIUTILS_IODATAMANAGER_H
2 #define GAUDIUTILS_IODATAMANAGER_H
3 
4 // C++ include files
5 #include <map>
6 // Framework include files
7 #include "GaudiKernel/Service.h"
8 #include "GaudiUtils/IIODataManager.h"
9 
10 class IIncidentSvc;
11 
12 /*
13  * LHCb namespace declaration
14  */
15 namespace Gaudi {
16 
17  // Forward declarations
18  class IFileCatalog;
19  class RawDataConnectionEntry;
20 
29  class IODataManager : public extends1<Service, IIODataManager> {
30  protected:
31  typedef const std::string& CSTR;
32  struct Entry final {
33  std::string type;
34  IoType ioType;
36  bool keepOpen;
37  Entry(CSTR tech,bool k, IoType iot,IDataConnection* con)
38  : type(tech), ioType(iot), connection(con), keepOpen(k) {
39  }
40  };
41  typedef std::map<std::string,Entry*> ConnectionMap;
42  typedef std::map<std::string, std::string> FidMap;
43 
45  std::string m_catalogSvcName;
49  bool m_useGFAL;
55 
57  ConnectionMap m_connectionMap;
61  FidMap m_fidMap;
62  StatusCode connectDataIO(int typ, IoType rw, CSTR fn, CSTR technology, bool keep,Connection* con);
64  StatusCode error(CSTR msg, bool rethrow);
65  StatusCode establishConnection(Connection* con);
66 
68 
69  public:
70 
76  IODataManager(CSTR nam, ISvcLocator* loc);
77 
79  ~IODataManager() override = default;
80 
82  StatusCode initialize() override;
83 
85  StatusCode finalize() override;
86 
88  StatusCode connectRead(bool keep_open, Connection* ioDesc) override;
90  StatusCode connectWrite(Connection* con,IoType mode=Connection::CREATE,CSTR doctype="UNKNOWN") override;
92  StatusCode disconnect(Connection* ioDesc) override;
94  Connection* connection(const std::string& dsn) const override;
96  Connections connections(const IInterface* owner) const override;
98  StatusCode read(Connection* ioDesc, void* const data, size_t len) override;
100  StatusCode write(Connection* con, const void* data, int len) override;
102  long long int seek(Connection* ioDesc, long long int where, int origin) override;
103  };
104 } // End namespace Gaudi
105 #endif // GAUDIUTILS_IODATAMANAGER_H
StatusCode finalize() override
IService implementation: finalize the service.
Small smart pointer class with automatic reference counting for IInterface.
Definition: IConverter.h:14
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
int m_ageLimit
Property: Age limit.
Definition: IODataManager.h:47
bool m_useGFAL
Property: Flag for auto gfal data access.
Definition: IODataManager.h:49
std::map< std::string, Entry * > ConnectionMap
Definition: IODataManager.h:41
StatusCode disconnect(Connection *ioDesc) override
Release data stream.
SmartIF< IIncidentSvc > m_incSvc
Definition: IODataManager.h:67
Entry(CSTR tech, bool k, IoType iot, IDataConnection *con)
Definition: IODataManager.h:37
StatusCode establishConnection(Connection *con)
~IODataManager() override=default
Standard destructor.
std::string m_catalogSvcName
Property: Name of the file catalog service.
Definition: IODataManager.h:45
StatusCode error(CSTR msg, bool rethrow)
Small routine to issue exceptions.
bool m_disablePFNWarning
Property DisablePFNWarning: if set to True will not report when a file is opened by it's physical nam...
Definition: IODataManager.h:54
StatusCode read(Connection *ioDesc, void *const data, size_t len) override
Read raw byte buffer from input stream.
std::map< std::string, std::string > FidMap
Definition: IODataManager.h:42
Connection * connection(const std::string &dsn) const override
Retrieve known connection.
StatusCode initialize() override
IService implementation: initialize the service.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
SmartIF< IFileCatalog > m_catalog
Reference to file catalog.
Definition: IODataManager.h:59
Definition of the basic interface.
Definition: IInterface.h:234
StatusCode write(Connection *con, const void *data, int len) override
Write raw byte buffer to output stream.
Definition: IODataManager.h:32
StatusCode connectWrite(Connection *con, IoType mode=Connection::CREATE, CSTR doctype="UNKNOWN") override
Open data stream in write mode.
bool m_quarantine
Property: Flag if unaccessible files should be quarantines in job.
Definition: IODataManager.h:51
std::string type
Definition: IODataManager.h:33
ABC describing basic data connection.
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
ConnectionMap m_connectionMap
Map with I/O descriptors.
Definition: IODataManager.h:57
IDataConnection * connection
Definition: IODataManager.h:35
const std::string & CSTR
Definition: IODataManager.h:31
StatusCode connectDataIO(int typ, IoType rw, CSTR fn, CSTR technology, bool keep, Connection *con)
StatusCode connectRead(bool keep_open, Connection *ioDesc) override
Open data stream in read mode.
bool keepOpen
Definition: IODataManager.h:36
Connections connections(const IInterface *owner) const override
Get connection by owner instance (0=ALL)
long long int seek(Connection *ioDesc, long long int where, int origin) override
Seek on the file described by ioDesc. Arguments as in ::seek()
Helper functions to set/get the application return code.
Definition: __init__.py:1
StatusCode reconnect(Entry *e)
IODataManager(CSTR nam, ISvcLocator *loc)
the incident service
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:21
IoType ioType
Definition: IODataManager.h:34
FidMap m_fidMap
Map of FID to PFN.
Definition: IODataManager.h:61