00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __XRD_CL_PLUGIN_INTERFACE__
00026 #define __XRD_CL_PLUGIN_INTERFACE__
00027
00028 #include "XrdCl/XrdClFile.hh"
00029 #include "XrdCl/XrdClFileSystem.hh"
00030 #include "XrdCl/XrdClOptional.hh"
00031
00032 namespace XrdCl
00033 {
00034
00035
00037
00038 class FilePlugIn
00039 {
00040 public:
00041
00043
00044 virtual ~FilePlugIn() {}
00045
00047
00048 virtual XRootDStatus Open( const std::string &url,
00049 OpenFlags::Flags flags,
00050 Access::Mode mode,
00051 ResponseHandler *handler,
00052 uint16_t timeout )
00053 {
00054 (void)url; (void)flags; (void)mode; (void)handler; (void)timeout;
00055 return XRootDStatus( stError, errNotImplemented );
00056 }
00057
00058
00060
00061 virtual XRootDStatus Close( ResponseHandler *handler,
00062 uint16_t timeout )
00063 {
00064 (void)handler; (void)timeout;
00065 return XRootDStatus( stError, errNotImplemented );
00066 }
00067
00068
00070
00071 virtual XRootDStatus Stat( bool force,
00072 ResponseHandler *handler,
00073 uint16_t timeout )
00074 {
00075 (void)force; (void)handler; (void)timeout;
00076 return XRootDStatus( stError, errNotImplemented );
00077 }
00078
00079
00081
00082 virtual XRootDStatus Read( uint64_t offset,
00083 uint32_t size,
00084 void *buffer,
00085 ResponseHandler *handler,
00086 uint16_t timeout )
00087 {
00088 (void)offset; (void)size; (void)buffer; (void)handler; (void)timeout;
00089 return XRootDStatus( stError, errNotImplemented );
00090 }
00091
00092
00094
00095 virtual XRootDStatus Read( uint64_t offset,
00096 uint32_t size,
00097 Optional<uint64_t> fdoff,
00098 int fd,
00099 ResponseHandler *handler,
00100 uint16_t timeout = 0 )
00101 {
00102 (void)offset; (void)size; (void)fdoff; (void)fd, (void)handler; (void)timeout;
00103 return XRootDStatus( stError, errNotImplemented );
00104 }
00105
00106
00108
00109 virtual XRootDStatus PgRead( uint64_t offset,
00110 uint32_t nbpgs,
00111 void *buffer,
00112 ResponseHandler *handler,
00113 uint16_t timeout )
00114 {
00115 (void)offset; (void)nbpgs; (void)buffer; (void)handler; (void)timeout;
00116 return XRootDStatus( stError, errNotImplemented );
00117 }
00118
00119
00121
00122 virtual XRootDStatus Write( uint64_t offset,
00123 uint32_t size,
00124 const void *buffer,
00125 ResponseHandler *handler,
00126 uint16_t timeout )
00127 {
00128 (void)offset; (void)size; (void)buffer; (void)handler; (void)timeout;
00129 return XRootDStatus( stError, errNotImplemented );
00130 }
00131
00132
00134
00135 virtual XRootDStatus Write( uint64_t offset,
00136 Buffer &&buffer,
00137 ResponseHandler *handler,
00138 uint16_t timeout = 0 )
00139 {
00140 (void)offset; (void)buffer; (void)handler; (void)timeout;
00141 return XRootDStatus( stError, errNotImplemented );
00142 }
00143
00144
00146
00147 virtual XRootDStatus Write( uint64_t offset,
00148 uint32_t size,
00149 Optional<uint64_t> fdoff,
00150 int fd,
00151 ResponseHandler *handler,
00152 uint16_t timeout = 0 )
00153 {
00154 (void)offset; (void)size; (void)fdoff; (void)fd, (void)handler; (void)timeout;
00155 return XRootDStatus( stError, errNotImplemented );
00156 }
00157
00158
00160
00161 virtual XRootDStatus PgWrite( uint64_t offset,
00162 uint32_t nbpgs,
00163 const void *buffer,
00164 std::vector<uint32_t> &cksums,
00165 ResponseHandler *handler,
00166 uint16_t timeout )
00167 {
00168 (void)offset; (void)nbpgs; (void)buffer; (void)cksums, (void)handler; (void)timeout;
00169 return XRootDStatus( stError, errNotImplemented );
00170 }
00171
00172
00174
00175 virtual XRootDStatus Sync( ResponseHandler *handler,
00176 uint16_t timeout )
00177 {
00178 (void)handler; (void)timeout;
00179 return XRootDStatus( stError, errNotImplemented );
00180 }
00181
00182
00184
00185 virtual XRootDStatus Truncate( uint64_t size,
00186 ResponseHandler *handler,
00187 uint16_t timeout )
00188 {
00189 (void)size; (void)handler; (void)timeout;
00190 return XRootDStatus( stError, errNotImplemented );
00191 }
00192
00193
00195
00196 virtual XRootDStatus VectorRead( const ChunkList &chunks,
00197 void *buffer,
00198 ResponseHandler *handler,
00199 uint16_t timeout )
00200 {
00201 (void)chunks; (void)buffer; (void)handler; (void)timeout;
00202 return XRootDStatus( stError, errNotImplemented );
00203 }
00204
00205
00207
00208 virtual XRootDStatus VectorWrite( const ChunkList &chunks,
00209 ResponseHandler *handler,
00210 uint16_t timeout = 0 )
00211 {
00212 (void)chunks; (void)handler; (void)timeout;
00213 return XRootDStatus( stError, errNotImplemented );
00214 }
00215
00216
00217
00219
00220 virtual XRootDStatus WriteV( uint64_t offset,
00221 const struct iovec *iov,
00222 int iovcnt,
00223 ResponseHandler *handler,
00224 uint16_t timeout = 0 )
00225 {
00226 (void)offset; (void)iov; (void)iovcnt; (void)handler; (void)timeout;
00227 return XRootDStatus( stError, errNotImplemented );
00228 }
00229
00230
00232
00233 virtual XRootDStatus Fcntl( const Buffer &arg,
00234 ResponseHandler *handler,
00235 uint16_t timeout )
00236 {
00237 (void)arg; (void)handler; (void)timeout;
00238 return XRootDStatus( stError, errNotImplemented );
00239 }
00240
00241
00243
00244 virtual XRootDStatus Visa( ResponseHandler *handler,
00245 uint16_t timeout )
00246 {
00247 (void)handler; (void)timeout;
00248 return XRootDStatus( stError, errNotImplemented );
00249 }
00250
00251
00253
00254 virtual bool IsOpen() const
00255 {
00256 return false;
00257 }
00258
00259
00261
00262 virtual bool SetProperty( const std::string &name,
00263 const std::string &value )
00264 {
00265 (void)name; (void)value;
00266 return false;
00267 }
00268
00269
00271
00272 virtual bool GetProperty( const std::string &name,
00273 std::string &value ) const
00274 {
00275 (void)name; (void)value;
00276 return false;
00277 }
00278 };
00279
00280
00282
00283 class FileSystemPlugIn
00284 {
00285 public:
00286
00288
00289 virtual ~FileSystemPlugIn() {}
00290
00291
00293
00294 virtual XRootDStatus Locate( const std::string &path,
00295 OpenFlags::Flags flags,
00296 ResponseHandler *handler,
00297 uint16_t timeout )
00298 {
00299 (void)path; (void)flags; (void)handler; (void)timeout;
00300 return XRootDStatus( stError, errNotImplemented );
00301 }
00302
00303
00305
00306 virtual XRootDStatus DeepLocate( const std::string &path,
00307 OpenFlags::Flags flags,
00308 ResponseHandler *handler,
00309 uint16_t timeout )
00310 {
00311 (void)path; (void)flags; (void)handler; (void)timeout;
00312 return XRootDStatus( stError, errNotImplemented );
00313 }
00314
00315
00317
00318 virtual XRootDStatus Mv( const std::string &source,
00319 const std::string &dest,
00320 ResponseHandler *handler,
00321 uint16_t timeout )
00322 {
00323 (void)source; (void)dest; (void)handler; (void)timeout;
00324 return XRootDStatus( stError, errNotImplemented );
00325 }
00326
00327
00329
00330 virtual XRootDStatus Query( QueryCode::Code queryCode,
00331 const Buffer &arg,
00332 ResponseHandler *handler,
00333 uint16_t timeout )
00334 {
00335 (void)queryCode; (void)arg; (void)handler; (void)timeout;
00336 return XRootDStatus( stError, errNotImplemented );
00337 }
00338
00339
00341
00342 virtual XRootDStatus Truncate( const std::string &path,
00343 uint64_t size,
00344 ResponseHandler *handler,
00345 uint16_t timeout )
00346 {
00347 (void)path; (void)size; (void)handler; (void)timeout;
00348 return XRootDStatus( stError, errNotImplemented );
00349 }
00350
00351
00353
00354 virtual XRootDStatus Rm( const std::string &path,
00355 ResponseHandler *handler,
00356 uint16_t timeout )
00357 {
00358 (void)path; (void)handler; (void)timeout;
00359 return XRootDStatus( stError, errNotImplemented );
00360 }
00361
00362
00364
00365 virtual XRootDStatus MkDir( const std::string &path,
00366 MkDirFlags::Flags flags,
00367 Access::Mode mode,
00368 ResponseHandler *handler,
00369 uint16_t timeout )
00370 {
00371 (void)path; (void)flags; (void)mode; (void)handler; (void)timeout;
00372 return XRootDStatus( stError, errNotImplemented );
00373 }
00374
00375
00377
00378 virtual XRootDStatus RmDir( const std::string &path,
00379 ResponseHandler *handler,
00380 uint16_t timeout )
00381 {
00382 (void)path; (void)handler; (void)timeout;
00383 return XRootDStatus( stError, errNotImplemented );
00384 }
00385
00386
00388
00389 virtual XRootDStatus ChMod( const std::string &path,
00390 Access::Mode mode,
00391 ResponseHandler *handler,
00392 uint16_t timeout )
00393 {
00394 (void)path; (void)mode; (void)handler; (void)timeout;
00395 return XRootDStatus( stError, errNotImplemented );
00396 }
00397
00398
00400
00401 virtual XRootDStatus Ping( ResponseHandler *handler,
00402 uint16_t timeout )
00403 {
00404 (void)handler; (void)timeout;
00405 return XRootDStatus( stError, errNotImplemented );
00406 }
00407
00408
00410
00411 virtual XRootDStatus Stat( const std::string &path,
00412 ResponseHandler *handler,
00413 uint16_t timeout )
00414 {
00415 (void)path; (void)handler; (void)timeout;
00416 return XRootDStatus( stError, errNotImplemented );
00417 }
00418
00419
00421
00422 virtual XRootDStatus StatVFS( const std::string &path,
00423 ResponseHandler *handler,
00424 uint16_t timeout )
00425 {
00426 (void)path; (void)handler; (void)timeout;
00427 return XRootDStatus( stError, errNotImplemented );
00428 }
00429
00430
00432
00433 virtual XRootDStatus Protocol( ResponseHandler *handler,
00434 uint16_t timeout = 0 )
00435 {
00436 (void)handler; (void)timeout;
00437 return XRootDStatus( stError, errNotImplemented );
00438 }
00439
00440
00442
00443 virtual XRootDStatus DirList( const std::string &path,
00444 DirListFlags::Flags flags,
00445 ResponseHandler *handler,
00446 uint16_t timeout )
00447 {
00448 (void)path; (void)flags; (void)handler; (void)timeout;
00449 return XRootDStatus( stError, errNotImplemented );
00450 }
00451
00452
00454
00455 virtual XRootDStatus SendInfo( const std::string &info,
00456 ResponseHandler *handler,
00457 uint16_t timeout )
00458 {
00459 (void)info; (void)handler; (void)timeout;
00460 return XRootDStatus( stError, errNotImplemented );
00461 }
00462
00463
00465
00466 virtual XRootDStatus Prepare( const std::vector<std::string> &fileList,
00467 PrepareFlags::Flags flags,
00468 uint8_t priority,
00469 ResponseHandler *handler,
00470 uint16_t timeout )
00471 {
00472 (void)fileList; (void)flags; (void)priority; (void)handler;
00473 (void)timeout;
00474 return XRootDStatus( stError, errNotImplemented );
00475 }
00476
00477
00479
00480 virtual XRootDStatus SetXAttr( const std::string &path,
00481 const std::vector<xattr_t> &attrs,
00482 ResponseHandler *handler,
00483 uint16_t timeout )
00484 {
00485 (void)path; (void)attrs; (void)handler; (void)timeout;
00486 return XRootDStatus( stError, errNotImplemented );
00487 }
00488
00489
00491
00492 virtual XRootDStatus GetXAttr( const std::string &path,
00493 const std::vector<std::string> &attrs,
00494 ResponseHandler *handler,
00495 uint16_t timeout )
00496 {
00497 (void)path; (void)attrs; (void)handler; (void)timeout;
00498 return XRootDStatus( stError, errNotImplemented );
00499 }
00500
00501
00503
00504 virtual XRootDStatus DelXAttr( const std::string &path,
00505 const std::vector<std::string> &attrs,
00506 ResponseHandler *handler,
00507 uint16_t timeout )
00508 {
00509 (void)path; (void)attrs; (void)handler; (void)timeout;
00510 return XRootDStatus( stError, errNotImplemented );
00511 }
00512
00513
00515
00516 virtual XRootDStatus ListXAttr( const std::string &path,
00517 ResponseHandler *handler,
00518 uint16_t timeout )
00519 {
00520 (void)path; (void)handler; (void)timeout;
00521 return XRootDStatus( stError, errNotImplemented );
00522 }
00523
00524
00526
00527 virtual bool SetProperty( const std::string &name,
00528 const std::string &value )
00529 {
00530 (void)name; (void)value;
00531 return false;
00532 }
00533
00534
00536
00537 virtual bool GetProperty( const std::string &name,
00538 std::string &value ) const
00539 {
00540 (void)name; (void)value;
00541 return false;
00542 }
00543 };
00544
00545
00547
00548 class PlugInFactory
00549 {
00550 public:
00551
00553
00554 virtual ~PlugInFactory() {}
00555
00556
00558
00559 virtual FilePlugIn *CreateFile( const std::string &url ) = 0;
00560
00561
00563
00564 virtual FileSystemPlugIn *CreateFileSystem( const std::string &url ) = 0;
00565 };
00566 }
00567
00568 #endif // __XRD_CL_PLUGIN_INTERFACE__