#include <XrdOssMirageXAttr.hh>
|
| | XrdOssMirageXAttr ()=default |
| |
| virtual | ~XrdOssMirageXAttr ()=default |
| |
| virtual int | Del (const char *Aname, const char *Path, int fd=-1) override |
| |
| virtual void | Free (AList *aPL) override |
| |
| virtual int | Get (const char *Aname, void *Aval, int Avsz, const char *Path, int fd=-1) override |
| |
| virtual int | List (AList **aPL, const char *Path, int fd=-1, int getSz=0) override |
| |
| virtual int | Set (const char *Aname, const void *Aval, int Avsz, const char *Path, int fd=-1, int isNew=0) override |
| |
| void | setOss (XrdOssMirage &oss) |
| |
| | XrdSysXAttr () |
| | Constructor and Destructor. More...
|
| |
| virtual | ~XrdSysXAttr () |
| |
| virtual int | Copy (const char *iPath, int iFD, const char *oPath, int oFD, const char *Aname=0) |
| |
| virtual XrdSysError * | SetMsgRoute (XrdSysError *errP) |
| |
Definition at line 10 of file XrdOssMirageXAttr.hh.
◆ XrdOssMirageXAttr()
| XrdOssMirageXAttr::XrdOssMirageXAttr |
( |
| ) |
|
|
default |
◆ ~XrdOssMirageXAttr()
| virtual XrdOssMirageXAttr::~XrdOssMirageXAttr |
( |
| ) |
|
|
virtualdefault |
◆ Del()
| int XrdOssMirageXAttr::Del |
( |
const char * |
Aname, |
|
|
const char * |
Path, |
|
|
int |
fd = -1 |
|
) |
| |
|
overridevirtual |
Remove an extended attribute.
- Parameters
-
| Aname | -> The attribute name. |
| Path | -> Path of the file whose attribute is to be removed. |
| fd | If >=0 is the file descriptor of the opened subject file. |
- Returns
- =0 Attribute was successfully removed.
-
<0 Attribute was not removed or does not exist. The return value is -errno that describes the reason for the failure.
Implements XrdSysXAttr.
Definition at line 20 of file XrdOssMirageXAttr.cc.
22 if (this->oss ==
nullptr)
29 auto entry = opt.value();
31 const std::string_view name{Aname};
33 if (name ==
"U.open.return_code"sv)
34 entry->open.return_code = {};
35 else if (name ==
"U.read.return_code"sv)
36 entry->read.return_code = {};
37 else if (name ==
"U.read.return_position"sv)
38 entry->read.return_position = {};
39 else if (name ==
"U.write.return_code"sv)
40 entry->write.return_code = {};
41 else if (name ==
"U.write.return_position"sv)
42 entry->write.return_position = {};
43 else if (name ==
"U.pattern"sv)
std::optional< XrdOssMirageEntryPtr > get_entry_write(const char *path)
References Path.
◆ Free()
| void XrdOssMirageXAttr::Free |
( |
AList * |
aPL | ) |
|
|
overridevirtual |
Release storage occupied by the Alist structure returned by List().
- Parameters
-
| aPL | -> The first element of the AList structure. |
Implements XrdSysXAttr.
Definition at line 51 of file XrdOssMirageXAttr.cc.
◆ Get()
| int XrdOssMirageXAttr::Get |
( |
const char * |
Aname, |
|
|
void * |
Aval, |
|
|
int |
Avsz, |
|
|
const char * |
Path, |
|
|
int |
fd = -1 |
|
) |
| |
|
overridevirtual |
Get an attribute value and its size.
- Parameters
-
| Aname | -> The attribute name. |
| Aval | -> Buffer to receive the attribute value. |
| Avsz | Length of the buffer in bytes. Only up to this number of bytes should be returned. However, should Avsz be zero the the size of the attribute value should be returned and the Aval argument should be ignored. |
| Path | -> Path of the file whose attribute is to be fetched. |
| fd | -> If >=0 is the file descriptor of the opened subject file. |
- Returns
- >0 The number of bytes placed in Aval. However, if avsz is zero then the value is the actual size of the attribute value.
-
=0 The attribute exists but has no associated value.
-
<0 The attribute value could not be returned. The returned value is -errno describing the reason.
Implements XrdSysXAttr.
Definition at line 55 of file XrdOssMirageXAttr.cc.
57 if (this->oss ==
nullptr)
64 const auto entry = opt.value();
66 const std::string_view name{Aname};
69 if (name ==
"U.open.return_code"sv)
70 value = std::to_string(entry.open.return_code);
71 else if (name ==
"U.read.return_code"sv)
72 value = std::to_string(entry.read.return_code);
73 else if (name ==
"U.read.return_position"sv)
74 value = std::to_string(entry.read.return_position);
75 else if (name ==
"U.write.return_code"sv)
76 value = std::to_string(entry.write.return_code);
77 else if (name ==
"U.write.return_position"sv)
78 value = std::to_string(entry.write.return_position);
79 else if (name ==
"U.pattern"sv)
80 value = entry.pattern;
84 const int num_bytes = std::min(
static_cast<std::size_t
>(Avsz), value.size());
85 std::copy_n(value.begin(), num_bytes,
static_cast<char *
>(Aval));
std::optional< XrdOssMirageEntry > get_entry_read(const char *path)
References Path.
◆ List()
| int XrdOssMirageXAttr::List |
( |
AList ** |
aPL, |
|
|
const char * |
Path, |
|
|
int |
fd = -1, |
|
|
int |
getSz = 0 |
|
) |
| |
|
overridevirtual |
Get all of the attributes associated with a file.
- Parameters
-
| aPL | -> the pointer to hold the first element of AList. The storage occupied by the returned AList must be released by calling Free(). |
| Path | -> Path of the file whose attributes are t be returned. |
| fd | -> If >=0 is the file descriptor of the opened subject file. |
| getSz | When != 0 then the size of the maximum attribute value should be returned. Otherwise, upon success 0 is returned. |
- Returns
- >0 Attributes were returned and aPL points to the first attribute value. The returned value is the largest size of an attribute value encountered (getSz != 0).
-
=0 Attributes were returned and aPL points to the first attribute value (getSz == 0).
-
<0 The attribute values could not be returned. The returned value is -errno describing the reason.
Implements XrdSysXAttr.
Definition at line 90 of file XrdOssMirageXAttr.cc.
◆ Set()
| int XrdOssMirageXAttr::Set |
( |
const char * |
Aname, |
|
|
const void * |
Aval, |
|
|
int |
Avsz, |
|
|
const char * |
Path, |
|
|
int |
fd = -1, |
|
|
int |
isNew = 0 |
|
) |
| |
|
overridevirtual |
Set an attribute.
- Parameters
-
| Aname | -> The attribute name. |
| Aval | -> Buffer holding the attribute value. |
| Avsz | Length of the buffer in bytes. This is the length of the attribute value which may contain binary data. |
| Path | -> Path of the file whose attribute is to be set. |
| fd | -> If >=0 is the file descriptor of the opened subject file. |
| isNew | When !0 then the attribute must not exist (i.e. new). Otherwise, if it does exist, the value is replaced. In either case, if it does not exist it should be created. |
- Returns
- =0 The attribute was successfully set.
-
<0 The attribute values could not be set. The returned value is -errno describing the reason.
Implements XrdSysXAttr.
Definition at line 95 of file XrdOssMirageXAttr.cc.
97 if (this->oss ==
nullptr)
101 if (!opt.has_value())
104 auto entry = opt.value();
106 const std::string_view name{Aname};
107 const std::string value(
static_cast<const char *
>(Aval), Avsz);
111 if (name ==
"U.open.return_code"sv)
112 entry->open.return_code = std::stoi(value);
113 else if (name ==
"U.read.return_code"sv)
114 entry->read.return_code = std::stoi(value);
115 else if (name ==
"U.read.return_position"sv)
116 entry->read.return_position = std::stoll(value);
117 else if (name ==
"U.write.return_code"sv)
118 entry->write.return_code = std::stoi(value);
119 else if (name ==
"U.write.return_position"sv)
120 entry->write.return_position = std::stoll(value);
121 else if (name ==
"U.pattern"sv)
122 entry->pattern = value;
126 catch(std::out_of_range &)
References Path.
◆ setOss()
The documentation for this class was generated from the following files: