54 TProofMgrInterruptHandler(
const TProofMgrInterruptHandler&);
55 TProofMgrInterruptHandler&
operator=(
const TProofMgrInterruptHandler&);
65 Bool_t TProofMgrInterruptHandler::Notify()
68 if (isatty(0) != 0 && isatty(1) != 0) {
70 Printf(
"Opening new connection to %s", u.
Data());
73 if (s && s->IsValid()) {
87 class TXProofMgrInit {
104 if (
Init(dbg) != 0) {
130 Error(
"Init",
"while opening the connection to %s - exit (error: %d)",
171 gROOT->GetListOfSockets()->Remove(
this);
183 Warning(
"AttachSession",
"invalid TXProofMgr - do nothing");
187 Warning(
"AttachSession",
"invalid description object - do nothing");
221 Error(
"AttachSession",
"attaching to PROOF session");
235 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
250 }
else if (
id == 0) {
279 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
307 Warning(
"MatchUrl",
"invalid TXProofMgr - do nothing");
342 Warning(
"ShowWorkers",
"invalid TXProofMgr - do nothing");
370 Error(
"GetMssUrl",
"invalid TXProofMgr - do nothing");
375 Error(
"GetMssUrl",
"functionality not supported by server");
384 Error(
"GetMssUrl",
"problems retrieving the required information");
388 Warning(
"GetMssUrl",
"TXProofMgr is now invalid: information may not be valid");
401 if (opt && !strncasecmp(opt,
"L",1))
407 Warning(
"QuerySessions",
"invalid TXProofMgr - do nothing");
427 Printf(
"// +++ %s session(s) currently active +++", to->
GetName());
430 Int_t id = -1, st = -1;
433 while (to->
GetString()[from] ==
' ') { from++; }
465 if (opt && !strncasecmp(opt,
"S",1))
488 Info(
"HandleInput",
"%p: got message type: %d",
this, what);
494 Warning(
"HandleInput",
"%p: got unknown message type: %d",
this, what);
499 Warning(
"HandleInput",
"%p: got message but socket is invalid!",
this);
518 Printf(
"ProofMgr: connection to coordinator at %s re-established",
523 Printf(
"TXProofMgr::HandleError: %p: got called ...",
this);
536 Printf(
"TXProofMgr::HandleError: %p: DONE ... ",
this);
557 Warning(
"Reset",
"invalid TXProofMgr - do nothing");
593 Warning(
"GetSessionLogs",
"invalid TXProofMgr - do nothing");
600 isess = (isess > 0) ? -isess : isess;
605 if (sesstag ==
"NR") {
611 Int_t xrs = (rescan) ? 1 : 0;
621 if (!rs.Tokenize(tag, from,
"|")) {
622 Warning(
"GetSessionLogs",
"Session tag undefined: corruption?\n" 623 " (received string: %s)", os->
GetName());
628 if (!rs.Tokenize(purl, from,
"|")) {
629 Warning(
"GetSessionLogs",
"Pool URL undefined: corruption?\n" 630 " (received string: %s)", os->
GetName());
639 while (rs.Tokenize(to, from,
"|")) {
649 if (url.
Contains(
".valgrind")) ord +=
"-valgrind";
653 Info(
"GetSessionLogs",
"ord: %s, url: %s", ord.
Data(), url.
Data());
659 if (pl && retrieve) {
660 const char *pat = pattern ? pattern :
"-v \"| SvcMsg\"";
661 if (pat && strlen(pat) > 0)
680 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
697 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
703 if (*pattern ==
'|') {
713 Int_t plen = strlen(ptr);
714 Int_t lfi = strlen(fin);
715 char *buf =
new char[lfi + plen + 1];
716 memcpy(buf, fin, lfi);
717 memcpy(buf+lfi, ptr, plen);
731 Warning(
"ShowROOTVersions",
"invalid TXProofMgr - do nothing");
739 Printf(
"----------------------------------------------------------\n");
740 Printf(
"Available versions (tag ROOT-vers remote-path PROOF-version):\n");
742 Printf(
"----------------------------------------------------------");
757 Warning(
"SetROOTVersion",
"invalid TXProofMgr - do nothing");
781 if (!msg || strlen(msg) <= 0) {
782 Error(
"SendMsgToUsers",
"no message to send - do nothing");
787 const Int_t kMAXBUF = 32768;
788 char buf[kMAXBUF] = {0};
790 size_t space = kMAXBUF - 1;
794 if (usr && strlen(usr) > 0 && (strlen(usr) != 1 || usr[0] !=
'*')) {
795 lusr = (strlen(usr) + 3);
796 snprintf(buf, kMAXBUF,
"u:%s ", usr);
806 Error(
"SendMsgToUsers",
"request to read message from unreadable file '%s'", msg);
811 if (!(f = fopen(msg,
"r"))) {
812 Error(
"SendMsgToUsers",
"file '%s' cannot be open", msg);
817 off_t rcsk = lseek(fileno(f), (off_t) 0, SEEK_END);
818 if ((rcsk != (off_t)(-1))) {
819 left = (size_t) rcsk;
820 if ((lseek(fileno(f), (off_t) 0, SEEK_SET) == (off_t)(-1))) {
821 Error(
"SendMsgToUsers",
"cannot rewind open file (seek to 0)");
826 Error(
"SendMsgToUsers",
"cannot get size of open file (seek to END)");
831 size_t wanted = left;
832 if (wanted > space) {
835 "requested to send %lld bytes: max size is %lld bytes: truncating",
839 while ((len =
read(fileno(f), p, wanted)) < 0 &&
843 SysError(
"SendMsgToUsers",
"error reading file");
848 left = (len >= (ssize_t)left) ? 0 : left - len;
850 wanted = (left > kMAXBUF-1) ? kMAXBUF-1 : left;
852 }
while (len > 0 && left > 0);
858 if (len > (ssize_t)space) {
860 "requested to send %lld bytes: max size is %lld bytes: truncating",
883 Error(
"Grep",
"invalid TXProofMgr - do nothing");
888 Error(
"Grep",
"functionality not supported by server");
909 Error(
"Find",
"invalid TXProofMgr - do nothing");
914 Error(
"Find",
"functionality not supported by server (XrdProofd version: %d)",
936 Error(
"Ls",
"invalid TXProofMgr - do nothing");
941 Error(
"Ls",
"functionality not supported by server");
962 Error(
"More",
"invalid TXProofMgr - do nothing");
967 Error(
"More",
"functionality not supported by server");
990 Error(
"Rm",
"invalid TXProofMgr - do nothing");
995 Error(
"Rm",
"functionality not supported by server");
1004 while (!force && opt.
Tokenize(t, from,
" ")) {
1005 if (t ==
"--force") {
1013 if (!force && isatty(0) != 0 && isatty(1) != 0) {
1015 prompt.
Form(
"Do you really want to remove '%s'? [N/y]", what);
1017 while (
ans !=
"N" &&
ans !=
"Y") {
1020 if (
ans ==
"")
ans =
"N";
1022 if (
ans !=
"N" &&
ans !=
"Y")
1023 Printf(
"Please answer y, Y, n or N");
1052 Error(
"Tail",
"invalid TXProofMgr - do nothing");
1057 Error(
"Tail",
"functionality not supported by server");
1078 Error(
"Md5sum",
"invalid TXProofMgr - do nothing");
1083 Error(
"Md5sum",
"functionality not supported by server");
1087 if (where && !strcmp(where,
"all")) {
1088 Error(
"Md5sum",
"cannot run on all nodes at once: please specify one");
1115 Error(
"Stat",
"invalid TXProofMgr - do nothing");
1120 Error(
"Stat",
"functionality not supported by server");
1124 if (where && !strcmp(where,
"all")) {
1125 Error(
"Stat",
"cannot run on all nodes at once: please specify one");
1136 Int_t mode, uid, gid, islink;
1140 sscanf(os->
GetName(),
"%ld %ld %d %d %d %I64d %ld %d", &dev, &ino, &mode,
1141 &uid, &gid, &size, &mtime, &islink);
1143 sscanf(os->
GetName(),
"%ld %ld %d %d %d %lld %ld %d", &dev, &ino, &mode,
1144 &uid, &gid, &size, &mtime, &islink);
1161 if (st.
fDev == -1)
return -1;
1200 const char *
what,
const char *how,
const char *where)
1204 Error(
"Exec",
"invalid TXProofMgr - do nothing");
1209 Error(
"Exec",
"functionality not supported by server");
1213 if (!what || strlen(what) <= 0) {
1214 Error(
"Exec",
"specifying a path is mandatory");
1224 while (opts.Tokenize(o, from,
" ")) {
1226 if (!o.
BeginsWith(
"-") && !isc && isn)
continue;
1237 }
else if (o ==
"-n") {
1239 }
else if (o ==
"--bytes=" || o ==
"--lines=") {
1282 Error(
"GetFile",
"invalid TXProofMgr - do nothing");
1287 Error(
"GetFile",
"functionality not supported by server");
1294 Error(
"GetFile",
"remote file path undefined");
1316 UInt_t openflags = O_WRONLY;
1327 if (!fileloc.
EndsWith(
"/")) fileloc +=
"/";
1336 Printf(
"[GetFile] local file '%s' exists and is not regular: cannot continue",
1342 Error(
"GetFile",
"cannot get user info for additional checks");
1353 Printf(
"[GetFile] file '%s' exists: no permission to delete or overwrite the file", fileloc.
Data());
1354 Printf(
"[GetFile] ownership: owner: %d, group: %d, other: %d", owner, group, other);
1360 openflags |= O_CREAT | O_TRUNC;
1363 openflags |= O_CREAT;
1367 openflags |= O_CREAT;
1372 if (
Md5sum(filerem, remsum) != 0) {
1374 Printf(
"[GetFile] remote file '%s' does not exists or cannot be read", filerem.
Data());
1380 if (rcloc == 0 && !force) {
1383 if (remsum == md5loc->
AsString()) {
1385 Printf(
"[GetFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1387 Printf(
"[GetFile] use option 'force' to override");
1396 const char *
a = Getline(
"Local file exists already: would you like to overwrite it? [N/y]");
1397 if (a[0] ==
'n' || a[0] ==
'N' || a[0] ==
'\0')
return 0;
1404 Int_t fdout =
open(fileloc, openflags, openmode);
1406 Error(
"GetFile",
"could not open local file '%s' for writing: errno: %d", local, errno);
1426 if (!ssz.IsDigit()) {
1427 Error(
"GetFile",
"received non-digit size string: '%s' ('%s')", os->
GetName(), ssz.Data());
1433 Error(
"GetFile",
"received null or negative size: %lld", size);
1439 const Int_t kMAXBUF = 16384;
1445 while (rc == 0 && filesize < size) {
1446 left = size - filesize;
1447 if (left > kMAXBUF) left = kMAXBUF;
1449 filesize = (rec > 0) ? (filesize + rec) : filesize;
1458 SysError(
"GetFile",
"error writing to unit: %d", fdout);
1466 CpProgress(
"GetFile", filesize, size, &watch);
1467 }
else if (rec < 0) {
1469 Error(
"GetFile",
"error during receiving file");
1477 Error(
"GetFile",
"size not received");
1492 if (!(md5loc.get())) {
1493 Error(
"GetFile",
"cannot get MD5 checksum of the new local file '%s'", fileloc.
Data());
1495 }
else if (remsum != md5loc->
AsString()) {
1496 Error(
"GetFile",
"checksums for the local copy and the remote file differ: {rem:%s,loc:%s}",
1516 Error(
"PutFile",
"invalid TXProofMgr - do nothing");
1521 Error(
"PutFile",
"functionality not supported by server");
1528 Error(
"PutFile",
"local file path undefined");
1543 }
else if (filerem.
EndsWith(
"/")) {
1552 UInt_t openflags = O_RDONLY;
1560 const char *why = (rcloc == 0) ?
"is not regular" :
"does not exists";
1561 Printf(
"[PutFile] local file '%s' %s: cannot continue", fileloc.
Data(), why);
1567 Error(
"PutFile",
"cannot get user info for additional checks");
1577 Printf(
"[PutFile] file '%s': no permission to read the file", fileloc.
Data());
1578 Printf(
"[PutFile] ownership: owner: %d, group: %d, other: %d", owner, group, other);
1587 Error(
"PutFile",
"cannot calculate the check sum for '%s'", fileloc.
Data());
1598 if (
Stat(filerem, strem) == 0) {
1599 if (
Md5sum(filerem, remsum) != 0) {
1600 Printf(
"[PutFile] remote file exists but the check sum calculation failed");
1604 if (remsum == locsum) {
1606 Printf(
"[PutFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1608 Printf(
"[PutFile] use option 'force' to override");
1615 const char *
a = Getline(
"Remote file exists already: would you like to overwrite it? [N/y]");
1616 if (a[0] ==
'n' || a[0] ==
'N' || a[0] ==
'\0')
return 0;
1625 int fd =
open(fileloc.
Data(), openflags);
1627 Error(
"PutFile",
"cannot open file '%s': %d", fileloc.
Data(), errno);
1634 if (force) cmd +=
" force";
1648 const Int_t kMAXBUF = 16384;
1652 lseek(fd, pos, SEEK_SET);
1655 while (rc == 0 && pos < stloc.
fSize) {
1657 if (left > kMAXBUF) left = kMAXBUF;
1661 if (siz < 0 || siz != left) {
1662 Error(
"PutFile",
"error reading from file: errno: %d", errno);
1681 Error(
"PutFile",
"command could not be executed");
1695 if (
Md5sum(filerem, remsum) != 0) {
1696 Printf(
"[PutFile] cannot get MD5 checksum of the new remote file '%s'", filerem.
Data());
1698 }
else if (remsum != locsum) {
1699 Printf(
"[PutFile] checksums for the local copy and the remote file differ: {rem:%s, loc:%s}",
1716 if (!pfx || size == 0 || !watch)
return;
1718 fprintf(stderr,
"[%s] Total %.02f MB\t|", pfx, (
Double_t)size/1048576);
1720 for (
int l = 0;
l < 20;
l++) {
1722 if (
l < 20*bytes/size)
1723 fprintf(stderr,
"=");
1724 else if (
l == 20*bytes/size)
1725 fprintf(stderr,
">");
1726 else if (
l > 20*bytes/size)
1727 fprintf(stderr,
".");
1729 fprintf(stderr,
"=");
1735 fprintf(stderr,
"| %.02f %% [%.01f MB/s]\r",
1736 100.0*(size?(bytes/size):1), bytes/copytime/1048576.);
1737 if (cr) fprintf(stderr,
"\n");
1751 Error(
"Cp",
"invalid TXProofMgr - do nothing");
1756 Error(
"Cp",
"functionality not supported by server");
1763 Error(
"Cp",
"source file path undefined");
1770 }
else if (filedst.
EndsWith(
"/")) {
1788 cmd.
Form(
"%s %s %s", filesrc.
Data(), filedst.
Data(), (fmt ? fmt :
""));
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
virtual const char * GetName() const
Returns name of object.
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
void ShowWorkers()
Show available workers.
Int_t GetOpenError() const
Getter for last error.
double read(const std::string &file_name)
reading
XYZVector ans(TestRotation const &t, XYZVector const &v_in)
TObjString * ReadBuffer(const char *file, Long64_t ofs, Int_t len)
Read, via the coordinator, 'len' bytes from offset 'ofs' of 'file'.
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Double_t RealTime()
Stop the stopwatch (if it is running) and return the realtime (in seconds) passed between the start a...
void CpProgress(const char *pfx, Long64_t bytes, Long64_t size, TStopwatch *watch, Bool_t cr=kFALSE)
Print file copy progress.
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
Int_t Stat(const char *what, FileStat_t &st, const char *where=0)
Run 'stat' on one of the nodes.
Int_t Md5sum(const char *what, TString &sum, const char *where=0)
Run 'md5sum' on one of the nodes.
void DetachSession(Int_t, Option_t *="")
Detach session with 'id' from its proofserv.
static TMD5 * FileChecksum(const char *file)
Returns checksum of specified file.
void SetProtocol(const char *proto, Bool_t setDefaultPort=kFALSE)
Set protocol and, optionally, change the port accordingly.
double write(int n, const std::string &file_name, const std::string &vector_type, int compress=0)
writing
Bool_t HandleError(const void *in=0)
Handle error on the input socket.
Int_t Cp(const char *src, const char *dst=0, const char *opts=0)
Copy files in/out of the sandbox.
Collectable string class.
virtual void Close(Option_t *opt="")
Close connection.
void InterruptCurrentMonitor()
If in active in a monitor set ready state.
This class represents a WWW compatible URL.
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'...
TString & ReplaceAll(const TString &s1, const TString &s2)
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.
const char * GetProtocol() const
virtual void SetName(const char *name)
Change (i.e.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
TProof * GetProof() const
virtual void Add()
Add signal handler to system signal handler list.
void SetInvalid()
Invalidate this manager by closing the connection.
void ToUpper()
Change string to upper case.
void More(const char *what, const char *how=0, const char *where=0)
Run 'more' on the nodes.
const char * GetFileAndOptions() const
Return the file and its options (the string specified behind the ?).
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
const char * AsString() const
Return message digest as string.
void Grep(const char *what, const char *how=0, const char *where=0)
Run 'grep' on the nodes.
Int_t GetFile(const char *remote, const char *local, const char *opt=0)
Get file 'remote' into 'local' from the master.
R__EXTERN TVirtualMutex * gROOTMutex
const char * GetMssUrl(Bool_t=kFALSE)
Gets the URL to be prepended to paths when accessing the MSS associated with the connected cluster...
TList * QuerySessions(Option_t *opt="S")
Get list of sessions accessible to this manager.
static void retrieve(const gsl_integration_workspace *workspace, double *a, double *b, double *r, double *e)
TXProofMgr(const char *url, Int_t loglevel=-1, const char *alias="")
Create a PROOF manager for the standard (old) environment.
void RemoteTouch()
Remote touch functionality: contact the server to proof our vitality.
virtual TFileHandler * RemoveFileHandler(TFileHandler *fh)
Remove a file handler from the list of file handlers.
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
Bool_t R_ISREG(Int_t mode)
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
static Int_t GetErrno()
Static function returning system error number.
Int_t SendMsgToUsers(const char *msg, const char *usr=0)
Send a message to connected users.
void SetRemoteId(Int_t id)
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.
Bool_t MatchUrl(const char *url)
Checks if 'url' refers to the same 'user:port' entity as the URL in memory.
const char * GetHost() const
static TXProofMgrInit gxproofmgr_init
Int_t Reset(Bool_t hard=kFALSE, const char *usr=0)
Send a cleanup request for the sessions associated with the current user.
TProofMgr * GetTXProofMgr(const char *url, Int_t l, const char *al)
virtual int WriteRaw(const void *buf, int len, XrdClientPhyConnection *p=0)
Low level write call.
void Stop()
Stop the stopwatch.
Int_t RecvRaw(void *buf, Int_t len, ESendRecvOptions opt=kDefault)
Receive a raw buffer of specified length bytes.
This code implements the MD5 message-digest algorithm.
void Ls(const char *what="~/", const char *how=0, const char *where=0)
Run 'ls' on the nodes.
virtual ~TXProofMgr()
Destructor: close the connection.
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure.
virtual TProofDesc * GetProofDesc(Int_t id)
Get TProofDesc instance corresponding to 'id'.
void Continue()
Resume a stopped stopwatch.
Bool_t IsServProofd()
Return kTRUE if the remote server is a 'proofd'.
Long64_t Atoll() const
Return long long value of string.
Int_t GetRemoteProtocol() const
void SetManager(TProofMgr *mgr)
Set manager and schedule its destruction after this for clean operations.
const char * GetUser() const
const char * GetName() const
Returns name of object.
void ShowROOTVersions()
Display what ROOT versions are available on the cluster.
TSignalHandler * fIntHandler
R__EXTERN TSystem * gSystem
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
char * Form(const char *fmt,...)
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
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...
virtual const char * GetUrl()
const Int_t kPROOF_Protocol
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), with options 'how', on 'what'.
Int_t Rm(const char *what, const char *how=0, const char *where=0)
Run 'rm' on the nodes.
void Print(Option_t *opt="") const
Dump the content to the screen.
TString GetString() const
virtual Int_t Reconnect()
Try reconnection after failure.
#define R__LOCKGUARD2(mutex)
void DisconnectSession(Int_t id, Option_t *opt="")
Disconnect a session.
TString & Remove(Ssiz_t pos)
TProof * AttachSession(Int_t id, Bool_t gui=kFALSE)
Dummy version provided for completeness.
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
void Close(Option_t *option="")
Close all open slave servers.
const Int_t kXPROOF_Protocol
virtual void Remove()
Remove signal handler from system signal handler list.
Bool_t HandleInput(const void *)
Handle asynchronous input on the socket.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Int_t Recv(TMessage *&mess)
Receive a TMessage object.
virtual Int_t GetUid(const char *user=0)
Returns the user's id. If user = 0, returns current user's id.
static void SetTXProofMgrHook(TProofMgr_t pmh)
Set hook to TXProofMgr ctor.
Binding & operator=(OUT(*fun)(void))
void Find(const char *what="~/", const char *how="-type f", const char *where=0)
Run 'find' on the nodes.
Bool_t R_ISDIR(Int_t mode)
Int_t SetROOTVersion(const char *tag)
Set the default ROOT version to be used.
TProofLogElem * Add(const char *ord, const char *url)
Add new entry to the list of elements.
Bool_t IsValid() const
Getter for validity status.
virtual int GetServiceByName(const char *service)
Get port # of internet service.
virtual void Add(TObject *obj)
Int_t Init(Int_t loglevel=-1)
Do real initialization: open the connection and set the relevant variables.
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.
Int_t Atoi() const
Return integer value of string.
Bool_t IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
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 ~.
void Tail(const char *what, const char *how=0, const char *where=0)
Run 'tail' on the nodes.
virtual Int_t GetSize() const
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
Int_t GetRemoteId() const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Int_t GetXrdProofdVersion() const
const char * Data() const
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'.