IODataManager.h
Go to the documentation of this file.00001 #ifndef GAUDIUTILS_IODATAMANAGER_H
00002 #define GAUDIUTILS_IODATAMANAGER_H
00003
00004
00005 #include <map>
00006
00007 #include "GaudiKernel/Service.h"
00008 #include "GaudiUtils/IIODataManager.h"
00009
00010 class IIncidentSvc;
00011
00012
00013
00014
00015 namespace Gaudi {
00016
00017
00018 class IFileCatalog;
00019 class RawDataConnectionEntry;
00020
00029 class IODataManager : public extends1<Service, IIODataManager> {
00030 protected:
00031 typedef const std::string& CSTR;
00032 struct Entry {
00033 std::string type;
00034 IoType ioType;
00035 IDataConnection* connection;
00036 bool keepOpen;
00037 Entry(CSTR tech,bool k, IoType iot,IDataConnection* con)
00038 : type(tech), ioType(iot), connection(con), keepOpen(k) {
00039 }
00040 };
00041 typedef std::map<std::string,Entry*> ConnectionMap;
00042 typedef std::map<std::string, std::string> FidMap;
00043
00045 std::string m_catalogSvcName;
00047 int m_ageLimit;
00049 bool m_useGFAL;
00051 bool m_quarantine;
00052
00054 ConnectionMap m_connectionMap;
00056 SmartIF<IFileCatalog> m_catalog;
00058 FidMap m_fidMap;
00059 StatusCode connectDataIO(int typ, IoType rw, CSTR fn, CSTR technology, bool keep,Connection* con);
00060 StatusCode reconnect(Entry* e);
00061 StatusCode error(CSTR msg, bool rethrow);
00062 StatusCode establishConnection(Connection* con);
00063
00064 SmartIF<IIncidentSvc> m_incSvc;
00065
00066 public:
00067
00073 IODataManager(CSTR nam, ISvcLocator* loc);
00074
00076 virtual ~IODataManager() {}
00077
00079 virtual StatusCode initialize();
00080
00082 virtual StatusCode finalize();
00083
00085 virtual StatusCode connectRead(bool keep_open, Connection* ioDesc);
00087 virtual StatusCode connectWrite(Connection* con,IoType mode=Connection::CREATE,CSTR doctype="UNKNOWN");
00089 virtual StatusCode disconnect(Connection* ioDesc);
00091 virtual Connection* connection(const std::string& dsn) const;
00093 virtual Connections connections(const IInterface* owner) const;
00095 virtual StatusCode read(Connection* ioDesc, void* const data, size_t len);
00097 virtual StatusCode write(Connection* con, const void* data, int len);
00099 virtual long long int seek(Connection* ioDesc, long long int where, int origin);
00100 };
00101 }
00102 #endif // GAUDIUTILS_IODATAMANAGER_H