xrootd
Loading...
Searching...
No Matches
XrdClHttpFilePlugIn.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"
13
14#include <cstdint>
15#include <limits>
16#include <mutex>
17#include <unordered_map>
18
19// Indicate desire to avoid http "Range: bytes=234-567" header
20// Some HTTP(s) data source does not honor Range request, and always start from
21// offset 0 when encounter a Range request, for example:
22// https://portal.nersc.gov/archive/home/projects/incite11/www/20C_Reanalysis_version_3/everymember_anal_netcdf/daily/WSPD10m/WSPD10m_1808_daily.tar
23//
24// 1. via Unix env via: this is global, avoid http ranger for all URLs
25#define HTTP_FILE_PLUG_IN_AVOIDRANGE_ENV "XRDCLHTTP_AVOIDRANGE"
26// 2. via CGI in URl, this only affect the associated URL
27#define HTTP_FILE_PLUG_IN_AVOIDRANGE_CGI "xrdclhttp_avoidrange"
28
29namespace XrdCl {
30
31class Log;
32
33class HttpFilePlugIn : public FilePlugIn {
34 public:
36 virtual ~HttpFilePlugIn() noexcept;
37
38 //------------------------------------------------------------------------
40 //------------------------------------------------------------------------
41 virtual XRootDStatus Open( const std::string &url,
42 OpenFlags::Flags flags,
43 Access::Mode mode,
44 ResponseHandler *handler,
45 uint16_t timeout ) override;
46
47 //------------------------------------------------------------------------
49 //------------------------------------------------------------------------
51 uint16_t timeout ) override;
52
53 //------------------------------------------------------------------------
55 //------------------------------------------------------------------------
56 virtual XRootDStatus Stat( bool force,
57 ResponseHandler *handler,
58 uint16_t timeout ) override;
59
60 //------------------------------------------------------------------------
62 //------------------------------------------------------------------------
63 virtual XRootDStatus Read( uint64_t offset,
64 uint32_t size,
65 void *buffer,
66 ResponseHandler *handler,
67 uint16_t timeout ) override;
68
69 //------------------------------------------------------------------------
71 //------------------------------------------------------------------------
72 virtual XRootDStatus PgRead( uint64_t offset,
73 uint32_t size,
74 void *buffer,
75 ResponseHandler *handler,
76 uint16_t timeout ) override;
77
78 //------------------------------------------------------------------------
80 //------------------------------------------------------------------------
81 virtual XRootDStatus Write( uint64_t offset,
82 uint32_t size,
83 const void *buffer,
84 ResponseHandler *handler,
85 uint16_t timeout ) override;
86
87 //------------------------------------------------------------------------
89 //------------------------------------------------------------------------
90 virtual XRootDStatus PgWrite( uint64_t offset,
91 uint32_t size,
92 const void *buffer,
93 std::vector<uint32_t> &cksums,
94 ResponseHandler *handler,
95 uint16_t timeout ) override;
96
97 //------------------------------------------------------------------------
99 //------------------------------------------------------------------------
101 uint16_t timeout ) override;
102
103 //------------------------------------------------------------------------
105 //------------------------------------------------------------------------
106 virtual XRootDStatus VectorRead( const ChunkList &chunks,
107 void *buffer,
108 XrdCl::ResponseHandler *handler,
109 uint16_t timeout ) override;
110
111 //------------------------------------------------------------------------
113 //------------------------------------------------------------------------
114 virtual bool IsOpen() const override;
115
116 //------------------------------------------------------------------------
118 //------------------------------------------------------------------------
119 virtual bool SetProperty( const std::string &name,
120 const std::string &value ) override;
121
122 //------------------------------------------------------------------------
124 //------------------------------------------------------------------------
125 virtual bool GetProperty( const std::string &name,
126 std::string &value ) const override;
127
128 private:
129
130 Davix::Context *davix_context_;
131 Davix::DavPosix *davix_client_;
132
133 DAVIX_FD* davix_fd_;
134
136 uint64_t curr_offset;
137
140
142 uint64_t filesize;
143
144 std::string url_;
145
146 std::unordered_map<std::string, std::string> properties_;
147
149};
150
151}
152
153#endif // __HTTP_FILE_PLUG_IN_
An interface for file plug-ins.
Definition XrdClPlugInInterface.hh:39
Definition XrdClHttpFilePlugIn.hh:33
virtual XRootDStatus PgWrite(uint64_t offset, uint32_t size, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, uint16_t timeout) override
virtual XRootDStatus Close(ResponseHandler *handler, uint16_t timeout) override
Davix::Context * davix_context_
Definition XrdClHttpFilePlugIn.hh:130
virtual ~HttpFilePlugIn() noexcept
std::unordered_map< std::string, std::string > properties_
Definition XrdClHttpFilePlugIn.hh:146
virtual XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout) override
virtual bool IsOpen() const override
bool is_open_
Definition XrdClHttpFilePlugIn.hh:141
virtual XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout) override
virtual bool SetProperty(const std::string &name, const std::string &value) override
Log * logger_
Definition XrdClHttpFilePlugIn.hh:148
virtual XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, XrdCl::ResponseHandler *handler, uint16_t timeout) override
bool avoid_pread_
Definition XrdClHttpFilePlugIn.hh:138
virtual XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout) override
uint64_t filesize
Definition XrdClHttpFilePlugIn.hh:142
virtual XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout) override
virtual bool GetProperty(const std::string &name, std::string &value) const override
DAVIX_FD * davix_fd_
Definition XrdClHttpFilePlugIn.hh:133
std::mutex offset_locker
Definition XrdClHttpFilePlugIn.hh:135
bool isChannelEncrypted
Definition XrdClHttpFilePlugIn.hh:139
std::string url_
Definition XrdClHttpFilePlugIn.hh:144
uint64_t curr_offset
Definition XrdClHttpFilePlugIn.hh:136
virtual XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout) override
Davix::DavPosix * davix_client_
Definition XrdClHttpFilePlugIn.hh:131
virtual XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout) override
Handle diagnostics.
Definition XrdClLog.hh:101
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdClAction.hh:34
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition XrdClXRootDResponses.hh:1055
Definition XrdOucJson.hh:4517
Access mode.
Definition XrdClFileSystem.hh:117
Open flags, may be or'd when appropriate.
Definition XrdClFileSystem.hh:71