XRootD
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__
20 #include "XrdCl/XrdClJobManager.hh"
22 #include "XrdCl/XrdClDefaultEnv.hh"
23 #include "XrdCl/XrdClLog.hh"
24 
25 #include <sys/uio.h>
26 
27 namespace 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  //------------------------------------------------------------------------
175  XRootDStatus VectorWrite( const ChunkList &chunks,
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  //------------------------------------------------------------------------
215  XRootDStatus Fcntl( const Buffer &arg, ResponseHandler *handler,
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  //------------------------------------------------------------------------
314  XRootDStatus ExecRequest( const URL &url,
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  //------------------------------------------------------------------------
327  XRootDStatus XAttrImpl( kXR_char code,
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  //---------------------------------------------------------------------
346  HostList pHostList;
347 
348  };
349 }
350 #endif
unsigned char kXR_char
Definition: XPtypes.hh:65
Binary blob representation.
Definition: XrdClBuffer.hh:34
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)
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)
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 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)
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)
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 GetXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
The message representation used throughout the system.
Definition: XrdClMessage.hh:32
Open operation (.
Handle an async response.
URL representation.
Definition: XrdClURL.hh:31
std::vector< HostInfo > HostList
std::vector< ChunkInfo > ChunkList
List of chunks.