Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FileMgr.h
Go to the documentation of this file.
1 // FileMgr.h
3 // Manages all file open/reopen/close
4 // implementation of IFileMgr
5 // Author: C.Leggett
7 
8 #ifndef GAUDISVC_FILEMGR_H
9 #define GAUDISVC_FILEMGR_H 1
10 
11 #include "GaudiKernel/ClassID.h"
12 #include "GaudiKernel/IFileMgr.h"
14 #include "GaudiKernel/Service.h"
15 #include "GaudiKernel/StatusCode.h"
16 
17 #include "POSIXFileHandler.h"
18 #include "RootFileHandler.h"
19 
20 #include "boost/optional.hpp"
21 
22 #include <list>
23 #include <map>
24 #include <string>
25 
26 using Io::Fd;
27 using Io::FileAttr;
28 using Io::FileHdlr;
29 using Io::IoFlag;
30 using Io::IoFlags;
31 using Io::IoTech;
32 
33 class RootFileHandler;
34 class POSIXFileHandler;
35 
36 class FileMgr : public extends<Service, IFileMgr, IIncidentListener> {
37 public:
38  using extends::extends;
39  ~FileMgr() override;
40 
41  StatusCode initialize() override;
42  StatusCode finalize() override;
43 
44  void handle( const Incident& ) override;
45 
46  StatusCode regHandler( FileHdlr ) override;
47  StatusCode hasHandler( const IoTech& ) const override;
48 
49  StatusCode deregHandler( const IoTech& ) override;
50 
51  StatusCode getHandler( const IoTech&, FileHdlr& ) const override;
52  StatusCode getHandler( const std::string&, FileHdlr& ) const override;
53 
54  int getFileAttr( const std::string&, std::vector<const FileAttr*>& ) const override;
55  StatusCode getFileAttr( const Fd, const FileAttr*& ) const override;
56  StatusCode getFileAttr( void*, const FileAttr*& ) const override;
57 
58  void listHandlers() const override;
59  void listFiles() const override;
60  virtual void listActions() const; // does not override...
61  virtual void listSuppression() const; // does not override...
62 
63  int getFiles( std::vector<std::string>&, bool onlyOpen = true ) const override;
64  int getFiles( std::vector<const Io::FileAttr*>&, bool onlyOpen = true ) const override;
65  int getFiles( const Io::IoTech&, std::vector<std::string>&, bool onlyOpen = true ) const override;
66  int getFiles( const Io::IoTech&, std::vector<const Io::FileAttr*>&, bool onlyOpen = true ) const override;
67  int getFiles( const Io::IoTech&, const Io::IoFlags&, std::vector<std::string>&, bool onlyOpen = true ) const override;
69  bool onlyOpen = true ) const override;
70 
71  int getFd( std::vector<Fd>& ) const override;
72  int getFd( const Io::IoTech&, std::vector<Io::Fd>& ) const override;
73  int getFd( const Io::IoTech&, const Io::IoFlags&, std::vector<Io::Fd>& ) const override;
74 
75  // get file name given Fd or ptr
76  const std::string& fname( const Io::Fd& ) const override;
77  const std::string& fname( void* ) const override;
78 
79  // get Fd or ptr given file name
80  Io::Fd fd( const std::string& ) const override;
81  Io::Fd fd( void* ) const override;
82 
83  void* fptr( const std::string& ) const override;
84  void* fptr( const Io::Fd& ) const override;
85 
86  int getLastError( std::string& ) const override;
87 
88  // Open file, get Fd and ptr
89  Io::open_t open( const Io::IoTech&, const std::string& caller, const std::string& fname, const Io::IoFlags&,
90  Io::Fd& fd, void*& ptr, const std::string& desc = "", const bool shared = false ) override;
91 
92  // Open file, get Fd
93  Io::open_t open( const Io::IoTech&, const std::string& caller, const std::string& fname, const Io::IoFlags&, Io::Fd&,
94  const std::string& desc = "", const bool shared = false ) override;
95 
96  // Open file, get ptr
97  Io::open_t open( const Io::IoTech&, const std::string& caller, const std::string& fname, const Io::IoFlags&, void*&,
98  const std::string& desc = "", const bool shared = false ) override;
99 
100  Io::close_t close( const Fd, const std::string& caller ) override;
101  Io::close_t close( void*, const std::string& caller ) override;
102 
103  Io::reopen_t reopen( const Fd, const IoFlags&, const std::string& caller ) override;
104  Io::reopen_t reopen( void*, const IoFlags&, const std::string& caller ) override;
105 
106  StatusCode regAction( Io::bfcn_action_t, const Io::Action&, const std::string& desc = "" ) override;
108  const std::string& desc = "" ) override;
109 
110  void suppressAction( const std::string& ) override;
111  void suppressAction( const std::string&, const Io::Action& ) override;
112 
113 private:
115  Gaudi::Property<bool> m_printSummary{this, "PrintSummary", false};
116  Gaudi::Property<bool> m_loadRootHandler{this, "LoadROOTHandler", true};
117  Gaudi::Property<bool> m_loadPosixHandler{this, "LoadPOSIXHandler", true};
118 
119  Gaudi::Property<std::string> m_ssl_proxy{this, "TSSL_UserProxy", "X509"};
120  Gaudi::Property<std::string> m_ssl_cert{this, "TSSL_CertDir", "X509"};
121 
122  virtual Io::open_t open( const IoTech&, const std::string& caller, const std::string& fname, const std::string& desc,
123  const IoFlags&, Fd&, void*&,
124  const bool shared ); // does not override...
125 
128  StatusCode execAction( Io::FileAttr*, const std::string&, const Io::Action& ) const;
129  StatusCode execActs( Io::FileAttr*, const std::string&, const Io::Action&, const actionMap& m ) const;
130 
131  bool accessMatch( const Io::IoFlags&, const Io::IoFlags&, bool strict = false ) const;
132  bool isShareable( const std::string& filename, const Io::IoFlags& ) const;
133 
135 
136  fileMap m_files;
140 
142 
144 
146 
149 
150  boost::optional<RootFileHandler> m_rfh;
151  boost::optional<POSIXFileHandler> m_pfh;
152 };
153 
154 #endif
std::vector< std::unique_ptr< FileAttr > > m_attr
Definition: FileMgr.h:139
StatusCode regHandler(FileHdlr) override
Definition: FileMgr.cpp:177
IoTech
Definition: IFileMgr.h:146
void listHandlers() const override
Definition: FileMgr.cpp:1034
int getFileAttr(const std::string &, std::vector< const FileAttr * > &) const override
Definition: FileMgr.cpp:714
void listFiles() const override
Definition: FileMgr.cpp:976
std::pair< Io::bfcn_action_t, std::string > bfcn_desc_t
Definition: FileMgr.h:126
StatusCode hasHandler(const IoTech &) const override
Definition: FileMgr.cpp:225
Implementation of property with value of concrete type.
Definition: Property.h:352
int reopen_t
Definition: IFileMgr.h:235
std::map< std::string, Io::Action_bitmap > m_supMap
Definition: FileMgr.h:145
int Fd
Definition: IFileMgr.h:159
Io::open_t open(const Io::IoTech &, const std::string &caller, const std::string &fname, const Io::IoFlags &, Io::Fd &fd, void *&ptr, const std::string &desc="", const bool shared=false) override
Definition: FileMgr.cpp:233
Gaudi::Property< bool > m_loadPosixHandler
Definition: FileMgr.h:117
void suppressAction(const std::string &) override
Definition: FileMgr.cpp:1153
IoFlag
Definition: IFileMgr.h:26
int getFiles(std::vector< std::string > &, bool onlyOpen=true) const override
Definition: FileMgr.cpp:771
fileMap m_files
Definition: FileMgr.h:136
int open_t
Definition: IFileMgr.h:233
std::map< Io::Action, std::list< bfcn_desc_t > > actionMap
Definition: FileMgr.h:127
StatusCode deregHandler(const IoTech &) override
Definition: FileMgr.cpp:211
StatusCode execAction(Io::FileAttr *, const std::string &, const Io::Action &) const
Definition: FileMgr.cpp:1088
std::map< Fd, FileAttr * > m_descriptors
Definition: FileMgr.h:138
STL class.
bool accessMatch(const Io::IoFlags &, const Io::IoFlags &, bool strict=false) const
Definition: FileMgr.cpp:1142
virtual void listActions() const
Definition: FileMgr.cpp:1063
STL class.
Io::Fd fd(const std::string &) const override
Definition: FileMgr.cpp:940
Action
Definition: IFileMgr.h:268
std::map< IoTech, FileHdlr > m_handlers
Definition: FileMgr.h:137
Gaudi::Property< bool > m_loadRootHandler
Definition: FileMgr.h:116
void handle(const Incident &) override
Definition: FileMgr.cpp:173
StatusCode getHandler(const IoTech &, FileHdlr &) const override
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
constexpr double m
Definition: SystemOfUnits.h:92
boost::optional< RootFileHandler > m_rfh
Definition: FileMgr.h:150
Io::reopen_t reopen(const Fd, const IoFlags &, const std::string &caller) override
StatusCode execActs(Io::FileAttr *, const std::string &, const Io::Action &, const actionMap &m) const
Definition: FileMgr.cpp:1106
Io::close_t close(const Fd, const std::string &caller) override
std::string m_lastErrS
Definition: FileMgr.h:147
StatusCode regAction(Io::bfcn_action_t, const Io::Action &, const std::string &desc="") override
Definition: FileMgr.cpp:1044
std::multimap< std::string, FileAttr * > fileMap
Definition: FileMgr.h:134
std::vector< FileAttr * > m_oldFiles
Definition: FileMgr.h:141
STL class.
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
virtual void listSuppression() const
Definition: FileMgr.cpp:1161
boost::optional< POSIXFileHandler > m_pfh
Definition: FileMgr.h:151
Base class for all Incidents (computing events).
Definition: Incident.h:17
bool isShareable(const std::string &filename, const Io::IoFlags &) const
Gaudi::Property< std::string > m_ssl_proxy
Definition: FileMgr.h:119
std::map< IoTech, actionMap > m_actions
Definition: FileMgr.h:143
const std::string & fname(const Io::Fd &) const override
Definition: FileMgr.cpp:922
int m_lastErr
Definition: FileMgr.h:148
Gaudi::Property< bool > m_printSummary
Definition: FileMgr.h:115
Gaudi::Property< std::string > m_logfile
Definition: FileMgr.h:114
int getFd(std::vector< Fd > &) const override
~FileMgr() override
Definition: FileMgr.cpp:54
StatusCode finalize() override
Definition: FileMgr.cpp:116
Gaudi::Property< std::string > m_ssl_cert
Definition: FileMgr.h:120
int close_t
Definition: IFileMgr.h:234
StatusCode initialize() override
Definition: FileMgr.cpp:62
int getLastError(std::string &) const override
Definition: FileMgr.cpp:988
void * fptr(const std::string &) const override
Definition: FileMgr.cpp:958