xrootd
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 
31 namespace XrdCl
32 {
33  //----------------------------------------------------------------------------
35  //----------------------------------------------------------------------------
36  class FilePlugIn
37  {
38  public:
39  //------------------------------------------------------------------------
41  //------------------------------------------------------------------------
42  virtual ~FilePlugIn() {}
43  //------------------------------------------------------------------------
45  //------------------------------------------------------------------------
46  virtual XRootDStatus Open( const std::string &url,
47  OpenFlags::Flags flags,
48  Access::Mode mode,
49  ResponseHandler *handler,
50  uint16_t timeout )
51  {
52  (void)url; (void)flags; (void)mode; (void)handler; (void)timeout;
54  }
55 
56  //------------------------------------------------------------------------
58  //------------------------------------------------------------------------
59  virtual XRootDStatus Close( ResponseHandler *handler,
60  uint16_t timeout )
61  {
62  (void)handler; (void)timeout;
64  }
65 
66  //------------------------------------------------------------------------
68  //------------------------------------------------------------------------
69  virtual XRootDStatus Stat( bool force,
70  ResponseHandler *handler,
71  uint16_t timeout )
72  {
73  (void)force; (void)handler; (void)timeout;
75  }
76 
77 
78  //------------------------------------------------------------------------
80  //------------------------------------------------------------------------
81  virtual XRootDStatus Read( uint64_t offset,
82  uint32_t size,
83  void *buffer,
84  ResponseHandler *handler,
85  uint16_t timeout )
86  {
87  (void)offset; (void)size; (void)buffer; (void)handler; (void)timeout;
89  }
90 
91  //------------------------------------------------------------------------
93  //------------------------------------------------------------------------
94  virtual XRootDStatus Write( uint64_t offset,
95  uint32_t size,
96  const void *buffer,
97  ResponseHandler *handler,
98  uint16_t timeout )
99  {
100  (void)offset; (void)size; (void)buffer; (void)handler; (void)timeout;
102  }
103 
104  //------------------------------------------------------------------------
106  //------------------------------------------------------------------------
107  virtual XRootDStatus Sync( ResponseHandler *handler,
108  uint16_t timeout )
109  {
110  (void)handler; (void)timeout;
112  }
113 
114  //------------------------------------------------------------------------
116  //------------------------------------------------------------------------
117  virtual XRootDStatus Truncate( uint64_t size,
118  ResponseHandler *handler,
119  uint16_t timeout )
120  {
121  (void)size; (void)handler; (void)timeout;
123  }
124 
125  //------------------------------------------------------------------------
127  //------------------------------------------------------------------------
128  virtual XRootDStatus VectorRead( const ChunkList &chunks,
129  void *buffer,
130  ResponseHandler *handler,
131  uint16_t timeout )
132  {
133  (void)chunks; (void)buffer; (void)handler; (void)timeout;
135  }
136 
137  //------------------------------------------------------------------------
139  //------------------------------------------------------------------------
140  virtual XRootDStatus Fcntl( const Buffer &arg,
141  ResponseHandler *handler,
142  uint16_t timeout )
143  {
144  (void)arg; (void)handler; (void)timeout;
146  }
147 
148  //------------------------------------------------------------------------
150  //------------------------------------------------------------------------
151  virtual XRootDStatus Visa( ResponseHandler *handler,
152  uint16_t timeout )
153  {
154  (void)handler; (void)timeout;
156  }
157 
158  //------------------------------------------------------------------------
160  //------------------------------------------------------------------------
161  virtual bool IsOpen() const
162  {
163  return false;
164  }
165 
166  //------------------------------------------------------------------------
168  //------------------------------------------------------------------------
169  virtual bool SetProperty( const std::string &name,
170  const std::string &value )
171  {
172  (void)name; (void)value;
173  return false;
174  }
175 
176  //------------------------------------------------------------------------
178  //------------------------------------------------------------------------
179  virtual bool GetProperty( const std::string &name,
180  std::string &value ) const
181  {
182  (void)name; (void)value;
183  return false;
184  }
185  };
186 
187  //----------------------------------------------------------------------------
189  //----------------------------------------------------------------------------
191  {
192  public:
193  //------------------------------------------------------------------------
195  //------------------------------------------------------------------------
196  virtual ~FileSystemPlugIn() {}
197 
198  //------------------------------------------------------------------------
200  //------------------------------------------------------------------------
201  virtual XRootDStatus Locate( const std::string &path,
202  OpenFlags::Flags flags,
203  ResponseHandler *handler,
204  uint16_t timeout )
205  {
206  (void)path; (void)flags; (void)handler; (void)timeout;
208  }
209 
210  //------------------------------------------------------------------------
212  //------------------------------------------------------------------------
213  virtual XRootDStatus Mv( const std::string &source,
214  const std::string &dest,
215  ResponseHandler *handler,
216  uint16_t timeout )
217  {
218  (void)source; (void)dest; (void)handler; (void)timeout;
220  }
221 
222  //------------------------------------------------------------------------
224  //------------------------------------------------------------------------
225  virtual XRootDStatus Query( QueryCode::Code queryCode,
226  const Buffer &arg,
227  ResponseHandler *handler,
228  uint16_t timeout )
229  {
230  (void)queryCode; (void)arg; (void)handler; (void)timeout;
232  }
233 
234  //------------------------------------------------------------------------
236  //------------------------------------------------------------------------
237  virtual XRootDStatus Truncate( const std::string &path,
238  uint64_t size,
239  ResponseHandler *handler,
240  uint16_t timeout )
241  {
242  (void)path; (void)size; (void)handler; (void)timeout;
244  }
245 
246  //------------------------------------------------------------------------
248  //------------------------------------------------------------------------
249  virtual XRootDStatus Rm( const std::string &path,
250  ResponseHandler *handler,
251  uint16_t timeout )
252  {
253  (void)path; (void)handler; (void)timeout;
255  }
256 
257  //------------------------------------------------------------------------
259  //------------------------------------------------------------------------
260  virtual XRootDStatus MkDir( const std::string &path,
261  MkDirFlags::Flags flags,
262  Access::Mode mode,
263  ResponseHandler *handler,
264  uint16_t timeout )
265  {
266  (void)path; (void)flags; (void)mode; (void)handler; (void)timeout;
268  }
269 
270  //------------------------------------------------------------------------
272  //------------------------------------------------------------------------
273  virtual XRootDStatus RmDir( const std::string &path,
274  ResponseHandler *handler,
275  uint16_t timeout )
276  {
277  (void)path; (void)handler; (void)timeout;
279  }
280 
281  //------------------------------------------------------------------------
283  //------------------------------------------------------------------------
284  virtual XRootDStatus ChMod( const std::string &path,
285  Access::Mode mode,
286  ResponseHandler *handler,
287  uint16_t timeout )
288  {
289  (void)path; (void)mode; (void)handler; (void)timeout;
291  }
292 
293  //------------------------------------------------------------------------
295  //------------------------------------------------------------------------
296  virtual XRootDStatus Ping( ResponseHandler *handler,
297  uint16_t timeout )
298  {
299  (void)handler; (void)timeout;
301  }
302 
303  //------------------------------------------------------------------------
305  //------------------------------------------------------------------------
306  virtual XRootDStatus Stat( const std::string &path,
307  ResponseHandler *handler,
308  uint16_t timeout )
309  {
310  (void)path; (void)handler; (void)timeout;
312  }
313 
314  //------------------------------------------------------------------------
316  //------------------------------------------------------------------------
317  virtual XRootDStatus StatVFS( const std::string &path,
318  ResponseHandler *handler,
319  uint16_t timeout )
320  {
321  (void)path; (void)handler; (void)timeout;
323  }
324 
325  //------------------------------------------------------------------------
327  //------------------------------------------------------------------------
329  uint16_t timeout = 0 )
330  {
331  (void)handler; (void)timeout;
333  }
334 
335  //------------------------------------------------------------------------
337  //------------------------------------------------------------------------
338  virtual XRootDStatus DirList( const std::string &path,
339  DirListFlags::Flags flags,
340  ResponseHandler *handler,
341  uint16_t timeout )
342  {
343  (void)path; (void)flags; (void)handler; (void)timeout;
345  }
346 
347  //------------------------------------------------------------------------
349  //------------------------------------------------------------------------
350  virtual XRootDStatus SendInfo( const std::string &info,
351  ResponseHandler *handler,
352  uint16_t timeout )
353  {
354  (void)info; (void)handler; (void)timeout;
356  }
357 
358  //------------------------------------------------------------------------
360  //------------------------------------------------------------------------
361  virtual XRootDStatus Prepare( const std::vector<std::string> &fileList,
362  PrepareFlags::Flags flags,
363  uint8_t priority,
364  ResponseHandler *handler,
365  uint16_t timeout )
366  {
367  (void)fileList; (void)flags; (void)priority; (void)handler;
368  (void)timeout;
370  }
371 
372  //------------------------------------------------------------------------
374  //------------------------------------------------------------------------
375  virtual bool SetProperty( const std::string &name,
376  const std::string &value )
377  {
378  (void)name; (void)value;
379  return false;
380  }
381 
382  //------------------------------------------------------------------------
384  //------------------------------------------------------------------------
385  virtual bool GetProperty( const std::string &name,
386  std::string &value ) const
387  {
388  (void)name; (void)value;
389  return false;
390  }
391  };
392 
393  //----------------------------------------------------------------------------
395  //----------------------------------------------------------------------------
397  {
398  public:
399  //------------------------------------------------------------------------
401  //------------------------------------------------------------------------
402  virtual ~PlugInFactory() {}
403 
404  //------------------------------------------------------------------------
406  //------------------------------------------------------------------------
407  virtual FilePlugIn *CreateFile( const std::string &url ) = 0;
408 
409  //------------------------------------------------------------------------
411  //------------------------------------------------------------------------
412  virtual FileSystemPlugIn *CreateFileSystem( const std::string &url ) = 0;
413  };
414 }
415 
416 #endif // __XRD_CL_PLUGIN_INTERFACE__
virtual bool SetProperty(const std::string &name, const std::string &value)
Definition: XrdClPlugInInterface.hh:375
virtual XRootDStatus Close(ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:59
virtual ~FilePlugIn()
Destructor.
Definition: XrdClPlugInInterface.hh:42
virtual XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:128
virtual XRootDStatus RmDir(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:273
virtual XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:151
virtual XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:117
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:769
virtual XRootDStatus MkDir(const std::string &path, MkDirFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:260
virtual XRootDStatus Prepare(const std::vector< std::string > &fileList, PrepareFlags::Flags flags, uint8_t priority, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:361
virtual XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:46
virtual XRootDStatus DirList(const std::string &path, DirListFlags::Flags flags, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:338
virtual XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:81
Flags
Definition: XrdClFileSystem.hh:171
virtual XRootDStatus Rm(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:249
const uint16_t errNotImplemented
Operation is not implemented.
Definition: XrdClStatus.hh:63
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:36
virtual bool IsOpen() const
Definition: XrdClPlugInInterface.hh:161
virtual FilePlugIn * CreateFile(const std::string &url)=0
Create a file plug-in for the given URL.
Flags
Definition: XrdClFileSystem.hh:141
virtual XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:107
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
Request status.
Definition: XrdClXRootDResponses.hh:212
Definition: XrdClAnyObject.hh:25
virtual XRootDStatus Protocol(ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClPlugInInterface.hh:328
virtual XRootDStatus Mv(const std::string &source, const std::string &dest, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:213
virtual XRootDStatus Stat(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:306
virtual XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:140
virtual XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:94
Plugin factory.
Definition: XrdClPlugInInterface.hh:396
virtual bool SetProperty(const std::string &name, const std::string &value)
Definition: XrdClPlugInInterface.hh:169
virtual XRootDStatus ChMod(const std::string &path, Access::Mode mode, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:284
Handle an async response.
Definition: XrdClXRootDResponses.hh:839
Code
XRootD query request codes.
Definition: XrdClFileSystem.hh:53
virtual XRootDStatus SendInfo(const std::string &info, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:350
Flags
Definition: XrdClFileSystem.hh:154
virtual bool GetProperty(const std::string &name, std::string &value) const
Definition: XrdClPlugInInterface.hh:179
virtual ~FileSystemPlugIn()
Destructor.
Definition: XrdClPlugInInterface.hh:196
Mode
Access mode.
Definition: XrdClFileSystem.hh:120
virtual XRootDStatus Ping(ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:296
virtual XRootDStatus Query(QueryCode::Code queryCode, const Buffer &arg, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:225
virtual bool GetProperty(const std::string &name, std::string &value) const
Definition: XrdClPlugInInterface.hh:385
virtual XRootDStatus StatVFS(const std::string &path, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:317
Flags
Open flags, may be or&#39;d when appropriate.
Definition: XrdClFileSystem.hh:76
virtual ~PlugInFactory()
Destructor.
Definition: XrdClPlugInInterface.hh:402
virtual XRootDStatus Locate(const std::string &path, OpenFlags::Flags flags, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:201
virtual XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClPlugInInterface.hh:69
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:237
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:190
Binary blob representation.
Definition: XrdClBuffer.hh:33