xrootd
|
Send file/filesystem queries to an XRootD cluster. More...
#include <XrdClFileSystem.hh>
Public Types | |
typedef std::vector< LocationInfo > | LocationList |
Location list. | |
Public Member Functions | |
FileSystem (const URL &url, bool enablePlugIns=true) | |
~FileSystem () | |
Destructor. | |
XRootDStatus | Locate (const std::string &path, OpenFlags::Flags flags, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Locate (const std::string &path, OpenFlags::Flags flags, LocationInfo *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | DeepLocate (const std::string &path, OpenFlags::Flags flags, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | DeepLocate (const std::string &path, OpenFlags::Flags flags, LocationInfo *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Mv (const std::string &source, const std::string &dest, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Mv (const std::string &source, const std::string &dest, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Query (QueryCode::Code queryCode, const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Query (QueryCode::Code queryCode, const Buffer &arg, Buffer *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Truncate (const std::string &path, uint64_t size, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Truncate (const std::string &path, uint64_t size, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Rm (const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Rm (const std::string &path, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | MkDir (const std::string &path, MkDirFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | MkDir (const std::string &path, MkDirFlags::Flags flags, Access::Mode mode, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | RmDir (const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | RmDir (const std::string &path, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | ChMod (const std::string &path, Access::Mode mode, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | ChMod (const std::string &path, Access::Mode mode, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Ping (ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Ping (uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Stat (const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Stat (const std::string &path, StatInfo *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | StatVFS (const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | StatVFS (const std::string &path, StatInfoVFS *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Protocol (ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Protocol (ProtocolInfo *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | DirList (const std::string &path, DirListFlags::Flags flags, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | DirList (const std::string &path, DirListFlags::Flags flags, DirectoryList *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | SendCache (const std::string &info, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | SendCache (const std::string &info, Buffer *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | SendInfo (const std::string &info, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | SendInfo (const std::string &info, Buffer *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Prepare (const std::vector< std::string > &fileList, PrepareFlags::Flags flags, uint8_t priority, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | Prepare (const std::vector< std::string > &fileList, PrepareFlags::Flags flags, uint8_t priority, Buffer *&response, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
XRootDStatus | SetXAttr (const std::string &path, const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0) |
XRootDStatus | SetXAttr (const std::string &path, const std::vector< xattr_t > &attrs, std::vector< XAttrStatus > &result, uint16_t timeout=0) |
XRootDStatus | GetXAttr (const std::string &path, const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0) |
XRootDStatus | GetXAttr (const std::string &path, const std::vector< std::string > &attrs, std::vector< XAttr > &result, uint16_t timeout=0) |
XRootDStatus | DelXAttr (const std::string &path, const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0) |
XRootDStatus | DelXAttr (const std::string &path, const std::vector< std::string > &attrs, std::vector< XAttrStatus > &result, uint16_t timeout=0) |
XRootDStatus | ListXAttr (const std::string &path, ResponseHandler *handler, uint16_t timeout=0) |
XRootDStatus | ListXAttr (const std::string &path, std::vector< XAttr > &result, uint16_t timeout=0) |
bool | SetProperty (const std::string &name, const std::string &value) |
bool | GetProperty (const std::string &name, std::string &value) const |
Private Member Functions | |
FileSystem (const FileSystem &other) | |
FileSystem & | operator= (const FileSystem &other) |
void | Lock () |
void | UnLock () |
XRootDStatus | SendSet (const char *prefix, const std::string &info, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT |
template<typename T > | |
Status | XAttrOperationImpl (kXR_char subcode, kXR_char options, const std::string &path, const std::vector< T > &attrs, ResponseHandler *handler, uint16_t timeout=0) |
Private Attributes | |
FileSystemImpl * | pImpl |
FileSystemPlugIn * | pPlugIn |
Friends | |
class | AssignLBHandler |
class | ForkHandler |
Send file/filesystem queries to an XRootD cluster.
typedef std::vector<LocationInfo> XrdCl::FileSystem::LocationList |
Location list.
XrdCl::FileSystem::FileSystem | ( | const URL & | url, |
bool | enablePlugIns = true |
||
) |
Constructor
url | URL of the entry-point server to be contacted |
enablePlugIns | enable the plug-in mechanism for this object |
XrdCl::FileSystem::~FileSystem | ( | ) |
Destructor.
|
private |
XRootDStatus XrdCl::FileSystem::ChMod | ( | const std::string & | path, |
Access::Mode | mode, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Change access mode on a directory or a file - async
path | file/directory path |
mode | access mode, or'd Access::Mode |
handler | handler to be notified when the response arrives |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::ChMod | ( | const std::string & | path, |
Access::Mode | mode, | ||
uint16_t | timeout = 0 |
||
) |
Change access mode on a directory or a file - sync
path | file/directory path |
mode | access mode, or'd Access::Mode |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::DeepLocate | ( | const std::string & | path, |
OpenFlags::Flags | flags, | ||
LocationInfo *& | response, | ||
uint16_t | timeout = 0 |
||
) |
Locate a file, recursively locate all disk servers - sync
path | path to the file to be located |
flags | some of the OpenFlags::Flags |
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::DeepLocate | ( | const std::string & | path, |
OpenFlags::Flags | flags, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Locate a file, recursively locate all disk servers - async
path | path to the file to be located |
flags | some of the OpenFlags::Flags |
handler | handler to be notified when the response arrives, the response parameter will hold a Buffer object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::DelXAttr | ( | const std::string & | path, |
const std::vector< std::string > & | attrs, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Delete extended attributes - async
attrs | : list of extended attributes to set |
handler | : handler to be notified when the response arrives, the response parameter will hold a std::vector of XAttrStatus objects |
timeout | : timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::DelXAttr | ( | const std::string & | path, |
const std::vector< std::string > & | attrs, | ||
std::vector< XAttrStatus > & | result, | ||
uint16_t | timeout = 0 |
||
) |
Delete extended attributes - sync
attrs | : list of extended attributes to set |
result | : result of the operation |
timeout | : timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::DirList | ( | const std::string & | path, |
DirListFlags::Flags | flags, | ||
DirectoryList *& | response, | ||
uint16_t | timeout = 0 |
||
) |
List entries of a directory - sync
path | directory path |
flags | DirListFlags |
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::DirList | ( | const std::string & | path, |
DirListFlags::Flags | flags, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
List entries of a directory - async
path | directory path |
flags | currently unused |
handler | handler to be notified when the response arrives, the response parameter will hold a DirectoryList object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
bool XrdCl::FileSystem::GetProperty | ( | const std::string & | name, |
std::string & | value | ||
) | const |
Get filesystem property
XRootDStatus XrdCl::FileSystem::GetXAttr | ( | const std::string & | path, |
const std::vector< std::string > & | attrs, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Get extended attributes - async
attrs | : list of extended attributes to get |
handler | : handler to be notified when the response arrives, the response parameter will hold a std::vector of XAttr objects |
timeout | : timeout value, if 0 the environment default will be used |
Referenced by XrdCl::EcHandler::LoadPlacement().
XRootDStatus XrdCl::FileSystem::GetXAttr | ( | const std::string & | path, |
const std::vector< std::string > & | attrs, | ||
std::vector< XAttr > & | result, | ||
uint16_t | timeout = 0 |
||
) |
Get extended attributes - sync
attrs | : list of extended attributes to get |
result | : result of the operation |
timeout | : timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::ListXAttr | ( | const std::string & | path, |
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
List extended attributes - async
handler | : handler to be notified when the response arrives, the response parameter will hold a std::vector of XAttr objects |
timeout | : timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::ListXAttr | ( | const std::string & | path, |
std::vector< XAttr > & | result, | ||
uint16_t | timeout = 0 |
||
) |
List extended attributes - sync
result | : result of the operation |
timeout | : timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Locate | ( | const std::string & | path, |
OpenFlags::Flags | flags, | ||
LocationInfo *& | response, | ||
uint16_t | timeout = 0 |
||
) |
Locate a file - sync
path | path to the file to be located |
flags | some of the OpenFlags::Flags |
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Locate | ( | const std::string & | path, |
OpenFlags::Flags | flags, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Locate a file - async
path | path to the file to be located |
flags | some of the OpenFlags::Flags |
handler | handler to be notified when the response arrives, the response parameter will hold a Buffer object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
|
private |
XRootDStatus XrdCl::FileSystem::MkDir | ( | const std::string & | path, |
MkDirFlags::Flags | flags, | ||
Access::Mode | mode, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Create a directory - async
path | path to the directory |
flags | or'd MkDirFlags |
mode | access mode, or'd Access::Mode |
handler | handler to be notified when the response arrives |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::MkDir | ( | const std::string & | path, |
MkDirFlags::Flags | flags, | ||
Access::Mode | mode, | ||
uint16_t | timeout = 0 |
||
) |
Create a directory - sync
path | path to the directory |
flags | or'd MkDirFlags |
mode | access mode, or'd Access::Mode |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Mv | ( | const std::string & | source, |
const std::string & | dest, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Move a directory or a file - async
source | the file or directory to be moved |
dest | the new name |
handler | handler to be notified when the response arrives, |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Mv | ( | const std::string & | source, |
const std::string & | dest, | ||
uint16_t | timeout = 0 |
||
) |
Move a directory or a file - sync
source | the file or directory to be moved |
dest | the new name |
timeout | timeout value, if 0 the environment default will be used |
|
private |
XRootDStatus XrdCl::FileSystem::Ping | ( | ResponseHandler * | handler, |
uint16_t | timeout = 0 |
||
) |
Check if the server is alive - async
handler | handler to be notified when the response arrives |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Ping | ( | uint16_t | timeout = 0 | ) |
Check if the server is alive - sync
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Prepare | ( | const std::vector< std::string > & | fileList, |
PrepareFlags::Flags | flags, | ||
uint8_t | priority, | ||
Buffer *& | response, | ||
uint16_t | timeout = 0 |
||
) |
Prepare one or more files for access - sync
fileList | list of files to be prepared |
flags | PrepareFlags::Flags |
priority | priority of the request 0 (lowest) - 3 (highest) |
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Prepare | ( | const std::vector< std::string > & | fileList, |
PrepareFlags::Flags | flags, | ||
uint8_t | priority, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Prepare one or more files for access - async
fileList | list of files to be prepared |
flags | PrepareFlags::Flags |
priority | priority of the request 0 (lowest) - 3 (highest) |
handler | handler to be notified when the response arrives, the response parameter will hold a Buffer object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Protocol | ( | ProtocolInfo *& | response, |
uint16_t | timeout = 0 |
||
) |
Obtain server protocol information - sync
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Protocol | ( | ResponseHandler * | handler, |
uint16_t | timeout = 0 |
||
) |
Obtain server protocol information - async
handler | handler to be notified when the response arrives, the response parameter will hold a ProtocolInfo object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Query | ( | QueryCode::Code | queryCode, |
const Buffer & | arg, | ||
Buffer *& | response, | ||
uint16_t | timeout = 0 |
||
) |
Obtain server information - sync
queryCode | the query code as specified in the QueryCode struct |
arg | query argument |
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Query | ( | QueryCode::Code | queryCode, |
const Buffer & | arg, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Obtain server information - async
queryCode | the query code as specified in the QueryCode struct |
arg | query argument |
handler | handler to be notified when the response arrives, the response parameter will hold a Buffer object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
Referenced by XrdCl::EcHandler::Close().
XRootDStatus XrdCl::FileSystem::Rm | ( | const std::string & | path, |
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Remove a file - async
path | path to the file to be removed |
handler | handler to be notified when the response arrives |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Rm | ( | const std::string & | path, |
uint16_t | timeout = 0 |
||
) |
Remove a file - sync
path | path to the file to be removed |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::RmDir | ( | const std::string & | path, |
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Remove a directory - async
path | path to the directory to be removed |
handler | handler to be notified when the response arrives |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::RmDir | ( | const std::string & | path, |
uint16_t | timeout = 0 |
||
) |
Remove a directory - sync
path | path to the directory to be removed |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::SendCache | ( | const std::string & | info, |
Buffer *& | response, | ||
uint16_t | timeout = 0 |
||
) |
Send cache into the server - sync
info | the info string to be sent |
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::SendCache | ( | const std::string & | info, |
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Send cache into the server - async
info | the info string to be sent |
handler | handler to be notified when the response arrives, the response parameter will hold a Buffer object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::SendInfo | ( | const std::string & | info, |
Buffer *& | response, | ||
uint16_t | timeout = 0 |
||
) |
Send info to the server (up to 1024 characters) - sync
info | the info string to be sent |
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::SendInfo | ( | const std::string & | info, |
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Send info to the server (up to 1024 characters)- async
info | the info string to be sent |
handler | handler to be notified when the response arrives, the response parameter will hold a Buffer object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
|
private |
Generic implementation of SendCache and SendInfo
info | : the info string to be sent |
handler | : handler to be notified when the response arrives. |
timeout | : timeout value or 0 for default. |
bool XrdCl::FileSystem::SetProperty | ( | const std::string & | name, |
const std::string & | value | ||
) |
Set filesystem property
Filesystem properties: FollowRedirects [true/false] - enable/disable following redirections
XRootDStatus XrdCl::FileSystem::SetXAttr | ( | const std::string & | path, |
const std::vector< xattr_t > & | attrs, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Set extended attributes - async
attrs | : list of extended attributes to set |
handler | : handler to be notified when the response arrives, the response parameter will hold a std::vector of XAttrStatus objects |
timeout | : timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::SetXAttr | ( | const std::string & | path, |
const std::vector< xattr_t > & | attrs, | ||
std::vector< XAttrStatus > & | result, | ||
uint16_t | timeout = 0 |
||
) |
Set extended attributes - sync
attrs | : list of extended attributes to set |
result | : result of the operation |
timeout | : timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Stat | ( | const std::string & | path, |
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Obtain status information for a path - async
path | file/directory path |
handler | handler to be notified when the response arrives, the response parameter will hold a StatInfo object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Stat | ( | const std::string & | path, |
StatInfo *& | response, | ||
uint16_t | timeout = 0 |
||
) |
Obtain status information for a path - sync
path | file/directory path |
response | the response (to be deleted by the user only if the procedure is successful) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::StatVFS | ( | const std::string & | path, |
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Obtain status information for a Virtual File System - async
path | file/directory path |
handler | handler to be notified when the response arrives, the response parameter will hold a StatInfoVFS object if the procedure is successful |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::StatVFS | ( | const std::string & | path, |
StatInfoVFS *& | response, | ||
uint16_t | timeout = 0 |
||
) |
Obtain status information for a Virtual File System - sync
path | file/directory path |
response | the response (to be deleted by the user) |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Truncate | ( | const std::string & | path, |
uint64_t | size, | ||
ResponseHandler * | handler, | ||
uint16_t | timeout = 0 |
||
) |
Truncate a file - async
path | path to the file to be truncated |
size | file size |
handler | handler to be notified when the response arrives |
timeout | timeout value, if 0 the environment default will be used |
XRootDStatus XrdCl::FileSystem::Truncate | ( | const std::string & | path, |
uint64_t | size, | ||
uint16_t | timeout = 0 |
||
) |
Truncate a file - sync
path | path to the file to be truncated |
size | file size |
timeout | timeout value, if 0 the environment default will be used |
|
private |
|
private |
Generic implementation of xattr operation
subcode | : xattr operation code |
path | : path to the file |
attrs | : operation argument |
handler | : operation handler |
timeout | : operation timeout |
|
friend |
|
friend |
|
private |
|
private |