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 Write( uint64_t offset, uint32_t size, const void *buffer,
112  ResponseHandler *handler, uint16_t timeout = 0 );
113 
114  //------------------------------------------------------------------------
121  //------------------------------------------------------------------------
122  XRootDStatus Sync( ResponseHandler *handler, uint16_t timeout = 0 );
123 
124  //------------------------------------------------------------------------
132  //------------------------------------------------------------------------
133  XRootDStatus Truncate( uint64_t size, ResponseHandler *handler,
134  uint16_t timeout = 0 );
135 
136  //------------------------------------------------------------------------
145  //------------------------------------------------------------------------
146  XRootDStatus VectorRead( const ChunkList &chunks, void *buffer,
147  ResponseHandler *handler, uint16_t timeout = 0 );
148 
149  //------------------------------------------------------------------------
157  //------------------------------------------------------------------------
158  XRootDStatus VectorWrite( const ChunkList &chunks,
159  ResponseHandler *handler, uint16_t timeout = 0 );
160 
161  //------------------------------------------------------------------------
171  //------------------------------------------------------------------------
172  XRootDStatus WriteV( uint64_t offset,
173  ChunkList *chunks,
174  ResponseHandler *handler,
175  uint16_t timeout = 0 );
176 
177  //------------------------------------------------------------------------
184  //------------------------------------------------------------------------
186  ResponseHandler *handler );
187 
188  //------------------------------------------------------------------------
198  //------------------------------------------------------------------------
199  XRootDStatus Fcntl( const Buffer &arg, ResponseHandler *handler,
200  uint16_t timeout = 0 );
201 
202  //------------------------------------------------------------------------
211  //------------------------------------------------------------------------
212  XRootDStatus Visa( ResponseHandler *handler, uint16_t timeout = 0 );
213  //------------------------------------------------------------------------
219  //------------------------------------------------------------------------
220  static XRootDStatus MkdirPath( const std::string &path );
221 
222  void SetHostList( const HostList &hostList )
223  {
224  pHostList = hostList;
225  }
226 
228  {
229  return pHostList;
230  }
231 
232  //------------------------------------------------------------------------
234  //------------------------------------------------------------------------
235  XRootDStatus ExecRequest( const URL &url,
236  Message *msg,
237  ResponseHandler *handler,
238  MessageSendParams &sendParams );
239 
240  private:
241 
242  XRootDStatus OpenImpl( const std::string &url, uint16_t flags,
243  uint16_t mode, AnyObject *&resp );
244 
245  //---------------------------------------------------------------------
246  // Receives LocalFileTasks to handle them async
247  //---------------------------------------------------------------------
249 
250  //---------------------------------------------------------------------
251  // Internal filedescriptor, which is used by all operations after open
252  //---------------------------------------------------------------------
253  int fd;
254 
255  //---------------------------------------------------------------------
256  // The file URL
257  //---------------------------------------------------------------------
258  std::string pUrl;
259 
260  //---------------------------------------------------------------------
261  // The host list returned in the user callback
262  //---------------------------------------------------------------------
264 
265  };
266 }
267 #endif
XrdCl::LocalFileHandler::Open
XRootDStatus Open(const std::string &url, uint16_t flags, uint16_t mode, ResponseHandler *handler, uint16_t timeout=0)
XrdCl::MessageSendParams
Definition: XrdClMessageUtils.hh:128
XrdCl::ResponseHandler
Handle an async response.
Definition: XrdClXRootDResponses.hh:854
XrdCl::LocalFileHandler::MkdirPath
static XRootDStatus MkdirPath(const std::string &path)
XrdCl::LocalFileHandler
Definition: XrdClLocalFileHandler.hh:32
XrdCl::LocalFileHandler::pUrl
std::string pUrl
Definition: XrdClLocalFileHandler.hh:258
XrdCl::LocalFileHandler::LocalFileHandler
LocalFileHandler()
XrdCl::LocalFileHandler::QueueTask
XRootDStatus QueueTask(XRootDStatus *st, AnyObject *obj, ResponseHandler *handler)
XrdCl::LocalFileHandler::pHostList
HostList pHostList
Definition: XrdClLocalFileHandler.hh:263
XrdCl::JobManager
A synchronized queue.
Definition: XrdClJobManager.hh:50
XrdCl::LocalFileHandler::Stat
XRootDStatus Stat(ResponseHandler *handler, uint16_t timeout=0)
XrdClLocalFileTask.hh
XrdCl::Message
The message representation used throughout the system.
Definition: XrdClMessage.hh:29
XrdCl::LocalFileHandler::Truncate
XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout=0)
XrdCl::LocalFileHandler::OpenImpl
XRootDStatus OpenImpl(const std::string &url, uint16_t flags, uint16_t mode, AnyObject *&resp)
XrdClLog.hh
XrdCl::XRootDStatus
Request status.
Definition: XrdClXRootDResponses.hh:212
XrdCl::LocalFileHandler::jmngr
JobManager * jmngr
Definition: XrdClLocalFileHandler.hh:248
XrdCl::ChunkList
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:784
XrdCl::LocalFileHandler::Read
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0)
XrdCl::LocalFileHandler::~LocalFileHandler
~LocalFileHandler()
XrdCl::LocalFileHandler::Write
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0)
XrdCl::LocalFileHandler::Close
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0)
XrdClJobManager.hh
XrdCl::LocalFileHandler::SetHostList
void SetHostList(const HostList &hostList)
Definition: XrdClLocalFileHandler.hh:222
XrdCl
Definition: XrdClAnyObject.hh:25
XrdClDefaultEnv.hh
XrdCl::HostList
std::vector< HostInfo > HostList
Definition: XrdClXRootDResponses.hh:849
XrdCl::LocalFileHandler::fd
int fd
Definition: XrdClLocalFileHandler.hh:253
XrdCl::LocalFileHandler::Visa
XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout=0)
XrdCl::LocalFileHandler::Fcntl
XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0)
XrdCl::LocalFileHandler::ExecRequest
XRootDStatus ExecRequest(const URL &url, Message *msg, ResponseHandler *handler, MessageSendParams &sendParams)
Translate an XRootD request into LocalFileHandler call.
XrdCl::LocalFileHandler::GetHostList
const HostList & GetHostList()
Definition: XrdClLocalFileHandler.hh:227
XrdCl::URL
URL representation.
Definition: XrdClURL.hh:30
XrdCl::Buffer
Binary blob representation.
Definition: XrdClBuffer.hh:33
XrdCl::LocalFileHandler::Sync
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0)
XrdCl::LocalFileHandler::VectorRead
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0)
XrdCl::AnyObject
Definition: XrdClAnyObject.hh:32
XrdCl::LocalFileHandler::VectorWrite
XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0)
XrdCl::LocalFileHandler::WriteV
XRootDStatus WriteV(uint64_t offset, ChunkList *chunks, ResponseHandler *handler, uint16_t timeout=0)