18 {
open (name, flags, perms); }
32 <<
"Destructor called on XROOTD file '" <<
m_name
33 <<
"' but the file is still open";
73 if ((name == 0) || (*name == 0))
75 <<
"Cannot open a file without a name";
79 <<
"Must open file '" << name <<
"' at least for read or write";
91 openflags |= kXR_open_updt;
93 openflags |= kXR_open_read;
97 <<
"Opening file '" << name <<
"' in append mode not supported";
102 openflags |= kXR_delete;
103 openflags |= kXR_new;
104 openflags |= kXR_mkpath;
108 openflags |= kXR_delete;
111 if (!
m_client->Open(perms, openflags)
112 ||
m_client->LastServerResp()->status != kXR_ok)
114 <<
"XrdClient::Open(name='" << name
115 <<
"', flags=0x" << std::hex << openflags
116 <<
", permissions=0" << std::oct << perms << std::dec
117 <<
") => error '" <<
m_client->LastServerError()->errmsg
118 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
122 <<
"XrdClient::Stat(name='" << name
123 <<
") => error '" <<
m_client->LastServerError()->errmsg
124 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
137 <<
"XrdFile::close(name='" <<
m_name
138 <<
"') called but the file is not open";
145 <<
"XrdFile::close(name='" <<
m_name
146 <<
"') failed with error '" <<
m_client->LastServerError()->errmsg
147 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
173 <<
"XrdFile::read(name='" <<
m_name <<
"', n=" << n
174 <<
") too many bytes, limit is 0x7fffffff";
179 <<
"XrdClient::Read(name='" <<
m_name
180 <<
"', offset=" <<
m_offset <<
", n=" << n
181 <<
") failed with error '" <<
m_client->LastServerError()->errmsg
182 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
192 <<
"XrdFile::read(name='" <<
m_name <<
"', n=" << n
193 <<
") exceeds read size limit 0x7fffffff";
198 <<
"XrdClient::Read(name='" <<
m_name
199 <<
"', offset=" <<
m_offset <<
", n=" << n
200 <<
") failed with error '" <<
m_client->LastServerError()->errmsg
201 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
216 std::vector<long long> offsets (n);
221 if (len > 0x7fffffff)
223 <<
"XrdFile::readv(name='" <<
m_name <<
"')[" <<
i
224 <<
"].size=" << len <<
" exceeds read size limit 0x7fffffff";
231 if (
m_client->ReadV(0, &offsets[0], &lengths[0], n) < 0)
233 <<
"XrdClient::ReadV(name='" <<
m_name
234 <<
"') failed with error '" <<
m_client->LastServerError()->errmsg
235 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
247 <<
"XrdClient::Read(name='" <<
m_name
248 <<
"', offset=" << offsets[
i] <<
", n=" << lengths[
i]
249 <<
") failed with error '" <<
m_client->LastServerError()->errmsg
250 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
263 std::vector<long long> offsets (n);
268 if (len > 0x7fffffff)
270 <<
"XrdFile::readv(name='" <<
m_name <<
"')[" <<
i
271 <<
"].size=" << len <<
" exceeds read size limit 0x7fffffff";
277 if (
m_client->ReadV(0, &offsets[0], &lengths[0], n) < 0)
279 <<
"XrdClient::ReadV(name='" <<
m_name
280 <<
"') failed with error '" <<
m_client->LastServerError()->errmsg
281 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
293 <<
"XrdClient::Read(name='" <<
m_name
294 <<
"', offset=" << offsets[
i] <<
", n=" << lengths[
i]
295 <<
") failed with error '" <<
m_client->LastServerError()->errmsg
296 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
309 <<
"XrdFile::write(name='" <<
m_name <<
"', n=" << n
310 <<
") too many bytes, limit is 0x7fffffff";
315 <<
"XrdFile::write(name='" <<
m_name <<
"', n=" << n
316 <<
") failed with error '" <<
m_client->LastServerError()->errmsg
317 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
331 <<
"XrdFile::write(name='" <<
m_name <<
"', n=" << n
332 <<
") too many bytes, limit is 0x7fffffff";
334 ssize_t
s =
m_client->Write(from, pos, n);
337 <<
"XrdFile::write(name='" <<
m_name <<
"', n=" << n
338 <<
") failed with error '" <<
m_client->LastServerError()->errmsg
339 <<
"' (errno=" <<
m_client->LastServerError()->errnum <<
")";
341 if (pos + s >
m_stat.size)
350 XReqErrorType
r = kOK;
351 for (
IOSize i = 0;
i < n && r == kOK; ++
i)
364 <<
"XrdFile::position() called on a closed file";
382 <<
"XrdFile::position() called with incorrect 'whence' parameter";
397 <<
"XrdFile::resize(name='" <<
m_name <<
"') not implemented";
virtual void resize(IOOffset size)
virtual void create(const char *name, bool exclusive=false, int perms=0666)
std::vector< Variable::Flags > flags
virtual bool prefetch(const IOPosBuffer *what, IOSize n)
virtual IOOffset position(void) const
virtual IOSize readv(IOBuffer *into, IOSize n)
unsigned int offset(bool)
IOOffset offset(void) const
static std::string from(" from ")
virtual void open(const char *name, int flags=IOFlags::OpenRead, int perms=0666)
virtual IOSize write(const void *from, IOSize n)