xrootd
HttpFilePlugIn.hh
Go to the documentation of this file.
1 
5 #ifndef __HTTP_FILE_PLUG_IN_
6 #define __HTTP_FILE_PLUG_IN_
7 
8 #include "davix.hpp"
9 
10 #include "XrdCl/XrdClFile.hh"
11 #include "XrdCl/XrdClFileSystem.hh"
13 
14 #include <cstdint>
15 #include <limits>
16 #include <unordered_map>
17 
18 namespace XrdCl {
19 
20 class Log;
21 
22 class HttpFilePlugIn : public FilePlugIn {
23  public:
25  virtual ~HttpFilePlugIn() noexcept = default;
26 
27  //------------------------------------------------------------------------
29  //------------------------------------------------------------------------
30  virtual XRootDStatus Open( const std::string &url,
31  OpenFlags::Flags flags,
32  Access::Mode mode,
33  ResponseHandler *handler,
34  uint16_t timeout ) override;
35 
36  //------------------------------------------------------------------------
38  //------------------------------------------------------------------------
39  virtual XRootDStatus Close( ResponseHandler *handler,
40  uint16_t timeout ) override;
41 
42  //------------------------------------------------------------------------
44  //------------------------------------------------------------------------
45  virtual XRootDStatus Stat( bool force,
46  ResponseHandler *handler,
47  uint16_t timeout ) override;
48 
49  //------------------------------------------------------------------------
51  //------------------------------------------------------------------------
52  virtual XRootDStatus Read( uint64_t offset,
53  uint32_t size,
54  void *buffer,
55  ResponseHandler *handler,
56  uint16_t timeout ) override;
57 
58  //------------------------------------------------------------------------
60  //------------------------------------------------------------------------
61  virtual XRootDStatus Write( uint64_t offset,
62  uint32_t size,
63  const void *buffer,
64  ResponseHandler *handler,
65  uint16_t timeout ) override;
66 
67  //------------------------------------------------------------------------
69  //------------------------------------------------------------------------
70  virtual XRootDStatus Sync( ResponseHandler *handler,
71  uint16_t timeout ) override;
72 
73  //------------------------------------------------------------------------
75  //------------------------------------------------------------------------
76  virtual XRootDStatus VectorRead( const ChunkList &chunks,
77  void *buffer,
78  XrdCl::ResponseHandler *handler,
79  uint16_t timeout ) override;
80 
81  //------------------------------------------------------------------------
83  //------------------------------------------------------------------------
84  virtual bool IsOpen() const override;
85 
86  //------------------------------------------------------------------------
88  //------------------------------------------------------------------------
89  virtual bool SetProperty( const std::string &name,
90  const std::string &value ) override;
91 
92  //------------------------------------------------------------------------
94  //------------------------------------------------------------------------
95  virtual bool GetProperty( const std::string &name,
96  std::string &value ) const override;
97 
98  private:
99 
100  Davix::Context davix_context_;
101  Davix::DavPosix davix_client_;
102 
103  DAVIX_FD* davix_fd_;
104 
105  bool is_open_;
106 
107  std::string url_;
108 
109  std::unordered_map<std::string, std::string> properties_;
110 
112 };
113 
114 }
115 
116 #endif // __HTTP_FILE_PLUG_IN_
Definition: HttpFilePlugIn.hh:22
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:784
virtual bool IsOpen() const override
virtual XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout) override
virtual XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, XrdCl::ResponseHandler *handler, uint16_t timeout) override
virtual XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout) override
virtual XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout) override
std::unordered_map< std::string, std::string > properties_
Definition: HttpFilePlugIn.hh:109
virtual XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout) override
virtual bool SetProperty(const std::string &name, const std::string &value) override
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:36
virtual ~HttpFilePlugIn() noexcept=default
Log * logger_
Definition: HttpFilePlugIn.hh:111
Request status.
Definition: XrdClXRootDResponses.hh:212
Definition: XrdClAnyObject.hh:25
Davix::DavPosix davix_client_
Definition: HttpFilePlugIn.hh:101
Handle an async response.
Definition: XrdClXRootDResponses.hh:854
Davix::Context davix_context_
Definition: HttpFilePlugIn.hh:100
Mode
Access mode.
Definition: XrdClFileSystem.hh:122
virtual bool GetProperty(const std::string &name, std::string &value) const override
DAVIX_FD * davix_fd_
Definition: HttpFilePlugIn.hh:103
virtual XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout) override
Flags
Open flags, may be or&#39;d when appropriate.
Definition: XrdClFileSystem.hh:76
std::string url_
Definition: HttpFilePlugIn.hh:107
bool is_open_
Definition: HttpFilePlugIn.hh:105
Handle diagnostics.
Definition: XrdClLog.hh:101
virtual XRootDStatus Close(ResponseHandler *handler, uint16_t timeout) override