xrootd
Loading...
Searching...
No Matches
ProxyPrefixFile.hh
Go to the documentation of this file.
1//------------------------------------------------------------------------------
2// Copyright (c) 2011-2017 by European Organization for Nuclear Research (CERN)
3// Author: Elvin Sindrilaru <esindril@cern.ch>
4//------------------------------------------------------------------------------
5// This file is part of the XRootD software suite.
6//
7// XRootD is free software: you can redistribute it and/or modify
8// it under the terms of the GNU Lesser General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11//
12// XRootD is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU Lesser General Public License
18// along with XRootD. If not, see <http://www.gnu.org/licenses/>.
19//
20// In applying this licence, CERN does not waive the privileges and immunities
21// granted to it by virtue of its status as an Intergovernmental Organization
22// or submit itself to any jurisdiction.
23//------------------------------------------------------------------------------
24
25#pragma once
28
29#include <utility>
30
31using namespace XrdCl;
32
33namespace xrdcl_proxy
34{
35//------------------------------------------------------------------------------
38//------------------------------------------------------------------------------
40{
41public:
42 //----------------------------------------------------------------------------
44 //----------------------------------------------------------------------------
46
47 //----------------------------------------------------------------------------
49 //----------------------------------------------------------------------------
50 virtual ~ProxyPrefixFile() override;
51
52 //----------------------------------------------------------------------------
54 //----------------------------------------------------------------------------
55 virtual XRootDStatus Open(const std::string& url,
56 OpenFlags::Flags flags,
57 Access::Mode mode,
58 ResponseHandler* handler,
59 uint16_t timeout) override;
60
61 //----------------------------------------------------------------------------
63 //----------------------------------------------------------------------------
65 uint16_t timeout) override
66 {
67 return pFile->Close(handler, timeout);
68 }
69
70 //----------------------------------------------------------------------------
72 //----------------------------------------------------------------------------
73 virtual XRootDStatus Stat(bool force,
74 ResponseHandler* handler,
75 uint16_t timeout) override
76 {
77 return pFile->Stat(force, handler, timeout);
78 }
79
80
81 //----------------------------------------------------------------------------
83 //----------------------------------------------------------------------------
84 virtual XRootDStatus Read(uint64_t offset,
85 uint32_t size,
86 void* buffer,
87 ResponseHandler* handler,
88 uint16_t timeout) override
89 {
90 return pFile->Read(offset, size, buffer, handler, timeout);
91 }
92
93 //------------------------------------------------------------------------
95 //------------------------------------------------------------------------
96 virtual XRootDStatus PgRead( uint64_t offset,
97 uint32_t size,
98 void *buffer,
99 ResponseHandler *handler,
100 uint16_t timeout ) override
101 {
102 return pFile->PgRead(offset, size, buffer, handler, timeout);
103 }
104
105 //----------------------------------------------------------------------------
107 //----------------------------------------------------------------------------
108 virtual XRootDStatus Write(uint64_t offset,
109 uint32_t size,
110 const void* buffer,
111 ResponseHandler* handler,
112 uint16_t timeout) override
113 {
114 return pFile->Write(offset, size, buffer, handler, timeout);
115 }
116
117 //------------------------------------------------------------------------
119 //------------------------------------------------------------------------
120 virtual XRootDStatus Write( uint64_t offset,
121 Buffer &&buffer,
122 ResponseHandler *handler,
123 uint16_t timeout = 0 ) override
124 {
125 return pFile->Write(offset, std::move(buffer), handler, timeout);
126 }
127
128 //------------------------------------------------------------------------
130 //------------------------------------------------------------------------
131 virtual XRootDStatus Write( uint64_t offset,
132 uint32_t size,
133 Optional<uint64_t> fdoff,
134 int fd,
135 ResponseHandler *handler,
136 uint16_t timeout = 0 ) override
137 {
138 return pFile->Write(offset, size, fdoff, fd, handler, timeout);
139 }
140
141 //------------------------------------------------------------------------
143 //------------------------------------------------------------------------
144 virtual XRootDStatus PgWrite( uint64_t offset,
145 uint32_t nbpgs,
146 const void *buffer,
147 std::vector<uint32_t> &cksums,
148 ResponseHandler *handler,
149 uint16_t timeout ) override
150 {
151 return pFile->PgWrite(offset, nbpgs, buffer, cksums, handler, timeout);
152 }
153
154 //----------------------------------------------------------------------------
156 //----------------------------------------------------------------------------
158 uint16_t timeout) override
159 {
160 return pFile->Sync(handler, timeout);
161 }
162
163 //----------------------------------------------------------------------------
165 //----------------------------------------------------------------------------
166 virtual XRootDStatus Truncate(uint64_t size,
167 ResponseHandler* handler,
168 uint16_t timeout) override
169 {
170 return pFile->Truncate(size, handler, timeout);
171 }
172
173 //----------------------------------------------------------------------------
175 //----------------------------------------------------------------------------
176 virtual XRootDStatus VectorRead(const ChunkList& chunks,
177 void* buffer,
178 ResponseHandler* handler,
179 uint16_t timeout) override
180 {
181 return pFile->VectorRead(chunks, buffer, handler, timeout);
182 }
183
184 //------------------------------------------------------------------------
186 //------------------------------------------------------------------------
187 virtual XRootDStatus VectorWrite( const ChunkList &chunks,
188 ResponseHandler *handler,
189 uint16_t timeout = 0 ) override
190 {
191 return pFile->VectorWrite(chunks, handler, timeout);
192 }
193
194 //------------------------------------------------------------------------
196 //------------------------------------------------------------------------
197 virtual XRootDStatus WriteV( uint64_t offset,
198 const struct iovec *iov,
199 int iovcnt,
200 ResponseHandler *handler,
201 uint16_t timeout = 0 ) override
202 {
203 return pFile->WriteV(offset, iov, iovcnt, handler, timeout);
204 }
205
206 //----------------------------------------------------------------------------
208 //----------------------------------------------------------------------------
209 virtual XRootDStatus Fcntl(const Buffer& arg,
210 ResponseHandler* handler,
211 uint16_t timeout) override
212 {
213 return pFile->Fcntl(arg, handler, timeout);
214 }
215
216 //----------------------------------------------------------------------------
218 //----------------------------------------------------------------------------
220 uint16_t timeout) override
221 {
222 return pFile->Visa(handler, timeout);
223 }
224
225 //----------------------------------------------------------------------------
227 //----------------------------------------------------------------------------
228 virtual bool IsOpen() const override
229 {
230 return pFile->IsOpen();
231 }
232
233 //----------------------------------------------------------------------------
235 //----------------------------------------------------------------------------
236 virtual bool SetProperty(const std::string& name,
237 const std::string& value) override
238 {
239 return pFile->SetProperty(name, value);
240 }
241
242 //----------------------------------------------------------------------------
244 //----------------------------------------------------------------------------
245 virtual bool GetProperty(const std::string& name,
246 std::string& value) const override
247 {
248 return pFile->GetProperty(name, value);
249 }
250
251private:
252
253 //----------------------------------------------------------------------------
257 //----------------------------------------------------------------------------
258 inline std::string trim(const std::string& in) const;
259
260 //----------------------------------------------------------------------------
264 //----------------------------------------------------------------------------
265 inline std::string GetPrefixUrl() const;
266
267 //----------------------------------------------------------------------------
271 //----------------------------------------------------------------------------
272 std::list<std::string> GetExclDomains() const;
273
274 //----------------------------------------------------------------------------
281 //----------------------------------------------------------------------------
282 std::string ConstructFinalUrl(const std::string& orig_url) const;
283
284 //----------------------------------------------------------------------------
290 //----------------------------------------------------------------------------
291 std::string GetFqdn(const std::string& hostname) const;
292
295};
296
297} // namespace xrdcl_proxy
Binary blob representation.
Definition XrdClBuffer.hh:34
An interface for file plug-ins.
Definition XrdClPlugInInterface.hh:39
A file.
Definition XrdClFile.hh:46
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool IsOpen() const
Check if the file is open.
XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool GetProperty(const std::string &name, std::string &value) const
XRootDStatus WriteV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool SetProperty(const std::string &name, const std::string &value)
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus PgWrite(uint64_t offset, uint32_t size, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition XrdClOptional.hh:44
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
Request status.
Definition XrdClXRootDResponses.hh:219
Definition ProxyPrefixFile.hh:40
std::string trim(const std::string &in) const
bool mIsOpen
Definition ProxyPrefixFile.hh:293
std::string GetPrefixUrl() const
virtual XRootDStatus Write(uint64_t offset, Buffer &&buffer, ResponseHandler *handler, uint16_t timeout=0) override
Write.
Definition ProxyPrefixFile.hh:120
virtual XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout) override
Open.
std::list< std::string > GetExclDomains() const
XrdCl::File * pFile
Definition ProxyPrefixFile.hh:294
virtual XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout) override
Fcntl.
Definition ProxyPrefixFile.hh:209
virtual XRootDStatus Close(ResponseHandler *handler, uint16_t timeout) override
Close.
Definition ProxyPrefixFile.hh:64
virtual XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout) override
Truncate.
Definition ProxyPrefixFile.hh:166
virtual XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout) override
VectorRead.
Definition ProxyPrefixFile.hh:176
virtual ~ProxyPrefixFile() override
Destructor.
virtual XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout) override
PgRead.
Definition ProxyPrefixFile.hh:96
virtual bool SetProperty(const std::string &name, const std::string &value) override
SetProperty.
Definition ProxyPrefixFile.hh:236
virtual XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0) override
VectorWrite.
Definition ProxyPrefixFile.hh:187
virtual XRootDStatus PgWrite(uint64_t offset, uint32_t nbpgs, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, uint16_t timeout) override
PgWrite.
Definition ProxyPrefixFile.hh:144
virtual XRootDStatus Write(uint64_t offset, uint32_t size, Optional< uint64_t > fdoff, int fd, ResponseHandler *handler, uint16_t timeout=0) override
Write.
Definition ProxyPrefixFile.hh:131
virtual XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout) override
Stat.
Definition ProxyPrefixFile.hh:73
std::string ConstructFinalUrl(const std::string &orig_url) const
virtual XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout) override
Visa.
Definition ProxyPrefixFile.hh:219
virtual XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout) override
Read.
Definition ProxyPrefixFile.hh:84
virtual bool IsOpen() const override
IsOpen.
Definition ProxyPrefixFile.hh:228
virtual bool GetProperty(const std::string &name, std::string &value) const override
GetProperty.
Definition ProxyPrefixFile.hh:245
virtual XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout) override
Write.
Definition ProxyPrefixFile.hh:108
virtual XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout) override
Sync.
Definition ProxyPrefixFile.hh:157
virtual XRootDStatus WriteV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0) override
Definition ProxyPrefixFile.hh:197
std::string GetFqdn(const std::string &hostname) const
Definition XrdClAction.hh:34
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition XrdClXRootDResponses.hh:1055
Definition ProxyPrefixFile.hh:34
Mode
Access mode.
Definition XrdClFileSystem.hh:122
Flags
Open flags, may be or'd when appropriate.
Definition XrdClFileSystem.hh:76
Definition XrdOucIOVec.hh:65