70 if (isatty(0) != 0 && isatty(1) != 0) {
72 Printf(
"Opening new connection to %s", u.
Data());
75 if (s && s->IsValid()) {
89 class TXProofMgrInit {
106 if (
Init(dbg) != 0) {
132 Error(
"Init",
"while opening the connection to %s - exit (error: %d)",
173 gROOT->GetListOfSockets()->Remove(
this);
185 Warning(
"AttachSession",
"invalid TXProofMgr - do nothing");
189 Warning(
"AttachSession",
"invalid description object - do nothing");
223 Error(
"AttachSession",
"attaching to PROOF session");
237 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
252 }
else if (
id == 0) {
281 Warning(
"DetachSession",
"invalid TXProofMgr - do nothing");
309 Warning(
"MatchUrl",
"invalid TXProofMgr - do nothing");
344 Warning(
"ShowWorkers",
"invalid TXProofMgr - do nothing");
372 Error(
"GetMssUrl",
"invalid TXProofMgr - do nothing");
377 Error(
"GetMssUrl",
"functionality not supported by server");
386 Error(
"GetMssUrl",
"problems retrieving the required information");
390 Warning(
"GetMssUrl",
"TXProofMgr is now invalid: information may not be valid");
403 if (opt && !strncasecmp(opt,
"L",1))
409 Warning(
"QuerySessions",
"invalid TXProofMgr - do nothing");
429 Printf(
"// +++ %s session(s) currently active +++", to->
GetName());
432 Int_t id = -1, st = -1;
435 while (to->
GetString()[from] ==
' ') { from++; }
467 if (opt && !strncasecmp(opt,
"S",1))
490 Info(
"HandleInput",
"%p: got message type: %d",
this, what);
496 Warning(
"HandleInput",
"%p: got unknown message type: %d",
this, what);
501 Warning(
"HandleInput",
"%p: got message but socket is invalid!",
this);
520 Printf(
"ProofMgr: connection to coordinator at %s re-established",
525 Printf(
"TXProofMgr::HandleError: %p: got called ...",
this);
538 Printf(
"TXProofMgr::HandleError: %p: DONE ... ",
this);
559 Warning(
"Reset",
"invalid TXProofMgr - do nothing");
595 Warning(
"GetSessionLogs",
"invalid TXProofMgr - do nothing");
602 isess = (isess > 0) ? -isess : isess;
607 if (sesstag ==
"NR") {
613 Int_t xrs = (rescan) ? 1 : 0;
623 if (!rs.Tokenize(tag, from,
"|")) {
624 Warning(
"GetSessionLogs",
"Session tag undefined: corruption?\n"
625 " (received string: %s)", os->
GetName());
630 if (!rs.Tokenize(purl, from,
"|")) {
631 Warning(
"GetSessionLogs",
"Pool URL undefined: corruption?\n"
632 " (received string: %s)", os->
GetName());
641 while (rs.Tokenize(to, from,
"|")) {
651 if (url.
Contains(
".valgrind")) ord +=
"-valgrind";
655 Info(
"GetSessionLogs",
"ord: %s, url: %s", ord.
Data(), url.
Data());
661 if (pl && retrieve) {
662 const char *pat = pattern ? pattern :
"-v \"| SvcMsg\"";
663 if (pat && strlen(pat) > 0)
682 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
699 Warning(
"ReadBuffer",
"invalid TXProofMgr - do nothing");
705 if (*pattern ==
'|') {
715 Int_t plen = strlen(ptr);
716 Int_t lfi = strlen(fin);
717 char *buf =
new char[lfi + plen + 1];
718 memcpy(buf, fin, lfi);
719 memcpy(buf+lfi, ptr, plen);
733 Warning(
"ShowROOTVersions",
"invalid TXProofMgr - do nothing");
741 Printf(
"----------------------------------------------------------\n");
742 Printf(
"Available versions (tag ROOT-vers remote-path PROOF-version):\n");
744 Printf(
"----------------------------------------------------------");
759 Warning(
"SetROOTVersion",
"invalid TXProofMgr - do nothing");
783 if (!msg || strlen(msg) <= 0) {
784 Error(
"SendMsgToUsers",
"no message to send - do nothing");
789 const Int_t kMAXBUF = 32768;
790 char buf[kMAXBUF] = {0};
792 size_t space = kMAXBUF - 1;
796 if (usr && strlen(usr) > 0 && (strlen(usr) != 1 || usr[0] !=
'*')) {
797 lusr = (strlen(usr) + 3);
798 snprintf(buf, kMAXBUF,
"u:%s ", usr);
808 Error(
"SendMsgToUsers",
"request to read message from unreadable file '%s'", msg);
813 if (!(f = fopen(msg,
"r"))) {
814 Error(
"SendMsgToUsers",
"file '%s' cannot be open", msg);
819 off_t rcsk = lseek(fileno(f), (off_t) 0, SEEK_END);
820 if ((rcsk != (off_t)(-1))) {
822 if ((lseek(fileno(f), (off_t) 0, SEEK_SET) == (off_t)(-1))) {
823 Error(
"SendMsgToUsers",
"cannot rewind open file (seek to 0)");
828 Error(
"SendMsgToUsers",
"cannot get size of open file (seek to END)");
833 size_t wanted = left;
834 if (wanted > space) {
837 "requested to send %lld bytes: max size is %lld bytes: truncating",
841 while ((len =
read(fileno(f), p, wanted)) < 0 &&
845 SysError(
"SendMsgToUsers",
"error reading file");
850 left = (len >= (ssize_t)left) ? 0 : left - len;
852 wanted = (left > kMAXBUF-1) ? kMAXBUF-1 : left;
854 }
while (len > 0 && left > 0);
860 if (len > (ssize_t)space) {
862 "requested to send %lld bytes: max size is %lld bytes: truncating",
885 Error(
"Grep",
"invalid TXProofMgr - do nothing");
890 Error(
"Grep",
"functionality not supported by server");
911 Error(
"Find",
"invalid TXProofMgr - do nothing");
916 Error(
"Find",
"functionality not supported by server (XrdProofd version: %d)",
938 Error(
"Ls",
"invalid TXProofMgr - do nothing");
943 Error(
"Ls",
"functionality not supported by server");
964 Error(
"More",
"invalid TXProofMgr - do nothing");
969 Error(
"More",
"functionality not supported by server");
992 Error(
"Rm",
"invalid TXProofMgr - do nothing");
997 Error(
"Rm",
"functionality not supported by server");
1006 while (!force && opt.
Tokenize(t, from,
" ")) {
1007 if (t ==
"--force") {
1015 if (!force && isatty(0) != 0 && isatty(1) != 0) {
1017 prompt.
Form(
"Do you really want to remove '%s'? [N/y]", what);
1019 while (
ans !=
"N" &&
ans !=
"Y") {
1022 if (
ans ==
"")
ans =
"N";
1024 if (
ans !=
"N" &&
ans !=
"Y")
1025 Printf(
"Please answer y, Y, n or N");
1054 Error(
"Tail",
"invalid TXProofMgr - do nothing");
1059 Error(
"Tail",
"functionality not supported by server");
1080 Error(
"Md5sum",
"invalid TXProofMgr - do nothing");
1085 Error(
"Md5sum",
"functionality not supported by server");
1089 if (where && !strcmp(where,
"all")) {
1090 Error(
"Md5sum",
"cannot run on all nodes at once: please specify one");
1117 Error(
"Stat",
"invalid TXProofMgr - do nothing");
1122 Error(
"Stat",
"functionality not supported by server");
1126 if (where && !strcmp(where,
"all")) {
1127 Error(
"Stat",
"cannot run on all nodes at once: please specify one");
1138 Int_t mode, uid, gid, islink;
1142 sscanf(os->
GetName(),
"%ld %ld %d %d %d %I64d %ld %d", &dev, &ino, &mode,
1143 &uid, &gid, &size, &mtime, &islink);
1145 sscanf(os->
GetName(),
"%ld %ld %d %d %d %lld %ld %d", &dev, &ino, &mode,
1146 &uid, &gid, &size, &mtime, &islink);
1163 if (st.
fDev == -1)
return -1;
1202 const char *
what,
const char *how,
const char *where)
1206 Error(
"Exec",
"invalid TXProofMgr - do nothing");
1211 Error(
"Exec",
"functionality not supported by server");
1215 if (!what || strlen(what) <= 0) {
1216 Error(
"Exec",
"specifying a path is mandatory");
1226 while (opts.Tokenize(o, from,
" ")) {
1228 if (!o.
BeginsWith(
"-") && !isc && isn)
continue;
1239 }
else if (o ==
"-n") {
1241 }
else if (o ==
"--bytes=" || o ==
"--lines=") {
1284 Error(
"GetFile",
"invalid TXProofMgr - do nothing");
1289 Error(
"GetFile",
"functionality not supported by server");
1296 Error(
"GetFile",
"remote file path undefined");
1318 UInt_t openflags = O_WRONLY;
1329 if (!fileloc.
EndsWith(
"/")) fileloc +=
"/";
1338 Printf(
"[GetFile] local file '%s' exists and is not regular: cannot continue",
1344 Error(
"GetFile",
"cannot get user info for additional checks");
1355 Printf(
"[GetFile] file '%s' exists: no permission to delete or overwrite the file", fileloc.
Data());
1356 Printf(
"[GetFile] ownership: owner: %d, group: %d, other: %d", owner, group, other);
1362 openflags |= O_CREAT | O_TRUNC;
1365 openflags |= O_CREAT;
1369 openflags |= O_CREAT;
1374 if (
Md5sum(filerem, remsum) != 0) {
1376 Printf(
"[GetFile] remote file '%s' does not exists or cannot be read", filerem.
Data());
1382 if (rcloc == 0 && !force) {
1385 if (remsum == md5loc->
AsString()) {
1387 Printf(
"[GetFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1389 Printf(
"[GetFile] use option 'force' to override");
1398 const char *
a = Getline(
"Local file exists already: would you like to overwrite it? [N/y]");
1399 if (a[0] ==
'n' || a[0] ==
'N' || a[0] ==
'\0')
return 0;
1406 Int_t fdout =
open(fileloc, openflags, openmode);
1408 Error(
"GetFile",
"could not open local file '%s' for writing: errno: %d", local, errno);
1428 if (!ssz.IsDigit()) {
1429 Error(
"GetFile",
"received non-digit size string: '%s' ('%s')", os->
GetName(), ssz.Data());
1435 Error(
"GetFile",
"received null or negative size: %lld", size);
1441 const Int_t kMAXBUF = 16384;
1447 while (rc == 0 && filesize < size) {
1448 left = size - filesize;
1449 if (left > kMAXBUF) left = kMAXBUF;
1451 filesize = (rec > 0) ? (filesize + rec) : filesize;
1460 SysError(
"GetFile",
"error writing to unit: %d", fdout);
1468 CpProgress(
"GetFile", filesize, size, &watch);
1469 }
else if (rec < 0) {
1471 Error(
"GetFile",
"error during receiving file");
1479 Error(
"GetFile",
"size not received");
1494 if (!(md5loc.get())) {
1495 Error(
"GetFile",
"cannot get MD5 checksum of the new local file '%s'", fileloc.
Data());
1497 }
else if (remsum != md5loc->
AsString()) {
1498 Error(
"GetFile",
"checksums for the local copy and the remote file differ: {rem:%s,loc:%s}",
1518 Error(
"PutFile",
"invalid TXProofMgr - do nothing");
1523 Error(
"PutFile",
"functionality not supported by server");
1530 Error(
"PutFile",
"local file path undefined");
1545 }
else if (filerem.
EndsWith(
"/")) {
1554 UInt_t openflags = O_RDONLY;
1562 const char *why = (rcloc == 0) ?
"is not regular" :
"does not exists";
1563 Printf(
"[PutFile] local file '%s' %s: cannot continue", fileloc.
Data(), why);
1569 Error(
"PutFile",
"cannot get user info for additional checks");
1579 Printf(
"[PutFile] file '%s': no permission to read the file", fileloc.
Data());
1580 Printf(
"[PutFile] ownership: owner: %d, group: %d, other: %d", owner, group, other);
1589 Error(
"PutFile",
"cannot calculate the check sum for '%s'", fileloc.
Data());
1600 if (
Stat(filerem, strem) == 0) {
1601 if (
Md5sum(filerem, remsum) != 0) {
1602 Printf(
"[PutFile] remote file exists but the check sum calculation failed");
1606 if (remsum == locsum) {
1608 Printf(
"[PutFile] local file '%s' and remote file '%s' have the same MD5 check sum",
1610 Printf(
"[PutFile] use option 'force' to override");
1617 const char *
a = Getline(
"Remote file exists already: would you like to overwrite it? [N/y]");
1618 if (a[0] ==
'n' || a[0] ==
'N' || a[0] ==
'\0')
return 0;
1627 int fd =
open(fileloc.
Data(), openflags);
1629 Error(
"PutFile",
"cannot open file '%s': %d", fileloc.
Data(), errno);
1636 if (force) cmd +=
" force";
1650 const Int_t kMAXBUF = 16384;
1654 lseek(fd, pos, SEEK_SET);
1657 while (rc == 0 && pos < stloc.
fSize) {
1659 if (left > kMAXBUF) left = kMAXBUF;
1663 if (siz < 0 || siz != left) {
1664 Error(
"PutFile",
"error reading from file: errno: %d", errno);
1683 Error(
"PutFile",
"command could not be executed");
1697 if (
Md5sum(filerem, remsum) != 0) {
1698 Printf(
"[PutFile] cannot get MD5 checksum of the new remote file '%s'", filerem.
Data());
1700 }
else if (remsum != locsum) {
1701 Printf(
"[PutFile] checksums for the local copy and the remote file differ: {rem:%s, loc:%s}",
1718 if (!pfx || size == 0 || !watch)
return;
1720 fprintf(stderr,
"[%s] Total %.02f MB\t|", pfx, (
Double_t)size/1048576);
1722 for (
int l = 0;
l < 20;
l++) {
1724 if (
l < 20*bytes/size)
1725 fprintf(stderr,
"=");
1726 else if (
l == 20*bytes/size)
1727 fprintf(stderr,
">");
1728 else if (
l > 20*bytes/size)
1729 fprintf(stderr,
".");
1731 fprintf(stderr,
"=");
1737 fprintf(stderr,
"| %.02f %% [%.01f MB/s]\r",
1738 100.0*(size?(bytes/size):1), bytes/copytime/1048576.);
1739 if (cr) fprintf(stderr,
"\n");
1753 Error(
"Cp",
"invalid TXProofMgr - do nothing");
1758 Error(
"Cp",
"functionality not supported by server");
1765 Error(
"Cp",
"source file path undefined");
1772 }
else if (filedst.
EndsWith(
"/")) {
1790 cmd.
Form(
"%s %s %s", filesrc.
Data(), filedst.
Data(), (fmt ? fmt :
""));
const char * GetHost() const
const char * GetName() const
Returns name of object.
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
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.
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.
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.
Int_t GetRemoteProtocol() const
Int_t GetXrdProofdVersion() const
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.
Int_t GetRemoteId() const
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.
TProofMgrInterruptHandler & operator=(const TProofMgrInterruptHandler &)
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.
const char * GetProtocol() const
The PROOF manager interacts with the PROOF server coordinator to create or destroy a PROOF session...
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
virtual void Add()
Add signal handler to system signal handler list.
void SetInvalid()
Invalidate this manager by closing the connection.
void Print(Option_t *opt="") const
Print TNamed name and title.
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.
ClassImp(TXProofMgr) class TProofMgrInterruptHandler TProofMgrInterruptHandler(const TProofMgrInterruptHandler &)
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
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
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.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
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.
Bool_t R_ISREG(Int_t mode)
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)
Bool_t MatchUrl(const char *url)
Checks if 'url' refers to the same 'user:port' entity as the URL in memory.
const char * Data() 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.
const char * AsString() const
Return message digest as string.
This code implements the MD5 message-digest algorithm.
UChar_t mod R__LOCKGUARD2(gSrvAuthenticateMutex)
void Ls(const char *what="~/", const char *how=0, const char *where=0)
Run 'ls' on the nodes.
virtual ~TXProofMgr()
Destructor: close the connection.
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'.
Int_t Atoi() const
Return integer value of string.
void Continue()
Resume a stopped stopwatch.
Bool_t IsServProofd()
Return kTRUE if the remote server is a 'proofd'.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void SetManager(TProofMgr *mgr)
Set manager and schedule its destruction after this for clean operations.
void ShowROOTVersions()
Display what ROOT versions are available on the cluster.
TString GetString() const
TSignalHandler * fIntHandler
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
R__EXTERN TSystem * gSystem
Handler of asynchronous events for XProofD sockets.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
High level handler of connections to XProofD.
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
char * Form(const char *fmt,...)
const char * GetFileAndOptions() const
Return the file and its options (the string specified behind the ?).
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 * GetName() const
Returns name of object.
TSubString Strip(EStripType s=kTrailing, char c= ' ') const
Return a substring of self stripped at beginning and/or end.
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'.
Implementation of the functionality provided by TProofMgr in the case of a xproofd-based session...
Int_t Rm(const char *what, const char *how=0, const char *where=0)
Run 'rm' on the nodes.
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
virtual Int_t Reconnect()
Try reconnection after failure.
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
void DisconnectSession(Int_t id, Option_t *opt="")
Disconnect a session.
TString & Remove(Ssiz_t pos)
virtual void SysError(const char *method, const char *msgfmt,...) const
Issue system error message.
TProof * AttachSession(Int_t id, Bool_t gui=kFALSE)
Dummy version provided for completeness.
void Close(Option_t *option="")
Close all open slave servers.
virtual Int_t GetSize() const
const Int_t kXPROOF_Protocol
Long64_t Atoll() const
Return long long value of string.
virtual void Remove()
Remove signal handler from system signal handler list.
This class controls a Parallel ROOT Facility, PROOF, cluster.
Bool_t HandleInput(const void *)
Handle asynchronous input on the socket.
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.
void Find(const char *what="~/", const char *how="-type f", const char *where=0)
Run 'find' on the nodes.
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 IsDigit() const
Returns true if all characters in string are digits (0-9) or white spaces, i.e.
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.
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.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
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 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.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
Int_t GetOpenError() const
const char * GetUser() const
Implementation of the PROOF session log handler.
TProof * GetProof() 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'.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.