xrootd
Loading...
Searching...
No Matches
XrdClLocalFileHandler.hh
Go to the documentation of this file.
1//------------------------------------------------------------------------------
2// Copyright (c) 2017 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3// Author: Paul-Niklas Kramp <p.n.kramp@gsi.de>
4//------------------------------------------------------------------------------
5// XRootD is free software: you can redistribute it and/or modify
6// it under the terms of the GNU Lesser General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// XRootD is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU Lesser General Public License
16// along with XRootD. If not, see <http://www.gnu.org/licenses/>.
17//------------------------------------------------------------------------------
18#ifndef __XRD_CL_LOCAL_FILE_HANDLER_HH__
19#define __XRD_CL_LOCAL_FILE_HANDLER_HH__
23#include "XrdCl/XrdClLog.hh"
24
25#include <sys/uio.h>
26
27namespace XrdCl
28{
29 class Message;
30 struct MessageSendParams;
31
33 {
34 public:
35
37
39
40 //------------------------------------------------------------------------
50 //------------------------------------------------------------------------
51 XRootDStatus Open( const std::string &url, uint16_t flags, uint16_t mode,
52 ResponseHandler *handler, uint16_t timeout = 0 );
53
54 //------------------------------------------------------------------------
56 //------------------------------------------------------------------------
57 XRootDStatus Open( const URL *url, const Message *req, AnyObject *&resp );
58
59 //------------------------------------------------------------------------
66 //------------------------------------------------------------------------
67 XRootDStatus Close( ResponseHandler *handler, uint16_t timeout = 0 );
68
69 //------------------------------------------------------------------------
78 //------------------------------------------------------------------------
79 XRootDStatus Stat( ResponseHandler *handler, uint16_t timeout = 0 );
80
81 //------------------------------------------------------------------------
96 //------------------------------------------------------------------------
97 XRootDStatus Read( uint64_t offset, uint32_t size, void *buffer,
98 ResponseHandler *handler, uint16_t timeout = 0 );
99
100 //------------------------------------------------------------------------
110 //------------------------------------------------------------------------
111 XRootDStatus ReadV( uint64_t offset,
112 struct iovec *iov,
113 int iovcnt,
114 ResponseHandler *handler,
115 uint16_t timeout = 0 );
116
117 //------------------------------------------------------------------------
127 //------------------------------------------------------------------------
128 XRootDStatus Write( uint64_t offset, uint32_t size, const void *buffer,
129 ResponseHandler *handler, uint16_t timeout = 0 );
130
131 //------------------------------------------------------------------------
138 //------------------------------------------------------------------------
139 XRootDStatus Sync( ResponseHandler *handler, uint16_t timeout = 0 );
140
141 //------------------------------------------------------------------------
149 //------------------------------------------------------------------------
150 XRootDStatus Truncate( uint64_t size, ResponseHandler *handler,
151 uint16_t timeout = 0 );
152
153 //------------------------------------------------------------------------
162 //------------------------------------------------------------------------
163 XRootDStatus VectorRead( const ChunkList &chunks, void *buffer,
164 ResponseHandler *handler, uint16_t timeout = 0 );
165
166 //------------------------------------------------------------------------
174 //------------------------------------------------------------------------
176 ResponseHandler *handler, uint16_t timeout = 0 );
177
178 //------------------------------------------------------------------------
187 //------------------------------------------------------------------------
188 XRootDStatus WriteV( uint64_t offset,
189 ChunkList *chunks,
190 ResponseHandler *handler,
191 uint16_t timeout = 0 );
192
193 //------------------------------------------------------------------------
200 //------------------------------------------------------------------------
202 ResponseHandler *handler );
203
204 //------------------------------------------------------------------------
214 //------------------------------------------------------------------------
216 uint16_t timeout = 0 );
217
218 //------------------------------------------------------------------------
227 //------------------------------------------------------------------------
228 XRootDStatus Visa( ResponseHandler *handler, uint16_t timeout = 0 );
229
230
231 //------------------------------------------------------------------------
242 //------------------------------------------------------------------------
243 XRootDStatus SetXAttr( const std::vector<xattr_t> &attrs,
244 ResponseHandler *handler,
245 uint16_t timeout = 0 );
246
247 //------------------------------------------------------------------------
258 //------------------------------------------------------------------------
259 XRootDStatus GetXAttr( const std::vector<std::string> &attrs,
260 ResponseHandler *handler,
261 uint16_t timeout = 0 );
262
263 //------------------------------------------------------------------------
274 //------------------------------------------------------------------------
275 XRootDStatus DelXAttr( const std::vector<std::string> &attrs,
276 ResponseHandler *handler,
277 uint16_t timeout = 0 );
278
279 //------------------------------------------------------------------------
289 //------------------------------------------------------------------------
291 uint16_t timeout = 0 );
292
293 //------------------------------------------------------------------------
298 //------------------------------------------------------------------------
299 static XRootDStatus MkdirPath( const std::string &path );
300
301 void SetHostList( const HostList &hostList )
302 {
303 pHostList = hostList;
304 }
305
307 {
308 return pHostList;
309 }
310
311 //------------------------------------------------------------------------
313 //------------------------------------------------------------------------
315 Message *msg,
316 ResponseHandler *handler,
317 MessageSendParams &sendParams );
318
319 private:
320
321 XRootDStatus OpenImpl( const std::string &url, uint16_t flags,
322 uint16_t mode, AnyObject *&resp );
323
324 //------------------------------------------------------------------------
326 //------------------------------------------------------------------------
328 kXR_char numattr,
329 size_t bodylen,
330 char *body,
331 ResponseHandler *handler );
332
333 //---------------------------------------------------------------------
334 // Internal filedescriptor, which is used by all operations after open
335 //---------------------------------------------------------------------
336 int fd;
337
338 //---------------------------------------------------------------------
339 // The file URL
340 //---------------------------------------------------------------------
341 std::string pUrl;
342
343 //---------------------------------------------------------------------
344 // The host list returned in the user callback
345 //---------------------------------------------------------------------
347
348 };
349}
350#endif
unsigned char kXR_char
Definition XPtypes.hh:65
Definition XrdClAnyObject.hh:33
Binary blob representation.
Definition XrdClBuffer.hh:34
Definition XrdClLocalFileHandler.hh:33
XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Stat(ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0)
void SetHostList(const HostList &hostList)
Definition XrdClLocalFileHandler.hh:301
XRootDStatus ReadV(uint64_t offset, struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus QueueTask(XRootDStatus *st, AnyObject *obj, ResponseHandler *handler)
XRootDStatus SetXAttr(const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus MkdirPath(const std::string &path)
const HostList & GetHostList()
Definition XrdClLocalFileHandler.hh:306
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus WriteV(uint64_t offset, ChunkList *chunks, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus DelXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus OpenImpl(const std::string &url, uint16_t flags, uint16_t mode, AnyObject *&resp)
XRootDStatus ListXAttr(ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0)
HostList pHostList
Definition XrdClLocalFileHandler.hh:346
XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0)
int fd
Definition XrdClLocalFileHandler.hh:336
std::string pUrl
Definition XrdClLocalFileHandler.hh:341
XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus ExecRequest(const URL &url, Message *msg, ResponseHandler *handler, MessageSendParams &sendParams)
Translate an XRootD request into LocalFileHandler call.
XRootDStatus Open(const std::string &url, uint16_t flags, uint16_t mode, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus XAttrImpl(kXR_char code, kXR_char numattr, size_t bodylen, char *body, ResponseHandler *handler)
Parses kXR_fattr request and calls respective XAttr operation.
XRootDStatus Open(const URL *url, const Message *req, AnyObject *&resp)
Handle local redirect to given URL triggered by the given request.
XRootDStatus GetXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
The message representation used throughout the system.
Definition XrdClMessage.hh:30
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
URL representation.
Definition XrdClURL.hh:31
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdClAction.hh:34
std::vector< HostInfo > HostList
Definition XrdClXRootDResponses.hh:1120
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition XrdClXRootDResponses.hh:1055
Definition XrdClMessageUtils.hh:132
Definition XrdOucIOVec.hh:65