58 TProofMgrInterruptHandler(
const TProofMgrInterruptHandler&);
59 TProofMgrInterruptHandler&
operator=(
const TProofMgrInterruptHandler&);
69Bool_t TProofMgrInterruptHandler::Notify()
72 if (isatty(0) != 0 && isatty(1) != 0) {
74 Printf(
"Opening new connection to %s", u.
Data());
77 if (
s &&
s->IsValid()) {
108 if (
Init(dbg) != 0) {
134 Error(
"Init",
"while opening the connection to %s - exit (error: %d)",
175 gROOT->GetListOfSockets()->Remove(
this);
187 Warning(
"AttachSession",
"invalid TXProofMgr - do nothing");
191 Warning(
"AttachSession",
"invalid description object - do nothing");
197 return d->GetProof();
225 Error(
"AttachSession",
"attaching to PROOF session");
239 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
254 }
else if (
id == 0) {
283 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
311 Warning(
"MatchUrl",
"invalid TXProofMgr - do nothing");
346 Warning(
"ShowWorkers",
"invalid TXProofMgr - do nothing");
374 Error(
"GetMssUrl",
"invalid TXProofMgr - do nothing");
379 Error(
"GetMssUrl",
"functionality not supported by server");
388 Error(
"GetMssUrl",
"problems retrieving the required information");
392 Warning(
"GetMssUrl",
"TXProofMgr is now invalid: information may not be valid");
405 if (opt && !strncasecmp(opt,
"L",1))
411 Warning(
"QuerySessions",
"invalid TXProofMgr - do nothing");
431 Printf(
"// +++ %s session(s) currently active +++", to->
GetName());
434 Int_t id = -1, st = -1;
437 while (to->
GetString()[from] ==
' ') { from++; }
469 if (opt && !strncasecmp(opt,
"S",1))
492 Info(
"HandleInput",
"%p: got message type: %d",
this, what);
498 Warning(
"HandleInput",
"%p: got unknown message type: %d",
this, what);
503 Warning(
"HandleInput",
"%p: got message but socket is invalid!",
this);
522 Printf(
"ProofMgr: connection to coordinator at %s re-established",
527 Printf(
"TXProofMgr::HandleError: %p: got called ...",
this);
540 Printf(
"TXProofMgr::HandleError: %p: DONE ... ",
this);
561 Warning(
"Reset",
"invalid TXProofMgr - do nothing");
593 const char *pattern,
Bool_t rescan)
597 Warning(
"GetSessionLogs",
"invalid TXProofMgr - do nothing");
604 isess = (isess > 0) ? -isess : isess;
609 if (sesstag ==
"NR") {
615 Int_t xrs = (rescan) ? 1 : 0;
626 Warning(
"GetSessionLogs",
"Session tag undefined: corruption?\n"
627 " (received string: %s)", os->
GetName());
632 if (!rs.
Tokenize(purl, from,
"|")) {
633 Warning(
"GetSessionLogs",
"Pool URL undefined: corruption?\n"
634 " (received string: %s)", os->
GetName());
643 while (rs.
Tokenize(to, from,
"|")) {
653 if (url.
Contains(
".valgrind")) ord +=
"-valgrind";
657 Info(
"GetSessionLogs",
"ord: %s, url: %s", ord.
Data(), url.
Data());
664 const char *pat = pattern ? pattern :
"-v \"| SvcMsg\"";
665 if (pat && strlen(pat) > 0)
684 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
701 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
707 if (*pattern ==
'|') {
717 Int_t plen = strlen(ptr);
718 Int_t lfi = strlen(fin);
719 char *buf =
new char[lfi + plen + 1];
720 memcpy(buf, fin, lfi);
721 memcpy(buf+lfi, ptr, plen);
735 Warning(
"ShowROOTVersions",
"invalid TXProofMgr - do nothing");
743 Printf(
"----------------------------------------------------------\n");
744 Printf(
"Available versions (tag ROOT-vers remote-path PROOF-version):\n");
746 Printf(
"----------------------------------------------------------");
761 Warning(
"SetROOTVersion",
"invalid TXProofMgr - do nothing");
785 if (!msg || strlen(msg) <= 0) {
786 Error(
"SendMsgToUsers",
"no message to send - do nothing");
791 const Int_t kMAXBUF = 32768;
792 char buf[kMAXBUF] = {0};
794 size_t space = kMAXBUF - 1;
798 if (usr && strlen(usr) > 0 && (strlen(usr) != 1 || usr[0] !=
'*')) {
799 lusr = (strlen(usr) + 3);
800 snprintf(buf, kMAXBUF,
"u:%s ", usr);
810 Error(
"SendMsgToUsers",
"request to read message from unreadable file '%s'", msg);
815 if (!(
f = fopen(msg,
"r"))) {
816 Error(
"SendMsgToUsers",
"file '%s' cannot be open", msg);
821 off_t rcsk = lseek(fileno(
f), (off_t) 0, SEEK_END);
822 if ((rcsk != (off_t)(-1))) {
823 left = (size_t) rcsk;
824 if ((lseek(fileno(
f), (off_t) 0, SEEK_SET) == (off_t)(-1))) {
825 Error(
"SendMsgToUsers",
"cannot rewind open file (seek to 0)");
830 Error(
"SendMsgToUsers",
"cannot get size of open file (seek to END)");
835 size_t wanted = left;
836 if (wanted > space) {
839 "requested to send %lld bytes: max size is %lld bytes: truncating",
843 while ((len = read(fileno(
f), p, wanted)) < 0 &&
847 SysError(
"SendMsgToUsers",
"error reading file");
852 left = (len >= (ssize_t)left) ? 0 : left - len;
854 wanted = (left > kMAXBUF-1) ? kMAXBUF-1 : left;
856 }
while (len > 0 && left > 0);
862 if (len > (ssize_t)space) {
864 "requested to send %lld bytes: max size is %lld bytes: truncating",
887 Error(
"Grep",
"invalid TXProofMgr - do nothing");
892 Error(
"Grep",
"functionality not supported by server");
913 Error(
"Find",
"invalid TXProofMgr - do nothing");
918 Error(
"Find",
"functionality not supported by server (XrdProofd version: %d)",
940 Error(
"Ls",
"invalid TXProofMgr - do nothing");
945 Error(
"Ls",
"functionality not supported by server");
966 Error(
"More",
"invalid TXProofMgr - do nothing");
971 Error(
"More",
"functionality not supported by server");
994 Error(
"Rm",
"invalid TXProofMgr - do nothing");
999 Error(
"Rm",
"functionality not supported by server");
1003 TString prompt, ans(
"Y"), opt(how);
1008 while (!force && opt.
Tokenize(t, from,
" ")) {
1009 if (t ==
"--force") {
1017 if (!force && isatty(0) != 0 && isatty(1) != 0) {
1019 prompt.
Form(
"Do you really want to remove '%s'? [N/y]", what);
1021 while (ans !=
"N" && ans !=
"Y") {
1022 ans = Getline(prompt.
Data());
1024 if (ans ==
"") ans =
"N";
1026 if (ans !=
"N" && ans !=
"Y")
1027 Printf(
"Please answer y, Y, n or N");
1056 Error(
"Tail",
"invalid TXProofMgr - do nothing");
1061 Error(
"Tail",
"functionality not supported by server");
1082 Error(
"Md5sum",
"invalid TXProofMgr - do nothing");
1087 Error(
"Md5sum",
"functionality not supported by server");
1091 if (where && !strcmp(where,
"all")) {
1092 Error(
"Md5sum",
"cannot run on all nodes at once: please specify one");
1119 Error(
"Stat",
"invalid TXProofMgr - do nothing");
1124 Error(
"Stat",
"functionality not supported by server");
1128 if (where && !strcmp(where,
"all")) {
1129 Error(
"Stat",
"cannot run on all nodes at once: please specify one");
1140 Int_t mode, uid, gid, islink;
1144 sscanf(os->
GetName(),
"%ld %ld %d %d %d %I64d %ld %d", &dev, &ino, &mode,
1145 &uid, &gid, &size, &mtime, &islink);
1147 sscanf(os->
GetName(),
"%ld %ld %d %d %d %lld %ld %d", &dev, &ino, &mode,
1148 &uid, &gid, &size, &mtime, &islink);
1165 if (st.
fDev == -1)
return -1;
1204 const char *what,
const char *how,
const char *where)
1208 Error(
"Exec",
"invalid TXProofMgr - do nothing");
1213 Error(
"Exec",
"functionality not supported by server");
1217 if (!what || strlen(what) <= 0) {
1218 Error(
"Exec",
"specifying a path is mandatory");
1228 while (opts.Tokenize(o, from,
" ")) {
1230 if (!o.
BeginsWith(
"-") && !isc && isn)
continue;
1241 }
else if (o ==
"-n") {
1243 }
else if (o ==
"--bytes=" || o ==
"--lines=") {
1286 Error(
"GetFile",
"invalid TXProofMgr - do nothing");
1291 Error(
"GetFile",
"functionality not supported by server");
1298 Error(
"GetFile",
"remote file path undefined");
1320 UInt_t openflags = O_WRONLY;
1331 if (!fileloc.
EndsWith(
"/")) fileloc +=
"/";
1340 Printf(
"[GetFile] local file '%s' exists and is not regular: cannot continue",
1346 Error(
"GetFile",
"cannot get user info for additional checks");
1357 Printf(
"[GetFile] file '%s' exists: no permission to delete or overwrite the file", fileloc.
Data());
1358 Printf(
"[GetFile] ownership: owner: %d, group: %d, other: %d", owner,
group, other);
1364 openflags |= O_CREAT | O_TRUNC;
1367 openflags |= O_CREAT;
1371 openflags |= O_CREAT;
1376 if (
Md5sum(filerem, remsum) != 0) {
1378 Printf(
"[GetFile] remote file '%s' does not exists or cannot be read", filerem.
Data());
1384 if (rcloc == 0 && !force) {
1387 if (remsum == md5loc->
AsString()) {
1389 Printf(
"[GetFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1391 Printf(
"[GetFile] use option 'force' to override");
1400 const char *
a = Getline(
"Local file exists already: would you like to overwrite it? [N/y]");
1401 if (
a[0] ==
'n' ||
a[0] ==
'N' ||
a[0] ==
'\0')
return 0;
1408 Int_t fdout =
open(fileloc, openflags, openmode);
1410 Error(
"GetFile",
"could not open local file '%s' for writing: errno: %d", local, errno);
1431 Error(
"GetFile",
"received non-digit size string: '%s' ('%s')", os->
GetName(), ssz.
Data());
1437 Error(
"GetFile",
"received null or negative size: %lld", size);
1443 const Int_t kMAXBUF = 16384;
1449 while (rc == 0 && filesize < size) {
1450 left = size - filesize;
1451 if (left > kMAXBUF) left = kMAXBUF;
1453 filesize = (rec > 0) ? (filesize + rec) : filesize;
1462 SysError(
"GetFile",
"error writing to unit: %d", fdout);
1470 CpProgress(
"GetFile", filesize, size, &watch);
1471 }
else if (rec < 0) {
1473 Error(
"GetFile",
"error during receiving file");
1481 Error(
"GetFile",
"size not received");
1496 if (!(md5loc.get())) {
1497 Error(
"GetFile",
"cannot get MD5 checksum of the new local file '%s'", fileloc.
Data());
1499 }
else if (remsum != md5loc->AsString()) {
1500 Error(
"GetFile",
"checksums for the local copy and the remote file differ: {rem:%s,loc:%s}",
1501 remsum.
Data(), md5loc->AsString());
1520 Error(
"PutFile",
"invalid TXProofMgr - do nothing");
1525 Error(
"PutFile",
"functionality not supported by server");
1532 Error(
"PutFile",
"local file path undefined");
1547 }
else if (filerem.
EndsWith(
"/")) {
1556 UInt_t openflags = O_RDONLY;
1564 const char *why = (rcloc == 0) ?
"is not regular" :
"does not exists";
1565 Printf(
"[PutFile] local file '%s' %s: cannot continue", fileloc.
Data(), why);
1571 Error(
"PutFile",
"cannot get user info for additional checks");
1581 Printf(
"[PutFile] file '%s': no permission to read the file", fileloc.
Data());
1582 Printf(
"[PutFile] ownership: owner: %d, group: %d, other: %d", owner,
group, other);
1591 Error(
"PutFile",
"cannot calculate the check sum for '%s'", fileloc.
Data());
1602 if (
Stat(filerem, strem) == 0) {
1603 if (
Md5sum(filerem, remsum) != 0) {
1604 Printf(
"[PutFile] remote file exists but the check sum calculation failed");
1608 if (remsum == locsum) {
1610 Printf(
"[PutFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1612 Printf(
"[PutFile] use option 'force' to override");
1619 const char *
a = Getline(
"Remote file exists already: would you like to overwrite it? [N/y]");
1620 if (
a[0] ==
'n' ||
a[0] ==
'N' ||
a[0] ==
'\0')
return 0;
1629 int fd =
open(fileloc.
Data(), openflags);
1631 Error(
"PutFile",
"cannot open file '%s': %d", fileloc.
Data(), errno);
1638 if (force) cmd +=
" force";
1652 const Int_t kMAXBUF = 16384;
1656 lseek(fd, pos, SEEK_SET);
1659 while (rc == 0 && pos < stloc.
fSize) {
1661 if (left > kMAXBUF) left = kMAXBUF;
1665 if (siz < 0 || siz != left) {
1666 Error(
"PutFile",
"error reading from file: errno: %d", errno);
1685 Error(
"PutFile",
"command could not be executed");
1699 if (
Md5sum(filerem, remsum) != 0) {
1700 Printf(
"[PutFile] cannot get MD5 checksum of the new remote file '%s'", filerem.
Data());
1702 }
else if (remsum != locsum) {
1703 Printf(
"[PutFile] checksums for the local copy and the remote file differ: {rem:%s, loc:%s}",
1720 if (!pfx || size == 0 || !watch)
return;
1722 fprintf(stderr,
"[%s] Total %.02f MB\t|", pfx, (
Double_t)size/1048576);
1724 for (
int l = 0;
l < 20;
l++) {
1726 if (
l < 20*bytes/size)
1727 fprintf(stderr,
"=");
1728 else if (
l == 20*bytes/size)
1729 fprintf(stderr,
">");
1730 else if (
l > 20*bytes/size)
1731 fprintf(stderr,
".");
1733 fprintf(stderr,
"=");
1739 fprintf(stderr,
"| %.02f %% [%.01f MB/s]\r",
1740 100.0*bytes/size, bytes/copytime/1048576.);
1741 if (cr) fprintf(stderr,
"\n");
1755 Error(
"Cp",
"invalid TXProofMgr - do nothing");
1760 Error(
"Cp",
"functionality not supported by server");
1767 Error(
"Cp",
"source file path undefined");
1774 }
else if (filedst.
EndsWith(
"/")) {
1792 cmd.
Form(
"%s %s %s", filesrc.
Data(), filedst.
Data(), (fmt ? fmt :
""));
static void retrieve(const gsl_integration_workspace *workspace, double *a, double *b, double *r, double *e)
const Int_t kPROOF_Protocol
R__EXTERN TVirtualMutex * gROOTMutex
char * Form(const char *fmt,...)
void Printf(const char *fmt,...)
Bool_t R_ISREG(Int_t mode)
Bool_t R_ISDIR(Int_t mode)
R__EXTERN TSystem * gSystem
#define R__LOCKGUARD(mutex)
TProofMgr * GetTXProofMgr(const char *url, Int_t l, const char *al)
static TXProofMgrInit gxproofmgr_init
const Int_t kXPROOF_Protocol
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
virtual void Add(TObject *obj)
virtual TObject * Remove(TObject *obj)
Remove object from the list.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
This code implements the MD5 message-digest algorithm.
const char * AsString() const
Return message digest as string.
static TMD5 * FileChecksum(const char *file)
Returns checksum of specified file.
virtual void SetName(const char *name)
Set the name of the TNamed.
Collectable string class.
const char * GetName() const
Returns name of object.
const TString & GetString() const
TObject & operator=(const TObject &rhs)
TObject assignment operator.
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Implementation of the PROOF session log handler.
TProofLogElem * Add(const char *ord, const char *url)
Add new entry to the list of elements.
Int_t Retrieve(const char *ord="*", TProofLog::ERetrieveOpt opt=TProofLog::kTrailing, const char *fname=0, const char *pattern=0)
Retrieve the content of the log file associated with worker 'ord'.
The PROOF manager interacts with the PROOF server coordinator to create or destroy a PROOF session,...
virtual const char * GetUrl()
TSignalHandler * fIntHandler
static void SetTXProofMgrHook(TProofMgr_t pmh)
Set hook to TXProofMgr ctor.
virtual TProofDesc * GetProofDesc(Int_t id)
Get TProofDesc instance corresponding to 'id'.
This class controls a Parallel ROOT Facility, PROOF, cluster.
void Close(Option_t *option="")
Close all open slave servers.
void InterruptCurrentMonitor()
If in active in a monitor set ready state.
void SetManager(TProofMgr *mgr)
Set manager and schedule its destruction after this for clean operations.
virtual void Add()
Add signal handler to system signal handler list.
virtual void Remove()
Remove signal handler from system signal handler list.
Int_t GetRemoteProtocol() const
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
void Continue()
Resume a stopped stopwatch.
void Stop()
Stop the stopwatch.
Int_t Atoi() const
Return integer value of string.
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
const char * Data() const
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
TString & ReplaceAll(const TString &s1, const TString &s2)
void ToUpper()
Change string to upper case.
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Remove(Ssiz_t pos)
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Long64_t Atoll() const
Return long long value of string.
virtual int GetServiceByName(const char *service)
Get port # of internet service.
virtual void AddFileHandler(TFileHandler *fh)
Add a file handler to the list of system file handlers.
static void ResetErrno()
Static function resetting system error number.
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
static Int_t GetErrno()
Static function returning system error number.
virtual TFileHandler * RemoveFileHandler(TFileHandler *fh)
Remove a file handler from the list of file handlers.
int GetPathInfo(const char *path, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime)
Get info about a file: id, size, flags, modification time.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
virtual Int_t GetUid(const char *user=0)
Returns the user's id. If user = 0, returns current user's id.
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure.
This class represents a WWW compatible URL.
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
const char * GetFileAndOptions() const
Return the file and its options (the string specified behind the ?).
const char * GetFile() const
void SetProtocol(const char *proto, Bool_t setDefaultPort=kFALSE)
Set protocol and, optionally, change the port accordingly.
const char * GetUser() const
const char * GetHost() const
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
const char * GetProtocol() const
Handler of asynchronous events for XProofD sockets.
Implementation of the functionality provided by TProofMgr in the case of a xproofd-based session.
Int_t Md5sum(const char *what, TString &sum, const char *where=0)
Run 'md5sum' on one of the nodes.
void Ls(const char *what="~/", const char *how=0, const char *where=0)
Run 'ls' on the nodes.
void Tail(const char *what, const char *how=0, const char *where=0)
Run 'tail' on the nodes.
Int_t PutFile(const char *local, const char *remote, const char *opt=0)
Put file 'local'to 'remote' to the master If opt is "force", the file, if it exists remotely,...
Bool_t HandleError(const void *in=0)
Handle error on the input socket.
void CpProgress(const char *pfx, Long64_t bytes, Long64_t size, TStopwatch *watch, Bool_t cr=kFALSE)
Print file copy progress.
virtual ~TXProofMgr()
Destructor: close the connection.
void More(const char *what, const char *how=0, const char *where=0)
Run 'more' on the nodes.
Bool_t MatchUrl(const char *url)
Checks if 'url' refers to the same 'user@host:port' entity as the URL in memory.
Int_t Stat(const char *what, FileStat_t &st, const char *where=0)
Run 'stat' on one of the nodes.
TObjString * ReadBuffer(const char *file, Long64_t ofs, Int_t len)
Read, via the coordinator, 'len' bytes from offset 'ofs' of 'file'.
void Find(const char *what="~/", const char *how="-type f", const char *where=0)
Run 'find' on the nodes.
TXProofMgr(const char *url, Int_t loglevel=-1, const char *alias="")
Create a PROOF manager for the standard (old) environment.
Int_t Cp(const char *src, const char *dst=0, const char *opts=0)
Copy files in/out of the sandbox.
const char * GetMssUrl(Bool_t=kFALSE)
Gets the URL to be prepended to paths when accessing the MSS associated with the connected cluster,...
TProofLog * GetSessionLogs(Int_t ridx=0, const char *stag=0, const char *pattern="-v \"| SvcMsg\"", Bool_t rescan=kFALSE)
Get logs or log tails from last session associated with this manager instance.
Int_t Init(Int_t loglevel=-1)
Do real initialization: open the connection and set the relevant variables.
TObjString * Exec(Int_t action, const char *what, const char *how, const char *where)
Execute 'action' (see EAdminExecType in 'XProofProtocol.h') at 'where' (default master),...
Int_t Rm(const char *what, const char *how=0, const char *where=0)
Run 'rm' on the nodes.
void ShowROOTVersions()
Display what ROOT versions are available on the cluster.
void ShowWorkers()
Show available workers.
Int_t SetROOTVersion(const char *tag)
Set the default ROOT version to be used.
void DetachSession(Int_t, Option_t *="")
Detach session with 'id' from its proofserv.
Int_t SendMsgToUsers(const char *msg, const char *usr=0)
Send a message to connected users.
TList * QuerySessions(Option_t *opt="S")
Get list of sessions accessible to this manager.
Int_t GetFile(const char *remote, const char *local, const char *opt=0)
Get file 'remote' into 'local' from the master.
void SetInvalid()
Invalidate this manager by closing the connection.
Bool_t HandleInput(const void *)
Handle asynchronous input on the socket.
TProof * AttachSession(Int_t id, Bool_t gui=kFALSE)
Dummy version provided for completeness.
void Grep(const char *what, const char *how=0, const char *where=0)
Run 'grep' on the nodes.
Int_t Reset(Bool_t hard=kFALSE, const char *usr=0)
Send a cleanup request for the sessions associated with the current user.
static TXSocketHandler * GetSocketHandler(TFileHandler *h=0, TSocket *s=0)
Get an instance of the input socket handler with 'h' as handler, connected to socket 's'.
High level handler of connections to XProofD.
Int_t GetOpenError() const
Getter for last error.
Int_t RecvRaw(void *buf, Int_t len, ESendRecvOptions opt=kDefault)
Receive a raw buffer of specified length bytes.
virtual void Close(Option_t *opt="")
Close connection.
TObjString * SendCoordinator(Int_t kind, const char *msg=0, Int_t int2=0, Long64_t l64=0, Int_t int3=0, const char *opt=0)
Send message to intermediate coordinator.
virtual Int_t Reconnect()
Try reconnection after failure.
Int_t Recv(TMessage *&mess)
Receive a TMessage object.
void DisconnectSession(Int_t id, Option_t *opt="")
Disconnect a session.
Int_t GetXrdProofdVersion() const
Bool_t IsServProofd()
Return kTRUE if the remote server is a 'proofd'.
Bool_t IsValid() const
Getter for validity status.
void RemoteTouch()
Remote touch functionality: contact the server to proof our vitality.
virtual int WriteRaw(const void *buf, int len, XrdClientPhyConnection *p=0)
Low level write call.
static constexpr double s
static long int sum(long int i)