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__
23#include "XrdCl/XrdClLog.hh"
24
25#include <sys/uio.h>
26
27namespace 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 //------------------------------------------------------------------------
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 //------------------------------------------------------------------------
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 //------------------------------------------------------------------------
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
Definition: XrdClAnyObject.hh:33
Binary blob representation.
Definition: XrdClBuffer.hh:34
A synchronized queue.
Definition: XrdClJobManager.hh:51
Definition: XrdClLocalFileHandler.hh:33
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)
Definition: XrdClLocalFileHandler.hh:222
XRootDStatus QueueTask(XRootDStatus *st, AnyObject *obj, ResponseHandler *handler)
static XRootDStatus MkdirPath(const std::string &path)
const HostList & GetHostList()
Definition: XrdClLocalFileHandler.hh:227
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 OpenImpl(const std::string &url, uint16_t flags, uint16_t mode, AnyObject *&resp)
XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0)
HostList pHostList
Definition: XrdClLocalFileHandler.hh:263
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)
int fd
Definition: XrdClLocalFileHandler.hh:253
std::string pUrl
Definition: XrdClLocalFileHandler.hh:258
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 Open(const URL *url, const Message *req, AnyObject *&resp)
Handle local redirect to given URL triggered by the given request.
JobManager * jmngr
Definition: XrdClLocalFileHandler.hh:248
The message representation used throughout the system.
Definition: XrdClMessage.hh:30
Handle an async response.
Definition: XrdClXRootDResponses.hh:855
URL representation.
Definition: XrdClURL.hh:31
Request status.
Definition: XrdClXRootDResponses.hh:213
Definition: XrdClAnyObject.hh:26
std::vector< HostInfo > HostList
Definition: XrdClXRootDResponses.hh:849
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:784
Definition: XrdClMessageUtils.hh:129