xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
XrdClPlugInInterface.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // Copyright (c) 2014 by European Organization for Nuclear Research (CERN)
3 // Author: Lukasz Janyst <ljanyst@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 #ifndef __XRD_CL_PLUGIN_INTERFACE__
26 #define __XRD_CL_PLUGIN_INTERFACE__
27 
28 #include "XrdCl/XrdClFile.hh"
29 #include "XrdCl/XrdClFileSystem.hh"
30 #include "XrdCl/XrdClOptional.hh"
31 
32 namespace XrdCl
33 {
34 
35  //----------------------------------------------------------------------------
37  //----------------------------------------------------------------------------
38  class FilePlugIn
39  {
40  public:
41  //------------------------------------------------------------------------
43  //------------------------------------------------------------------------
44  virtual ~FilePlugIn() {}
45  //------------------------------------------------------------------------
47  //------------------------------------------------------------------------
48  virtual XRootDStatus Open( const std::string &url,
49  OpenFlags::Flags flags,
50  Access::Mode mode,
51  ResponseHandler *handler,
52  uint16_t timeout )
53  {
54  (void)url; (void)flags; (void)mode; (void)handler; (void)timeout;
56  }
57 
58  //------------------------------------------------------------------------
60  //------------------------------------------------------------------------
61  virtual XRootDStatus Close( ResponseHandler *handler,
62  uint16_t timeout )
63  {
64  (void)handler; (void)timeout;
66  }
67 
68  //------------------------------------------------------------------------
70  //------------------------------------------------------------------------
71  virtual XRootDStatus Stat( bool force,
72  ResponseHandler *handler,
73  uint16_t timeout )
74  {
75  (void)force; (void)handler; (void)timeout;
77  }
78 
79  //------------------------------------------------------------------------
81  //------------------------------------------------------------------------
82  virtual XRootDStatus Read( uint64_t offset,
83  uint32_t size,
84  void *buffer,
85  ResponseHandler *handler,
86  uint16_t timeout )
87  {
88  (void)offset; (void)size; (void)buffer; (void)handler; (void)timeout;
90  }
91 
92  //------------------------------------------------------------------------
94  //------------------------------------------------------------------------
95  virtual XRootDStatus Read( uint64_t offset,
96  uint32_t size,
97  Optional<uint64_t> fdoff,
98  int fd,
99  ResponseHandler *handler,
100  uint16_t timeout = 0 )
101  {
102  (void)offset; (void)size; (void)fdoff; (void)fd, (void)handler; (void)timeout;
104  }
105 
106  //------------------------------------------------------------------------
108  //------------------------------------------------------------------------
109  virtual XRootDStatus PgRead( uint64_t offset,
110  uint32_t size,
111  void *buffer,
112  ResponseHandler *handler,
113  uint16_t timeout )
114  {
115  (void)offset; (void)size; (void)buffer; (void)handler; (void)timeout;
117  }
118 
119  //------------------------------------------------------------------------
121  //------------------------------------------------------------------------
122  virtual XRootDStatus Write( uint64_t offset,
123  uint32_t size,
124  const void *buffer,
125  ResponseHandler *handler,
126  uint16_t timeout )
127  {
128  (void)offset; (void)size; (void)buffer; (void)handler; (void)timeout;
130  }
131 
132  //------------------------------------------------------------------------
134  //------------------------------------------------------------------------
135  virtual XRootDStatus Write( uint64_t offset,
136  Buffer &&buffer,
137  ResponseHandler *handler,
138  uint16_t timeout = 0 )
139  {
140  (void)offset; (void)buffer; (void)handler; (void)timeout;
142  }
143 
144  //------------------------------------------------------------------------
146  //------------------------------------------------------------------------
147  virtual XRootDStatus Write( uint64_t offset,
148  uint32_t size,
149  Optional<uint64_t> fdoff,
150  int fd,
151  ResponseHandler *handler,
152  uint16_t timeout = 0 )
153  {
154  (void)offset; (void)size; (void)fdoff; (void)fd, (void)handler; (void)timeout;
156  }
157 
158  //------------------------------------------------------------------------
160  //------------------------------------------------------------------------
161  virtual XRootDStatus PgWrite( uint64_t offset,
162  uint32_t nbpgs,
163  const void *buffer,
164  std::vector<uint32_t> &cksums,
165  ResponseHandler *handler,
166  uint16_t timeout )
167  {
168  (void)offset; (void)nbpgs; (void)buffer; (void)cksums, (void)handler; (void)timeout;
170  }
171 
172  //------------------------------------------------------------------------
174  //------------------------------------------------------------------------
175  virtual XRootDStatus Sync( ResponseHandler *handler,
176  uint16_t timeout )
177  {
178  (void)handler; (void)timeout;
180  }
181 
182  //------------------------------------------------------------------------
184  //------------------------------------------------------------------------
185  virtual XRootDStatus Truncate( uint64_t size,
186  ResponseHandler *handler,
187  uint16_t timeout )
188  {
189  (void)size; (void)handler; (void)timeout;
191  }
192 
193  //------------------------------------------------------------------------
195  //------------------------------------------------------------------------
196  virtual XRootDStatus VectorRead( const ChunkList &chunks,
197  void *buffer,
198  ResponseHandler *handler,
199  uint16_t timeout )
200  {
201  (void)chunks; (void)buffer; (void)handler; (void)timeout;
203  }
204 
205  //------------------------------------------------------------------------
207  //------------------------------------------------------------------------
208  virtual XRootDStatus VectorWrite( const ChunkList &chunks,
209  ResponseHandler *handler,
210  uint16_t timeout = 0 )
211  {
212  (void)chunks; (void)handler; (void)timeout;
214  }
215 
216 
217  //------------------------------------------------------------------------
219  //------------------------------------------------------------------------
220  virtual XRootDStatus WriteV( uint64_t offset,
221  const struct iovec *iov,
222  int iovcnt,
223  ResponseHandler *handler,
224  uint16_t timeout = 0 )
225  {
226  (void)offset; (void)iov; (void)iovcnt; (void)handler; (void)timeout;
228  }
229 
230  //------------------------------------------------------------------------
232  //------------------------------------------------------------------------
233  virtual XRootDStatus Fcntl( const Buffer &arg,
234  ResponseHandler *handler,
235  uint16_t timeout )
236  {
237  (void)arg; (void)handler; (void)timeout;
239  }
240 
241  //------------------------------------------------------------------------
243  //------------------------------------------------------------------------
244  virtual XRootDStatus Visa( ResponseHandler *handler,
245  uint16_t timeout )
246  {
247  (void)handler; (void)timeout;
249  }
250 
251  //------------------------------------------------------------------------
253  //------------------------------------------------------------------------
254  virtual bool IsOpen() const
255  {
256  return false;
257  }
258 
259  //------------------------------------------------------------------------
261  //------------------------------------------------------------------------
262  virtual bool SetProperty( const std::string &name,
263  const std::string &value )
264  {
265  (void)name; (void)value;
266  return false;
267  }
268 
269  //------------------------------------------------------------------------
271  //------------------------------------------------------------------------
272  virtual bool GetProperty( const std::string &name,
273  std::string &value ) const
274  {
275  (void)name; (void)value;
276  return false;
277  }
278  };
279 
280  //----------------------------------------------------------------------------
282  //----------------------------------------------------------------------------
284  {
285  public:
286  //------------------------------------------------------------------------
288  //------------------------------------------------------------------------
289  virtual ~FileSystemPlugIn() {}
290 
291  //------------------------------------------------------------------------
293  //------------------------------------------------------------------------
294  virtual XRootDStatus Locate( const std::string &path,
295  OpenFlags::Flags flags,
296  ResponseHandler *handler,
297  uint16_t timeout )
298  {
299  (void)path; (void)flags; (void)handler; (void)timeout;
301  }
302 
303  //------------------------------------------------------------------------
305  //------------------------------------------------------------------------
306  virtual XRootDStatus DeepLocate( const std::string &path,
307  OpenFlags::Flags flags,
308  ResponseHandler *handler,
309  uint16_t timeout )
310  {
311  (void)path; (void)flags; (void)handler; (void)timeout;
313  }
314 
315  //------------------------------------------------------------------------
317  //------------------------------------------------------------------------
318  virtual XRootDStatus Mv( const std::string &source,
319  const std::string &dest,
320  ResponseHandler *handler,
321  uint16_t timeout )
322  {
323  (void)source; (void)dest; (void)handler; (void)timeout;
325  }
326 
327  //------------------------------------------------------------------------
329  //------------------------------------------------------------------------
330  virtual XRootDStatus Query( QueryCode::Code queryCode,
331  const Buffer &arg,
332  ResponseHandler *handler,
333  uint16_t timeout )
334  {
335  (void)queryCode; (void)arg; (void)handler; (void)timeout;
337  }
338 
339  //------------------------------------------------------------------------
341  //------------------------------------------------------------------------
342  virtual XRootDStatus Truncate( const std::string &path,
343  uint64_t size,
344  ResponseHandler *handler,
345  uint16_t timeout )
346  {
347  (void)path; (void)size; (void)handler; (void)timeout;
349  }
350 
351  //------------------------------------------------------------------------
353  //------------------------------------------------------------------------
354  virtual XRootDStatus Rm( const std::string &path,
355  ResponseHandler *handler,
356  uint16_t timeout )
357  {
358  (void)path; (void)handler; (void)timeout;
360  }
361 
362  //------------------------------------------------------------------------
364  //------------------------------------------------------------------------
365  virtual XRootDStatus MkDir( const std::string &path,
366  MkDirFlags::Flags flags,
367  Access::Mode mode,
368  ResponseHandler *handler,
369  uint16_t timeout )
370  {
371  (void)path; (void)flags; (void)mode; (void)handler; (void)timeout;
373  }
374 
375  //------------------------------------------------------------------------
377  //------------------------------------------------------------------------
378  virtual XRootDStatus RmDir( const std::string &path,
379  ResponseHandler *handler,
380  uint16_t timeout )
381  {
382  (void)path; (void)handler; (void)timeout;
384  }
385 
386  //------------------------------------------------------------------------
388  //------------------------------------------------------------------------
389  virtual XRootDStatus ChMod( const std::string &path,
390  Access::Mode mode,
391  ResponseHandler *handler,
392  uint16_t timeout )
393  {
394  (void)path; (void)mode; (void)handler; (void)timeout;
396  }
397 
398  //------------------------------------------------------------------------
400  //------------------------------------------------------------------------
401  virtual XRootDStatus Ping( ResponseHandler *handler,
402  uint16_t timeout )
403  {
404  (void)handler; (void)timeout;
406  }
407 
408  //------------------------------------------------------------------------
410  //------------------------------------------------------------------------
411  virtual XRootDStatus Stat( const std::string &path,
412  ResponseHandler *handler,
413  uint16_t timeout )
414  {
415  (void)path; (void)handler; (void)timeout;
417  }
418 
419  //------------------------------------------------------------------------
421  //------------------------------------------------------------------------
422  virtual XRootDStatus StatVFS( const std::string &path,
423  ResponseHandler *handler,
424  uint16_t timeout )
425  {
426  (void)path; (void)handler; (void)timeout;
428  }
429 
430  //------------------------------------------------------------------------
432  //------------------------------------------------------------------------
434  uint16_t timeout = 0 )
435  {
436  (void)handler; (void)timeout;
438  }
439 
440  //------------------------------------------------------------------------
442  //------------------------------------------------------------------------
443  virtual XRootDStatus DirList( const std::string &path,
444  DirListFlags::Flags flags,
445  ResponseHandler *handler,
446  uint16_t timeout )
447  {
448  (void)path; (void)flags; (void)handler; (void)timeout;
450  }
451 
452  //------------------------------------------------------------------------
454  //------------------------------------------------------------------------
455  virtual XRootDStatus SendInfo( const std::string &info,
456  ResponseHandler *handler,
457  uint16_t timeout )
458  {
459  (void)info; (void)handler; (void)timeout;
461  }
462 
463  //------------------------------------------------------------------------
465  //------------------------------------------------------------------------
466  virtual XRootDStatus Prepare( const std::vector<std::string> &fileList,
467  PrepareFlags::Flags flags,
468  uint8_t priority,
469  ResponseHandler *handler,
470  uint16_t timeout )
471  {
472  (void)fileList; (void)flags; (void)priority; (void)handler;
473  (void)timeout;
475  }
476 
477  //------------------------------------------------------------------------
479  //------------------------------------------------------------------------
480  virtual XRootDStatus SetXAttr( const std::string &path,
481  const std::vector<xattr_t> &attrs,
482  ResponseHandler *handler,
483  uint16_t timeout )
484  {
485  (void)path; (void)attrs; (void)handler; (void)timeout;
487  }
488 
489  //------------------------------------------------------------------------
491  //------------------------------------------------------------------------
492  virtual XRootDStatus GetXAttr( const std::string &path,
493  const std::vector<std::string> &attrs,
494  ResponseHandler *handler,
495  uint16_t timeout )
496  {
497  (void)path; (void)attrs; (void)handler; (void)timeout;
499  }
500 
501  //------------------------------------------------------------------------
503  //------------------------------------------------------------------------
504  virtual XRootDStatus DelXAttr( const std::string &path,
505  const std::vector<std::string> &attrs,
506  ResponseHandler *handler,
507  uint16_t timeout )
508  {
509  (void)path; (void)attrs; (void)handler; (void)timeout;
511  }
512 
513  //------------------------------------------------------------------------
515  //------------------------------------------------------------------------
516  virtual XRootDStatus ListXAttr( const std::string &path,
517  ResponseHandler *handler,
518  uint16_t timeout )
519  {
520  (void)path; (void)handler; (void)timeout;
522  }
523 
524  //------------------------------------------------------------------------
526  //------------------------------------------------------------------------
527  virtual bool SetProperty( const std::string &name,
528  const std::string &value )
529  {
530  (void)name; (void)value;
531  return false;
532  }
533 
534  //------------------------------------------------------------------------
536  //------------------------------------------------------------------------
537  virtual bool GetProperty( const std::string &name,
538  std::string &value ) const
539  {
540  (void)name; (void)value;
541  return false;
542  }
543  };
544 
545  //----------------------------------------------------------------------------
547  //----------------------------------------------------------------------------
549  {
550  public:
551  //------------------------------------------------------------------------
553  //------------------------------------------------------------------------
554  virtual ~PlugInFactory() {}
555 
556  //------------------------------------------------------------------------
558  //------------------------------------------------------------------------
559  virtual FilePlugIn *CreateFile( const std::string &url ) = 0;
560 
561  //------------------------------------------------------------------------
563  //------------------------------------------------------------------------
564  virtual FileSystemPlugIn *CreateFileSystem( const std::string &url ) = 0;
565  };
566 }
567 
568 #endif // __XRD_CL_PLUGIN_INTERFACE__
virtual bool SetProperty(const std::string &name, const std::string &value)
Definition: XrdClPlugInInterface.hh:527
virtual XRootDStatus Close(ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:61
virtual XRootDStatus DelXAttr(const std::string &path, const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:504
virtual ~FilePlugIn()
Destructor.
Definition: XrdClPlugInInterface.hh:44
virtual XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:196
virtual XRootDStatus SetXAttr(const std::string &path, const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:480
virtual XRootDStatus RmDir(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:378
virtual XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:244
virtual XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:185
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:1046
virtual bool GetProperty(const std::string &name, std::string &value) const
Definition: XrdClPlugInInterface.hh:272
virtual XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClPlugInInterface.hh:208
Definition: XrdClOptional.hh:43
virtual XRootDStatus MkDir(const std::string &path, MkDirFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:365
virtual XRootDStatus Prepare(const std::vector< std::string > &fileList, PrepareFlags::Flags flags, uint8_t priority, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:466
virtual XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:48
virtual XRootDStatus DirList(const std::string &path, DirListFlags::Flags flags, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:443
virtual XRootDStatus Write(uint64_t offset, Buffer &&buffer, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClPlugInInterface.hh:135
virtual XRootDStatus Read(uint64_t offset, uint32_t size, Optional< uint64_t > fdoff, int fd, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClPlugInInterface.hh:95
virtual XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:82
Flags
Definition: XrdClFileSystem.hh:175
virtual XRootDStatus Write(uint64_t offset, uint32_t size, Optional< uint64_t > fdoff, int fd, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClPlugInInterface.hh:147
virtual XRootDStatus Rm(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:354
virtual bool GetProperty(const std::string &name, std::string &value) const
Definition: XrdClPlugInInterface.hh:537
virtual XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:109
Definition: XrdOucIOVec.hh:65
const uint16_t errNotImplemented
Operation is not implemented.
Definition: XrdClStatus.hh:64
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:38
virtual XRootDStatus DeepLocate(const std::string &path, OpenFlags::Flags flags, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:306
virtual FilePlugIn * CreateFile(const std::string &url)=0
Create a file plug-in for the given URL.
Flags
Definition: XrdClFileSystem.hh:142
virtual XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:175
virtual bool IsOpen() const
Definition: XrdClPlugInInterface.hh:254
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
Request status.
Definition: XrdClXRootDResponses.hh:218
virtual XRootDStatus Protocol(ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClPlugInInterface.hh:433
virtual XRootDStatus ListXAttr(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:516
virtual XRootDStatus Mv(const std::string &source, const std::string &dest, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:318
virtual XRootDStatus Stat(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:411
j template void())
Definition: XrdOucJson.hh:4121
virtual XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:233
virtual XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:122
Plugin factory.
Definition: XrdClPlugInInterface.hh:548
virtual bool SetProperty(const std::string &name, const std::string &value)
Definition: XrdClPlugInInterface.hh:262
virtual XRootDStatus ChMod(const std::string &path, Access::Mode mode, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:389
Handle an async response.
Definition: XrdClXRootDResponses.hh:1116
Code
XRootD query request codes.
Definition: XrdClFileSystem.hh:52
virtual XRootDStatus SendInfo(const std::string &info, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:455
virtual XRootDStatus PgWrite(uint64_t offset, uint32_t nbpgs, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:161
Flags
Definition: XrdClFileSystem.hh:155
virtual ~FileSystemPlugIn()
Destructor.
Definition: XrdClPlugInInterface.hh:289
Mode
Access mode.
Definition: XrdClFileSystem.hh:121
virtual XRootDStatus Ping(ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:401
virtual XRootDStatus Query(QueryCode::Code queryCode, const Buffer &arg, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:330
virtual XRootDStatus StatVFS(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:422
virtual XRootDStatus WriteV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClPlugInInterface.hh:220
virtual XRootDStatus GetXAttr(const std::string &path, const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:492
Flags
Open flags, may be or&#39;d when appropriate.
Definition: XrdClFileSystem.hh:75
virtual ~PlugInFactory()
Destructor.
Definition: XrdClPlugInInterface.hh:554
virtual XRootDStatus Locate(const std::string &path, OpenFlags::Flags flags, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:294
virtual XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:71
virtual FileSystemPlugIn * CreateFileSystem(const std::string &url)=0
Create a file system plug-in for the given URL.
virtual XRootDStatus Truncate(const std::string &path, uint64_t size, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:342
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:283
Binary blob representation.
Definition: XrdClBuffer.hh:33