59 TProofMgrInterruptHandler(
const TProofMgrInterruptHandler&);
60 TProofMgrInterruptHandler&
operator=(
const TProofMgrInterruptHandler&);
70Bool_t TProofMgrInterruptHandler::Notify()
73 if (isatty(0) != 0 && isatty(1) != 0) {
75 Printf(
"Opening new connection to %s", u.
Data());
109 if (
Init(dbg) != 0) {
135 Error(
"Init",
"while opening the connection to %s - exit (error: %d)",
176 gROOT->GetListOfSockets()->Remove(
this);
188 Warning(
"AttachSession",
"invalid TXProofMgr - do nothing");
192 Warning(
"AttachSession",
"invalid description object - do nothing");
198 return d->GetProof();
226 Error(
"AttachSession",
"attaching to PROOF session");
240 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
255 }
else if (
id == 0) {
284 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
312 Warning(
"MatchUrl",
"invalid TXProofMgr - do nothing");
347 Warning(
"ShowWorkers",
"invalid TXProofMgr - do nothing");
375 Error(
"GetMssUrl",
"invalid TXProofMgr - do nothing");
380 Error(
"GetMssUrl",
"functionality not supported by server");
389 Error(
"GetMssUrl",
"problems retrieving the required information");
393 Warning(
"GetMssUrl",
"TXProofMgr is now invalid: information may not be valid");
406 if (opt && !strncasecmp(opt,
"L",1))
412 Warning(
"QuerySessions",
"invalid TXProofMgr - do nothing");
432 Printf(
"// +++ %s session(s) currently active +++", to->
GetName());
435 Int_t id = -1, st = -1;
438 while (to->
GetString()[from] ==
' ') { from++; }
470 if (opt && !strncasecmp(opt,
"S",1))
493 Info(
"HandleInput",
"%p: got message type: %d",
this,
what);
499 Warning(
"HandleInput",
"%p: got unknown message type: %d",
this,
what);
504 Warning(
"HandleInput",
"%p: got message but socket is invalid!",
this);
523 Printf(
"ProofMgr: connection to coordinator at %s re-established",
528 Printf(
"TXProofMgr::HandleError: %p: got called ...",
this);
541 Printf(
"TXProofMgr::HandleError: %p: DONE ... ",
this);
562 Warning(
"Reset",
"invalid TXProofMgr - do nothing");
594 const char *pattern,
Bool_t rescan)
598 Warning(
"GetSessionLogs",
"invalid TXProofMgr - do nothing");
605 isess = (isess > 0) ? -isess : isess;
610 if (sesstag ==
"NR") {
616 Int_t xrs = (rescan) ? 1 : 0;
627 Warning(
"GetSessionLogs",
"Session tag undefined: corruption?\n"
628 " (received string: %s)", os->
GetName());
633 if (!rs.
Tokenize(purl, from,
"|")) {
634 Warning(
"GetSessionLogs",
"Pool URL undefined: corruption?\n"
635 " (received string: %s)", os->
GetName());
644 while (rs.
Tokenize(to, from,
"|")) {
654 if (url.
Contains(
".valgrind")) ord +=
"-valgrind";
658 Info(
"GetSessionLogs",
"ord: %s, url: %s", ord.
Data(), url.
Data());
665 const char *pat = pattern ? pattern :
"-v \"| SvcMsg\"";
666 if (pat && strlen(pat) > 0)
685 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
702 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
708 if (*pattern ==
'|') {
718 Int_t plen = strlen(ptr);
719 Int_t lfi = strlen(fin);
720 char *buf =
new char[lfi + plen + 1];
721 memcpy(buf, fin, lfi);
722 memcpy(buf+lfi, ptr, plen);
736 Warning(
"ShowROOTVersions",
"invalid TXProofMgr - do nothing");
744 Printf(
"----------------------------------------------------------\n");
745 Printf(
"Available versions (tag ROOT-vers remote-path PROOF-version):\n");
747 Printf(
"----------------------------------------------------------");
762 Warning(
"SetROOTVersion",
"invalid TXProofMgr - do nothing");
786 if (!msg || strlen(msg) <= 0) {
787 Error(
"SendMsgToUsers",
"no message to send - do nothing");
792 const Int_t kMAXBUF = 32768;
793 char buf[kMAXBUF] = {0};
795 size_t space = kMAXBUF - 1;
799 if (usr && strlen(usr) > 0 && (strlen(usr) != 1 || usr[0] !=
'*')) {
800 lusr = (strlen(usr) + 3);
801 snprintf(buf, kMAXBUF,
"u:%s ", usr);
811 Error(
"SendMsgToUsers",
"request to read message from unreadable file '%s'", msg);
816 if (!(
f = fopen(msg,
"r"))) {
817 Error(
"SendMsgToUsers",
"file '%s' cannot be open", msg);
822 off_t rcsk = lseek(fileno(
f), (off_t) 0, SEEK_END);
823 if ((rcsk != (off_t)(-1))) {
824 left = (size_t) rcsk;
825 if ((lseek(fileno(
f), (off_t) 0, SEEK_SET) == (off_t)(-1))) {
826 Error(
"SendMsgToUsers",
"cannot rewind open file (seek to 0)");
831 Error(
"SendMsgToUsers",
"cannot get size of open file (seek to END)");
836 size_t wanted = left;
837 if (wanted > space) {
840 "requested to send %lld bytes: max size is %lld bytes: truncating",
844 while ((len = read(fileno(
f), p, wanted)) < 0 &&
848 SysError(
"SendMsgToUsers",
"error reading file");
853 left = (len >= (ssize_t)left) ? 0 : left - len;
855 wanted = (left > kMAXBUF-1) ? kMAXBUF-1 : left;
857 }
while (len > 0 && left > 0);
863 if (len > (ssize_t)space) {
865 "requested to send %lld bytes: max size is %lld bytes: truncating",
888 Error(
"Grep",
"invalid TXProofMgr - do nothing");
893 Error(
"Grep",
"functionality not supported by server");
914 Error(
"Find",
"invalid TXProofMgr - do nothing");
919 Error(
"Find",
"functionality not supported by server (XrdProofd version: %d)",
941 Error(
"Ls",
"invalid TXProofMgr - do nothing");
946 Error(
"Ls",
"functionality not supported by server");
967 Error(
"More",
"invalid TXProofMgr - do nothing");
972 Error(
"More",
"functionality not supported by server");
995 Error(
"Rm",
"invalid TXProofMgr - do nothing");
1000 Error(
"Rm",
"functionality not supported by server");
1004 TString prompt, ans(
"Y"), opt(how);
1009 while (!force && opt.
Tokenize(t, from,
" ")) {
1010 if (t ==
"--force") {
1018 if (!force && isatty(0) != 0 && isatty(1) != 0) {
1020 prompt.
Form(
"Do you really want to remove '%s'? [N/y]",
what);
1022 while (ans !=
"N" && ans !=
"Y") {
1023 ans = Getline(prompt.
Data());
1025 if (ans ==
"") ans =
"N";
1027 if (ans !=
"N" && ans !=
"Y")
1028 Printf(
"Please answer y, Y, n or N");
1057 Error(
"Tail",
"invalid TXProofMgr - do nothing");
1062 Error(
"Tail",
"functionality not supported by server");
1083 Error(
"Md5sum",
"invalid TXProofMgr - do nothing");
1088 Error(
"Md5sum",
"functionality not supported by server");
1092 if (where && !strcmp(where,
"all")) {
1093 Error(
"Md5sum",
"cannot run on all nodes at once: please specify one");
1120 Error(
"Stat",
"invalid TXProofMgr - do nothing");
1125 Error(
"Stat",
"functionality not supported by server");
1129 if (where && !strcmp(where,
"all")) {
1130 Error(
"Stat",
"cannot run on all nodes at once: please specify one");
1141 Int_t mode, uid, gid, islink;
1145 sscanf(os->
GetName(),
"%ld %ld %d %d %d %I64d %ld %d", &dev, &ino, &mode,
1146 &uid, &gid, &size, &mtime, &islink);
1148 sscanf(os->
GetName(),
"%ld %ld %d %d %d %lld %ld %d", &dev, &ino, &mode,
1149 &uid, &gid, &size, &mtime, &islink);
1166 if (st.
fDev == -1)
return -1;
1205 const char *
what,
const char *how,
const char *where)
1209 Error(
"Exec",
"invalid TXProofMgr - do nothing");
1214 Error(
"Exec",
"functionality not supported by server");
1219 Error(
"Exec",
"specifying a path is mandatory");
1229 while (opts.Tokenize(o, from,
" ")) {
1231 if (!o.
BeginsWith(
"-") && !isc && isn)
continue;
1242 }
else if (o ==
"-n") {
1244 }
else if (o ==
"--bytes=" || o ==
"--lines=") {
1287 Error(
"GetFile",
"invalid TXProofMgr - do nothing");
1292 Error(
"GetFile",
"functionality not supported by server");
1299 Error(
"GetFile",
"remote file path undefined");
1321 UInt_t openflags = O_WRONLY;
1332 if (!fileloc.
EndsWith(
"/")) fileloc +=
"/";
1341 Printf(
"[GetFile] local file '%s' exists and is not regular: cannot continue",
1347 Error(
"GetFile",
"cannot get user info for additional checks");
1358 Printf(
"[GetFile] file '%s' exists: no permission to delete or overwrite the file", fileloc.
Data());
1359 Printf(
"[GetFile] ownership: owner: %d, group: %d, other: %d", owner,
group, other);
1365 openflags |= O_CREAT | O_TRUNC;
1368 openflags |= O_CREAT;
1372 openflags |= O_CREAT;
1377 if (
Md5sum(filerem, remsum) != 0) {
1379 Printf(
"[GetFile] remote file '%s' does not exists or cannot be read", filerem.
Data());
1385 if (rcloc == 0 && !force) {
1388 if (remsum == md5loc->
AsString()) {
1390 Printf(
"[GetFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1392 Printf(
"[GetFile] use option 'force' to override");
1401 const char *
a = Getline(
"Local file exists already: would you like to overwrite it? [N/y]");
1402 if (
a[0] ==
'n' ||
a[0] ==
'N' ||
a[0] ==
'\0')
return 0;
1409 Int_t fdout = open(fileloc, openflags, openmode);
1411 Error(
"GetFile",
"could not open local file '%s' for writing: errno: %d", local, errno);
1432 Error(
"GetFile",
"received non-digit size string: '%s' ('%s')", os->
GetName(), ssz.
Data());
1438 Error(
"GetFile",
"received null or negative size: %lld", size);
1444 const Int_t kMAXBUF = 16384;
1450 while (rc == 0 && filesize < size) {
1451 left = size - filesize;
1452 if (left > kMAXBUF) left = kMAXBUF;
1454 filesize = (rec > 0) ? (filesize + rec) : filesize;
1463 SysError(
"GetFile",
"error writing to unit: %d", fdout);
1471 CpProgress(
"GetFile", filesize, size, &watch);
1472 }
else if (rec < 0) {
1474 Error(
"GetFile",
"error during receiving file");
1482 Error(
"GetFile",
"size not received");
1497 if (!(md5loc.get())) {
1498 Error(
"GetFile",
"cannot get MD5 checksum of the new local file '%s'", fileloc.
Data());
1500 }
else if (remsum != md5loc->AsString()) {
1501 Error(
"GetFile",
"checksums for the local copy and the remote file differ: {rem:%s,loc:%s}",
1502 remsum.
Data(), md5loc->AsString());
1521 Error(
"PutFile",
"invalid TXProofMgr - do nothing");
1526 Error(
"PutFile",
"functionality not supported by server");
1533 Error(
"PutFile",
"local file path undefined");
1548 }
else if (filerem.
EndsWith(
"/")) {
1557 UInt_t openflags = O_RDONLY;
1565 const char *why = (rcloc == 0) ?
"is not regular" :
"does not exists";
1566 Printf(
"[PutFile] local file '%s' %s: cannot continue", fileloc.
Data(), why);
1572 Error(
"PutFile",
"cannot get user info for additional checks");
1582 Printf(
"[PutFile] file '%s': no permission to read the file", fileloc.
Data());
1583 Printf(
"[PutFile] ownership: owner: %d, group: %d, other: %d", owner,
group, other);
1592 Error(
"PutFile",
"cannot calculate the check sum for '%s'", fileloc.
Data());
1603 if (
Stat(filerem, strem) == 0) {
1604 if (
Md5sum(filerem, remsum) != 0) {
1605 Printf(
"[PutFile] remote file exists but the check sum calculation failed");
1609 if (remsum == locsum) {
1611 Printf(
"[PutFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1613 Printf(
"[PutFile] use option 'force' to override");
1620 const char *
a = Getline(
"Remote file exists already: would you like to overwrite it? [N/y]");
1621 if (
a[0] ==
'n' ||
a[0] ==
'N' ||
a[0] ==
'\0')
return 0;
1630 int fd = open(fileloc.
Data(), openflags);
1632 Error(
"PutFile",
"cannot open file '%s': %d", fileloc.
Data(), errno);
1639 if (force) cmd +=
" force";
1653 const Int_t kMAXBUF = 16384;
1657 lseek(fd, pos, SEEK_SET);
1660 while (rc == 0 && pos < stloc.
fSize) {
1662 if (left > kMAXBUF) left = kMAXBUF;
1666 if (siz < 0 || siz != left) {
1667 Error(
"PutFile",
"error reading from file: errno: %d", errno);
1686 Error(
"PutFile",
"command could not be executed");
1700 if (
Md5sum(filerem, remsum) != 0) {
1701 Printf(
"[PutFile] cannot get MD5 checksum of the new remote file '%s'", filerem.
Data());
1703 }
else if (remsum != locsum) {
1704 Printf(
"[PutFile] checksums for the local copy and the remote file differ: {rem:%s, loc:%s}",
1721 if (!pfx || size == 0 || !watch)
return;
1723 fprintf(stderr,
"[%s] Total %.02f MB\t|", pfx, (
Double_t)size/1048576);
1725 for (
int l = 0;
l < 20;
l++) {
1727 if (
l < 20*bytes/size)
1728 fprintf(stderr,
"=");
1729 else if (
l == 20*bytes/size)
1730 fprintf(stderr,
">");
1731 else if (
l > 20*bytes/size)
1732 fprintf(stderr,
".");
1734 fprintf(stderr,
"=");
1740 fprintf(stderr,
"| %.02f %% [%.01f MB/s]\r",
1741 100.0*bytes/size, bytes/copytime/1048576.);
1742 if (cr) fprintf(stderr,
"\n");
1756 Error(
"Cp",
"invalid TXProofMgr - do nothing");
1761 Error(
"Cp",
"functionality not supported by server");
1768 Error(
"Cp",
"source file path undefined");
1775 }
else if (filedst.
EndsWith(
"/")) {
1793 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.
void Print(Option_t *opt="") const
Dump the content to the screen.
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=nullptr)
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
void CtrlC()
Interrupt the remote protocol instance.
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 uint64_t sum(uint64_t i)