#include "RConfigure.h"
#include "RConfig.h"
#include "Riostream.h"
#ifdef WIN32
#include <io.h>
typedef long off_t;
#endif
#include <stdlib.h>
#include <errno.h>
#include <time.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#if (defined(__FreeBSD__) && (__FreeBSD__ < 4)) || \
(defined(__APPLE__) && (!defined(MAC_OS_X_VERSION_10_3) || \
(MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_3)))
#include <sys/file.h>
#define lockf(fd, op, sz) flock((fd), (op))
#ifndef F_LOCK
#define F_LOCK (LOCK_EX | LOCK_NB)
#endif
#ifndef F_ULOCK
#define F_ULOCK LOCK_UN
#endif
#endif
#include "RRemoteProtocol.h"
#include "TApplicationServer.h"
#include "TBenchmark.h"
#include "TEnv.h"
#include "TError.h"
#include "TException.h"
#include "TInterpreter.h"
#include "TMD5.h"
#include "TMessage.h"
#include "TROOT.h"
#include "TSocket.h"
#include "TSystem.h"
#include "TRemoteObject.h"
#include "TUrl.h"
#include "TObjString.h"
#include "compiledata.h"
#include "TClass.h"
class TASInterruptHandler : public TSignalHandler {
TApplicationServer *fServ;
public:
TASInterruptHandler(TApplicationServer *s)
: TSignalHandler(kSigUrgent, kFALSE) { fServ = s; }
Bool_t Notify();
};
Bool_t TASInterruptHandler::Notify()
{
fServ->HandleUrgentData();
if (TROOT::Initialized()) {
Throw(GetSignal());
}
return kTRUE;
}
class TASSigPipeHandler : public TSignalHandler {
TApplicationServer *fServ;
public:
TASSigPipeHandler(TApplicationServer *s) : TSignalHandler(kSigPipe, kFALSE)
{ fServ = s; }
Bool_t Notify();
};
Bool_t TASSigPipeHandler::Notify()
{
fServ->HandleSigPipe();
return kTRUE;
}
class TASInputHandler : public TFileHandler {
TApplicationServer *fServ;
public:
TASInputHandler(TApplicationServer *s, Int_t fd) : TFileHandler(fd, 1)
{ fServ = s; }
Bool_t Notify();
Bool_t ReadNotify() { return Notify(); }
};
Bool_t TASInputHandler::Notify()
{
fServ->HandleSocketInput();
return kTRUE;
}
TString TASLogHandler::fgPfx = "";
TASLogHandler::TASLogHandler(const char *cmd, TSocket *s, const char *pfx)
: TFileHandler(-1, 1), fSocket(s), fPfx(pfx)
{
ResetBit(kFileIsPipe);
fFile = 0;
if (s && cmd) {
fFile = gSystem->OpenPipe(cmd, "r");
if (fFile) {
SetFd(fileno(fFile));
Notify();
SetBit(kFileIsPipe);
} else {
fSocket = 0;
Error("TASLogHandler", "executing command in pipe");
}
} else {
Error("TASLogHandler",
"undefined command (%p) or socket (%p)", (int *)cmd, s);
}
}
TASLogHandler::TASLogHandler(FILE *f, TSocket *s, const char *pfx)
: TFileHandler(-1, 1), fSocket(s), fPfx(pfx)
{
ResetBit(kFileIsPipe);
fFile = 0;
if (s && f) {
fFile = f;
SetFd(fileno(fFile));
Notify();
} else {
Error("TASLogHandler", "undefined file (%p) or socket (%p)", f, s);
}
}
TASLogHandler::~TASLogHandler()
{
if (TestBit(kFileIsPipe) && fFile)
gSystem->ClosePipe(fFile);
fFile = 0;
fSocket = 0;
ResetBit(kFileIsPipe);
}
Bool_t TASLogHandler::Notify()
{
if (IsValid()) {
TMessage m(kMESS_ANY);
char line[4096];
char *plf = 0;
while (fgets(line, sizeof(line), fFile)) {
if ((plf = strchr(line, '\n')))
*plf = 0;
m.Reset(kMESS_ANY);
m << (Int_t)kRRT_Message;
if (fPfx.Length() > 0) {
m << TString(Form("%s: %s", fPfx.Data(), line));
} else if (fgPfx.Length() > 0) {
m << TString(Form("%s: %s", fgPfx.Data(), line));
} else {
m << TString(line);
}
fSocket->Send(m);
}
}
return kTRUE;
}
void TASLogHandler::SetDefaultPrefix(const char *pfx)
{
fgPfx = pfx;
}
TASLogHandlerGuard::TASLogHandlerGuard(const char *cmd, TSocket *s,
const char *pfx, Bool_t on)
{
fExecHandler = 0;
if (cmd && on) {
fExecHandler = new TASLogHandler(cmd, s, pfx);
if (fExecHandler->IsValid()) {
gSystem->AddFileHandler(fExecHandler);
} else {
Error("TASLogHandlerGuard","invalid handler");
}
} else {
if (on)
Error("TASLogHandlerGuard","undefined command");
}
}
TASLogHandlerGuard::TASLogHandlerGuard(FILE *f, TSocket *s,
const char *pfx, Bool_t on)
{
fExecHandler = 0;
if (f && on) {
fExecHandler = new TASLogHandler(f, s, pfx);
if (fExecHandler->IsValid()) {
gSystem->AddFileHandler(fExecHandler);
} else {
Error("TASLogHandlerGuard","invalid handler");
}
} else {
if (on)
Error("TASLogHandlerGuard","undefined file");
}
}
TASLogHandlerGuard::~TASLogHandlerGuard()
{
if (fExecHandler && fExecHandler->IsValid()) {
gSystem->RemoveFileHandler(fExecHandler);
SafeDelete(fExecHandler);
}
}
ClassImp(TApplicationServer)
TApplicationServer::TApplicationServer(Int_t *argc, char **argv,
FILE *flog, const char *logfile)
: TApplication("server", argc, argv, 0, -1)
{
GetOptions(argc, argv);
gErrorAbortLevel = kSysError + 1;
SetErrorHandler(ErrorHandler);
fInterrupt = kFALSE;
fSocket = 0;
fWorkingDir = 0;
fLogFilePath = logfile;
fLogFile = flog;
fLogFileDes = -1;
if (!fLogFile || (fLogFileDes = fileno(fLogFile)) < 0)
Terminate(0);
fRealTimeLog = kFALSE;
fSentCanvases = 0;
TASLogHandler::SetDefaultPrefix(Form("roots:%s", gSystem->HostName()));
fIsValid = kFALSE;
if (!(fSocket = new TSocket(GetHost(), GetPort()))) {
Terminate(0);
return;
}
Int_t sock = fSocket->GetDescriptor();
if (Setup() != 0) {
Error("TApplicationServer", "failed to setup - quitting");
SendLogFile(-98);
Terminate(0);
}
ProcessLine("#include <iostream>", kTRUE);
ProcessLine("#include <string>",kTRUE);
const char *logon;
logon = gEnv->GetValue("Rint.Load", (char *)0);
if (logon) {
char *mac = gSystem->Which(TROOT::GetMacroPath(), logon, kReadPermission);
if (mac)
ProcessLine(Form(".L %s", logon), kTRUE);
delete [] mac;
}
ExecLogon();
gBenchmark = new TBenchmark();
gInterpreter->SaveContext();
gInterpreter->SaveGlobalsContext();
gSystem->AddSignalHandler(new TASInterruptHandler(this));
gSystem->AddFileHandler(new TASInputHandler(this, sock));
fIsValid = kTRUE;
BrowseDirectory(0);
SendLogFile();
}
Int_t TApplicationServer::Setup()
{
char str[512];
snprintf(str, 512, "**** Remote session @ %s started ****", gSystem->HostName());
if (fSocket->Send(str) != 1+static_cast<Int_t>(strlen(str))) {
Error("Setup", "failed to send startup message");
return -1;
}
if (fSocket->Send(kRRemote_Protocol, kROOTD_PROTOCOL) != 2*sizeof(Int_t)) {
Error("Setup", "failed to send local protocol");
return -1;
}
TMessage msg(kMESS_ANY);
msg << TString(gSystem->HostName()) << fLogFilePath;
fSocket->Send(msg);
fWorkDir = gSystem->WorkingDirectory();
if (strlen(fUrl.GetFile()) > 0) {
fWorkDir = fUrl.GetFile();
char *workdir = gSystem->ExpandPathName(fWorkDir.Data());
fWorkDir = workdir;
delete [] workdir;
}
if (gSystem->AccessPathName(fWorkDir)) {
gSystem->mkdir(fWorkDir, kTRUE);
if (!gSystem->ChangeDirectory(fWorkDir)) {
SysError("Setup", "can not change to directory %s",
fWorkDir.Data());
}
} else {
if (!gSystem->ChangeDirectory(fWorkDir)) {
gSystem->Unlink(fWorkDir);
gSystem->mkdir(fWorkDir, kTRUE);
if (!gSystem->ChangeDirectory(fWorkDir)) {
SysError("Setup", "can not change to directory %s",
fWorkDir.Data());
}
}
}
#if 0 // G.Ganis May 11, 2007
if (fSocket->SetOption(kProcessGroup, (-1)*gSystem->GetPid()) != 0)
SysWarning("Setup", "failed to enable SIGURG generation on incoming OOB");
#endif
if (fSocket->SetOption(kNoDelay, 1) != 0) {}
if (fSocket->SetOption(kKeepAlive, 1) != 0) {}
gSystem->AddSignalHandler(new TASSigPipeHandler(this));
return 0;
}
TApplicationServer::~TApplicationServer()
{
fSentCanvases->SetOwner(kFALSE);
SafeDelete(fSentCanvases);
SafeDelete(fSocket);
close(fLogFileDes);
}
void TApplicationServer::GetOptions(Int_t *argc, char **argv)
{
if (*argc < 4) {
Fatal("GetOptions", "must be started with 4 arguments");
gSystem->Exit(1);
}
fProtocol = TString(argv[1]).Atoi();
fUrl.SetUrl(argv[2]);
gDebug = 0;
TString argdbg(argv[3]);
if (argdbg.BeginsWith("-d=")) {
argdbg.ReplaceAll("-d=","");
gDebug = argdbg.Atoi();
}
}
void TApplicationServer::Run(Bool_t retrn)
{
if (fIsValid) {
TApplication::Run(retrn);
} else {
Error("Run", "invalid instance: cannot Run()");
gSystem->Exit(1);
}
}
void TApplicationServer::HandleSocketInput()
{
TMessage *mess;
char str[2048];
Int_t what;
if (fSocket->Recv(mess) <= 0) {
Error("HandleSocketInput", "retrieving message from input socket");
Terminate(0);
return;
}
what = mess->What();
if (gDebug > 0)
Info("HandleSocketInput", "got message of type %d", what);
switch (what) {
case kMESS_CINT:
{ TASLogHandlerGuard hg(fLogFile, fSocket, "", fRealTimeLog);
mess->ReadString(str, sizeof(str));
if (gDebug > 1)
Info("HandleSocketInput:kMESS_CINT", "processing: %s...", str);
ProcessLine(str);
}
SendCanvases();
SendLogFile();
break;
case kMESS_STRING:
mess->ReadString(str, sizeof(str));
break;
case kMESS_OBJECT:
mess->ReadObject(mess->GetClass());
break;
case kMESS_ANY:
{
Int_t type;
(*mess) >> type;
switch (type) {
case kRRT_Reset:
mess->ReadString(str, sizeof(str));
Reset(str);
break;
case kRRT_CheckFile:
HandleCheckFile(mess);
break;
case kRRT_File:
mess->ReadString(str, sizeof(str));
{ char name[2048], i1[20], i2[40];
sscanf(str, "%2047s %19s %39s", name, i1, i2);
Int_t bin = atoi(i1);
Long_t size = atol(i2);
ReceiveFile(name, bin ? kTRUE : kFALSE, size);
}
break;
case kRRT_Terminate:
Int_t status;
(*mess) >> status;
Terminate(status);
break;
default:
break;
}
}
SendLogFile();
break;
default:
Warning("HandleSocketInput","message type unknown (%d)", what);
SendLogFile();
break;
}
delete mess;
}
void TApplicationServer::HandleUrgentData()
{
char oob_byte;
Int_t n, nch, wasted = 0;
const Int_t kBufSize = 1024;
char waste[kBufSize];
TASLogHandlerGuard hg(fLogFile, fSocket, "", fRealTimeLog);
Info("HandleUrgentData", "handling oob...");
while ((n = fSocket->RecvRaw(&oob_byte, 1, kOob)) < 0) {
if (n == -2) {
fSocket->GetOption(kBytesToRead, nch);
if (nch == 0) {
gSystem->Sleep(1000);
continue;
}
if (nch > kBufSize) nch = kBufSize;
n = fSocket->RecvRaw(waste, nch);
if (n <= 0) {
Error("HandleUrgentData", "error receiving waste");
break;
}
wasted = 1;
} else {
Error("HandleUrgentData", "error receiving OOB (n = %d)",n);
return;
}
}
Info("HandleUrgentData", "got OOB byte: %d\n", oob_byte);
switch (oob_byte) {
case kRRI_Hard:
Info("HandleUrgentData", "*** Hard Interrupt");
while (1) {
Int_t atmark;
fSocket->GetOption(kAtMark, atmark);
if (atmark) {
n = fSocket->SendRaw(&oob_byte, 1, kOob);
if (n <= 0)
Error("HandleUrgentData", "error sending OOB");
break;
}
fSocket->GetOption(kBytesToRead, nch);
if (nch == 0) {
gSystem->Sleep(1000);
continue;
}
if (nch > kBufSize) nch = kBufSize;
n = fSocket->RecvRaw(waste, nch);
if (n <= 0) {
Error("HandleUrgentData", "error receiving waste (2)");
break;
}
}
SendLogFile();
break;
case kRRI_Soft:
Info("HandleUrgentData", "Soft Interrupt");
if (wasted) {
Error("HandleUrgentData", "soft interrupt flushed stream");
break;
}
Interrupt();
SendLogFile();
break;
case kRRI_Shutdown:
Info("HandleUrgentData", "Shutdown Interrupt");
Terminate(0);
break;
default:
Error("HandleUrgentData", "unexpected OOB byte");
break;
}
}
void TApplicationServer::HandleSigPipe()
{
TASLogHandlerGuard hg(fLogFile, fSocket, "", fRealTimeLog);
Info("HandleSigPipe", "client died");
Terminate(0);
}
void TApplicationServer::Reset(const char *dir)
{
gDirectory->cd(dir);
gROOT->Reset();
if (gDirectory != gROOT) {
gDirectory->Delete();
}
}
Int_t TApplicationServer::ReceiveFile(const char *file, Bool_t bin, Long64_t size)
{
if (size <= 0) return 0;
Int_t fd = open(file, O_CREAT | O_TRUNC | O_WRONLY, 0600);
if (fd < 0) {
SysError("ReceiveFile", "error opening file %s", file);
return -1;
}
const Int_t kMAXBUF = 16384;
char buf[kMAXBUF], cpy[kMAXBUF];
Int_t left, r;
Long64_t filesize = 0;
while (filesize < size) {
left = Int_t(size - filesize);
if (left > kMAXBUF)
left = kMAXBUF;
r = fSocket->RecvRaw(&buf, left);
if (r > 0) {
char *p = buf;
filesize += r;
while (r) {
Int_t w;
if (!bin) {
Int_t k = 0, i = 0, j = 0;
char *q;
while (i < r) {
if (p[i] == '\r') {
i++;
k++;
}
cpy[j++] = buf[i++];
}
q = cpy;
r -= k;
w = write(fd, q, r);
} else {
w = write(fd, p, r);
}
if (w < 0) {
SysError("ReceiveFile", "error writing to file %s", file);
close(fd);
return -1;
}
r -= w;
p += w;
}
} else if (r < 0) {
Error("ReceiveFile", "error during receiving file %s", file);
close(fd);
return -1;
}
}
close(fd);
chmod(file, 0644);
return 0;
}
void TApplicationServer::SendLogFile(Int_t status, Int_t start, Int_t end)
{
fflush(stdout);
off_t ltot=0, lnow=0;
Int_t left = -1;
Bool_t adhoc = kFALSE;
if (fLogFileDes > -1) {
ltot = lseek(fileno(stdout), (off_t) 0, SEEK_END);
lnow = lseek(fLogFileDes, (off_t) 0, SEEK_CUR);
if (lnow == -1) {
SysError("SendLogFile", "lseek failed");
lnow = 0;
}
if (start > -1) {
lseek(fLogFileDes, (off_t) start, SEEK_SET);
if (end <= start || end > ltot)
end = ltot;
left = (Int_t)(end - start);
if (end < ltot)
left++;
adhoc = kTRUE;
} else {
left = (Int_t)(ltot - lnow);
}
}
TMessage m(kMESS_ANY);
if (left > 0) {
m << (Int_t)kRRT_LogFile << left;
fSocket->Send(m);
const Int_t kMAXBUF = 32768;
char buf[kMAXBUF];
Int_t wanted = (left > kMAXBUF) ? kMAXBUF : left;
Int_t len;
do {
while ((len = read(fLogFileDes, buf, wanted)) < 0 &&
TSystem::GetErrno() == EINTR)
TSystem::ResetErrno();
if (len < 0) {
SysError("SendLogFile", "error reading log file");
break;
}
if (end == ltot && len == wanted)
buf[len-1] = '\n';
if (fSocket->SendRaw(buf, len) < 0) {
SysError("SendLogFile", "error sending log file");
break;
}
left -= len;
wanted = (left > kMAXBUF) ? kMAXBUF : left;
} while (len > 0 && left > 0);
}
if (adhoc)
lseek(fLogFileDes, lnow, SEEK_SET);
m.Reset();
m << (Int_t)kRRT_LogDone << status;
fSocket->Send(m);
}
Int_t TApplicationServer::SendCanvases()
{
Int_t nc = 0;
TMessage mess(kMESS_OBJECT);
TIter next(gROOT->GetListOfCanvases());
TObject *o = 0;
while ((o = next())) {
if (!fSentCanvases)
fSentCanvases = new TList;
Bool_t sentalready = kFALSE;
TObjLink *lnk = fSentCanvases->FirstLink();
while (lnk) {
TObject *sc = lnk->GetObject();
lnk = lnk->Next();
if ((sc->TestBit(kNotDeleted)) && sc == o)
sentalready = kTRUE;
}
if (!sentalready) {
if (gDebug > 0)
Info("SendCanvases","new canvas found: %p", o);
mess.Reset(kMESS_OBJECT);
mess.WriteObject(o);
fSocket->Send(mess);
nc++;
fSentCanvases->Add(o);
}
}
return nc;
}
Int_t TApplicationServer::BrowseDirectory(const char *dirname)
{
Int_t nc = 0;
TMessage mess(kMESS_OBJECT);
if (!fWorkingDir || !dirname || !*dirname) {
if (!fWorkingDir)
fWorkingDir = new TRemoteObject(fWorkDir, fWorkDir, "TSystemDirectory");
fWorkingDir->Browse();
mess.Reset(kMESS_OBJECT);
mess.WriteObject(fWorkingDir);
fSocket->Send(mess);
nc++;
}
else if (fWorkingDir) {
TRemoteObject dir(dirname, dirname, "TSystemDirectory");
TList *list = dir.Browse();
mess.Reset(kMESS_OBJECT);
mess.WriteObject(list);
fSocket->Send(mess);
nc++;
}
return nc;
}
Int_t TApplicationServer::BrowseFile(const char *fname)
{
Int_t nc = 0;
TList *list = new TList;
TMessage mess(kMESS_OBJECT);
if (!fname || !*fname) {
TIter next(gROOT->GetListOfFiles());
TNamed *fh = 0;
TRemoteObject *robj;
while ((fh = (TNamed *)next())) {
robj = new TRemoteObject(fh->GetName(), fh->GetTitle(), "TFile");
list->Add(robj);
}
if (list->GetEntries() > 0) {
mess.Reset(kMESS_OBJECT);
mess.WriteObject(list);
fSocket->Send(mess);
nc++;
}
}
else {
TDirectory *fh = (TDirectory *)gROOT->GetListOfFiles()->FindObject(fname);
if (fh) {
fh->cd();
TRemoteObject dir(fh->GetName(), fh->GetTitle(), "TFile");
TList *keylist = (TList *)gROOT->ProcessLine(Form("((TFile *)0x%lx)->GetListOfKeys();", (ULong_t)fh));
TIter nextk(keylist);
TNamed *key = 0;
TRemoteObject *robj;
while ((key = (TNamed *)nextk())) {
robj = new TRemoteObject(key->GetName(), key->GetTitle(), "TKey");
const char *classname = (const char *)gROOT->ProcessLine(Form("((TKey *)0x%lx)->GetClassName();", (ULong_t)key));
robj->SetKeyClassName(classname);
Bool_t isFolder = (Bool_t)gROOT->ProcessLine(Form("((TKey *)0x%lx)->IsFolder();", (ULong_t)key));
robj->SetFolder(isFolder);
robj->SetRemoteAddress((Long_t) key);
list->Add(robj);
}
if (list->GetEntries() > 0) {
mess.Reset(kMESS_OBJECT);
mess.WriteObject(list);
fSocket->Send(mess);
nc++;
}
}
}
return nc;
}
Int_t TApplicationServer::BrowseKey(const char *keyname)
{
Int_t nc = 0;
TMessage mess(kMESS_OBJECT);
TNamed *obj = (TNamed *)gROOT->ProcessLine(Form("gFile->GetKey(\"%s\")->ReadObj();", keyname));
if (obj) {
mess.Reset(kMESS_OBJECT);
mess.WriteObject(obj);
fSocket->Send(mess);
nc++;
}
return nc;
}
void TApplicationServer::Terminate(Int_t status)
{
if (fLogFile) {
fclose(fLogFile);
if (gDebug <= 0)
gSystem->Unlink(fLogFilePath);
TString cleanup = fLogFilePath;
cleanup.ReplaceAll(".log", ".cleanup");
gSystem->Unlink(cleanup);
}
TIter next(gSystem->GetListOfFileHandlers());
TObject *fh = 0;
while ((fh = next())) {
TASInputHandler *ih = dynamic_cast<TASInputHandler *>(fh);
if (ih)
gSystem->RemoveFileHandler(ih);
}
gSystem->Exit(status);
}
void TApplicationServer::HandleCheckFile(TMessage *mess)
{
TString filenam;
TMD5 md5;
TMessage m(kMESS_ANY);
(*mess) >> filenam >> md5;
TMD5 *md5local = TMD5::FileChecksum(filenam);
if (md5local && md5 == (*md5local)) {
m << (Int_t) kRRT_CheckFile << (Bool_t) kTRUE;
fSocket->Send(m);
if (gDebug > 0)
Info("HandleCheckFile", "up-to-date version of %s available", filenam.Data());
} else {
m << (Int_t) kRRT_CheckFile << (Bool_t) kFALSE;
fSocket->Send(m);
if (gDebug > 0)
Info("HandleCheckFile", "file %s needs to be uploaded", filenam.Data());
}
delete md5local;
}
void TApplicationServer::ErrorHandler(Int_t level, Bool_t abort, const char *location,
const char *msg)
{
if (gErrorIgnoreLevel == kUnset) {
gErrorIgnoreLevel = 0;
if (gEnv) {
TString slevel = gEnv->GetValue("Root.ErrorIgnoreLevel", "Print");
if (!slevel.CompareTo("Print", TString::kIgnoreCase))
gErrorIgnoreLevel = kPrint;
else if (!slevel.CompareTo("Info", TString::kIgnoreCase))
gErrorIgnoreLevel = kInfo;
else if (!slevel.CompareTo("Warning", TString::kIgnoreCase))
gErrorIgnoreLevel = kWarning;
else if (!slevel.CompareTo("Error", TString::kIgnoreCase))
gErrorIgnoreLevel = kError;
else if (!slevel.CompareTo("Break", TString::kIgnoreCase))
gErrorIgnoreLevel = kBreak;
else if (!slevel.CompareTo("SysError", TString::kIgnoreCase))
gErrorIgnoreLevel = kSysError;
else if (!slevel.CompareTo("Fatal", TString::kIgnoreCase))
gErrorIgnoreLevel = kFatal;
}
}
if (level < gErrorIgnoreLevel)
return;
static TString syslogService;
if (syslogService.IsNull()) {
syslogService = "server";
gSystem->Openlog(syslogService, kLogPid | kLogCons, kLogLocal5);
}
const char *type = 0;
ELogLevel loglevel = kLogInfo;
if (level >= kPrint) {
loglevel = kLogInfo;
type = "Print";
}
if (level >= kInfo) {
loglevel = kLogInfo;
type = "Info";
}
if (level >= kWarning) {
loglevel = kLogWarning;
type = "Warning";
}
if (level >= kError) {
loglevel = kLogErr;
type = "Error";
}
if (level >= kBreak) {
loglevel = kLogErr;
type = "*** Break ***";
}
if (level >= kSysError) {
loglevel = kLogErr;
type = "SysError";
}
if (level >= kFatal) {
loglevel = kLogErr;
type = "Fatal";
}
TString node = "server";
TString buf;
if (!location || !location[0] ||
(level >= kPrint && level < kInfo) ||
(level >= kBreak && level < kSysError)) {
fprintf(stderr, "%s on %s: %s\n", type, node.Data(), msg);
buf.Form("%s:%s:%s", node.Data(), type, msg);
} else {
fprintf(stderr, "%s in <%s> on %s: %s\n", type, location, node.Data(), msg);
buf.Form("%s:%s:<%s>:%s", node.Data(), type, location, msg);
}
fflush(stderr);
gSystem->Syslog(loglevel, buf);
if (abort) {
fprintf(stderr, "aborting\n");
fflush(stderr);
gSystem->StackTrace();
gSystem->Abort();
}
}
Long_t TApplicationServer::ProcessLine(const char *line, Bool_t, Int_t *)
{
if (!line || !*line) return 0;
if (!strncmp(line, ".L", 2) || !strncmp(line, ".U", 2) ||
!strncmp(line, ".X", 2) || !strncmp(line, ".x", 2)) {
TString aclicMode;
TString arguments;
TString io;
TString fname = gSystem->SplitAclicMode(line+3, aclicMode, arguments, io);
char *imp = gSystem->Which(TROOT::GetMacroPath(), fname, kReadPermission);
if (!imp) {
if (gSystem->AccessPathName(gSystem->WorkingDirectory(), kWritePermission)) {
Error("ProcessLine","no write permission in %s", gSystem->WorkingDirectory());
return 0;
}
if (gDebug > 0)
Info("ProcessLine", "macro %s not found in path %s: asking the client",
fname.Data(), TROOT::GetMacroPath());
TMessage m(kMESS_ANY);
m << (Int_t) kRRT_SendFile << TString(gSystem->BaseName(fname));
fSocket->Send(m);
Int_t type;
Bool_t filefollows = kTRUE;
while (filefollows) {
TMessage *rm = 0;
if (fSocket->Recv(rm) <= 0) {
Error("ProcessLine","ask-file: received empty message from client");
return 0;
}
if (rm->What() != kMESS_ANY) {
Error("ProcessLine","ask-file: wrong message received (what: %d)", rm->What());
return 0;
}
(*rm) >> type;
if (type != kRRT_SendFile) {
Error("ProcessLine","ask-file: wrong sub-type received (type: %d)", type);
return 0;
}
(*rm) >> filefollows;
if (filefollows) {
if (fSocket->Recv(rm) <= 0) {
Error("ProcessLine","file: received empty message from client");
return 0;
}
if (rm->What() != kMESS_ANY) {
Error("ProcessLine","file: wrong message received (what: %d)", rm->What());
return 0;
}
(*rm) >> type;
if (type != kRRT_File) {
Error("ProcessLine","file: wrong sub-type received (type: %d)", type);
return 0;
}
char str[2048];
rm->ReadString(str, sizeof(str));
char name[2048], i1[20], i2[40];
sscanf(str, "%2047s %19s %39s", name, i1, i2);
Int_t bin = atoi(i1);
Long_t size = atol(i2);
ReceiveFile(name, bin ? kTRUE : kFALSE, size);
}
}
}
delete [] imp;
}
return TApplication::ProcessLine(line);
}
void TApplicationServer::ExecLogon()
{
if (NoLogOpt()) return;
TString name = ".rootlogon.C";
TString sname = "system";
sname += name;
#ifdef ROOTETCDIR
char *s = gSystem->ConcatFileName(ROOTETCDIR, sname);
#else
TString etc = gRootDir;
#ifdef WIN32
etc += "\\etc";
#else
etc += "/etc";
#endif
char *s = gSystem->ConcatFileName(etc, sname);
#endif
if (!gSystem->AccessPathName(s, kReadPermission)) {
ProcessFile(s);
}
delete [] s;
s = gSystem->ConcatFileName(gSystem->HomeDirectory(), name);
if (!gSystem->AccessPathName(s, kReadPermission)) {
ProcessFile(s);
}
delete [] s;
if (strcmp(gSystem->HomeDirectory(), gSystem->WorkingDirectory())) {
if (!gSystem->AccessPathName(name, kReadPermission))
ProcessFile(name);
}
const char *logon = gEnv->GetValue("Rint.Logon", (char*)0);
if (logon) {
char *mac = gSystem->Which(TROOT::GetMacroPath(), logon, kReadPermission);
if (mac)
ProcessFile(logon);
delete [] mac;
}
}
TApplicationServer.cxx:10 TApplicationServer.cxx:11 TApplicationServer.cxx:12 TApplicationServer.cxx:13 TApplicationServer.cxx:14 TApplicationServer.cxx:15 TApplicationServer.cxx:16 TApplicationServer.cxx:17 TApplicationServer.cxx:18 TApplicationServer.cxx:19 TApplicationServer.cxx:20 TApplicationServer.cxx:21 TApplicationServer.cxx:22 TApplicationServer.cxx:23 TApplicationServer.cxx:24 TApplicationServer.cxx:25 TApplicationServer.cxx:26 TApplicationServer.cxx:27 TApplicationServer.cxx:28 TApplicationServer.cxx:29 TApplicationServer.cxx:30 TApplicationServer.cxx:31 TApplicationServer.cxx:32 TApplicationServer.cxx:33 TApplicationServer.cxx:34 TApplicationServer.cxx:35 TApplicationServer.cxx:36 TApplicationServer.cxx:37 TApplicationServer.cxx:38 TApplicationServer.cxx:39 TApplicationServer.cxx:40 TApplicationServer.cxx:41 TApplicationServer.cxx:42 TApplicationServer.cxx:43 TApplicationServer.cxx:44 TApplicationServer.cxx:45 TApplicationServer.cxx:46 TApplicationServer.cxx:47 TApplicationServer.cxx:48 TApplicationServer.cxx:49 TApplicationServer.cxx:50 TApplicationServer.cxx:51 TApplicationServer.cxx:52 TApplicationServer.cxx:53 TApplicationServer.cxx:54 TApplicationServer.cxx:55 TApplicationServer.cxx:56 TApplicationServer.cxx:57 TApplicationServer.cxx:58 TApplicationServer.cxx:59 TApplicationServer.cxx:60 TApplicationServer.cxx:61 TApplicationServer.cxx:62 TApplicationServer.cxx:63 TApplicationServer.cxx:64 TApplicationServer.cxx:65 TApplicationServer.cxx:66 TApplicationServer.cxx:67 TApplicationServer.cxx:68 TApplicationServer.cxx:69 TApplicationServer.cxx:70 TApplicationServer.cxx:71 TApplicationServer.cxx:72 TApplicationServer.cxx:73 TApplicationServer.cxx:74 TApplicationServer.cxx:75 TApplicationServer.cxx:76 TApplicationServer.cxx:77 TApplicationServer.cxx:78 TApplicationServer.cxx:79 TApplicationServer.cxx:80 TApplicationServer.cxx:81 TApplicationServer.cxx:82 TApplicationServer.cxx:83 TApplicationServer.cxx:84 TApplicationServer.cxx:85 TApplicationServer.cxx:86 TApplicationServer.cxx:87 TApplicationServer.cxx:88 TApplicationServer.cxx:89 TApplicationServer.cxx:90 TApplicationServer.cxx:91 TApplicationServer.cxx:92 TApplicationServer.cxx:93 TApplicationServer.cxx:94 TApplicationServer.cxx:95 TApplicationServer.cxx:96 TApplicationServer.cxx:97 TApplicationServer.cxx:98 TApplicationServer.cxx:99 TApplicationServer.cxx:100 TApplicationServer.cxx:101 TApplicationServer.cxx:102 TApplicationServer.cxx:103 TApplicationServer.cxx:104 TApplicationServer.cxx:105 TApplicationServer.cxx:106 TApplicationServer.cxx:107 TApplicationServer.cxx:108 TApplicationServer.cxx:109 TApplicationServer.cxx:110 TApplicationServer.cxx:111 TApplicationServer.cxx:112 TApplicationServer.cxx:113 TApplicationServer.cxx:114 TApplicationServer.cxx:115 TApplicationServer.cxx:116 TApplicationServer.cxx:117 TApplicationServer.cxx:118 TApplicationServer.cxx:119 TApplicationServer.cxx:120 TApplicationServer.cxx:121 TApplicationServer.cxx:122 TApplicationServer.cxx:123 TApplicationServer.cxx:124 TApplicationServer.cxx:125 TApplicationServer.cxx:126 TApplicationServer.cxx:127 TApplicationServer.cxx:128 TApplicationServer.cxx:129 TApplicationServer.cxx:130 TApplicationServer.cxx:131 TApplicationServer.cxx:132 TApplicationServer.cxx:133 TApplicationServer.cxx:134 TApplicationServer.cxx:135 TApplicationServer.cxx:136 TApplicationServer.cxx:137 TApplicationServer.cxx:138 TApplicationServer.cxx:139 TApplicationServer.cxx:140 TApplicationServer.cxx:141 TApplicationServer.cxx:142 TApplicationServer.cxx:143 TApplicationServer.cxx:144 TApplicationServer.cxx:145 TApplicationServer.cxx:146 TApplicationServer.cxx:147 TApplicationServer.cxx:148 TApplicationServer.cxx:149 TApplicationServer.cxx:150 TApplicationServer.cxx:151 TApplicationServer.cxx:152 TApplicationServer.cxx:153 TApplicationServer.cxx:154 TApplicationServer.cxx:155 TApplicationServer.cxx:156 TApplicationServer.cxx:157 TApplicationServer.cxx:158 TApplicationServer.cxx:159 TApplicationServer.cxx:160 TApplicationServer.cxx:161 TApplicationServer.cxx:162 TApplicationServer.cxx:163 TApplicationServer.cxx:164 TApplicationServer.cxx:165 TApplicationServer.cxx:166 TApplicationServer.cxx:167 TApplicationServer.cxx:168 TApplicationServer.cxx:169 TApplicationServer.cxx:170 TApplicationServer.cxx:171 TApplicationServer.cxx:172 TApplicationServer.cxx:173 TApplicationServer.cxx:174 TApplicationServer.cxx:175 TApplicationServer.cxx:176 TApplicationServer.cxx:177 TApplicationServer.cxx:178 TApplicationServer.cxx:179 TApplicationServer.cxx:180 TApplicationServer.cxx:181 TApplicationServer.cxx:182 TApplicationServer.cxx:183 TApplicationServer.cxx:184 TApplicationServer.cxx:185 TApplicationServer.cxx:186 TApplicationServer.cxx:187 TApplicationServer.cxx:188 TApplicationServer.cxx:189 TApplicationServer.cxx:190 TApplicationServer.cxx:191 TApplicationServer.cxx:192 TApplicationServer.cxx:193 TApplicationServer.cxx:194 TApplicationServer.cxx:195 TApplicationServer.cxx:196 TApplicationServer.cxx:197 TApplicationServer.cxx:198 TApplicationServer.cxx:199 TApplicationServer.cxx:200 TApplicationServer.cxx:201 TApplicationServer.cxx:202 TApplicationServer.cxx:203 TApplicationServer.cxx:204 TApplicationServer.cxx:205 TApplicationServer.cxx:206 TApplicationServer.cxx:207 TApplicationServer.cxx:208 TApplicationServer.cxx:209 TApplicationServer.cxx:210 TApplicationServer.cxx:211 TApplicationServer.cxx:212 TApplicationServer.cxx:213 TApplicationServer.cxx:214 TApplicationServer.cxx:215 TApplicationServer.cxx:216 TApplicationServer.cxx:217 TApplicationServer.cxx:218 TApplicationServer.cxx:219 TApplicationServer.cxx:220 TApplicationServer.cxx:221 TApplicationServer.cxx:222 TApplicationServer.cxx:223 TApplicationServer.cxx:224 TApplicationServer.cxx:225 TApplicationServer.cxx:226 TApplicationServer.cxx:227 TApplicationServer.cxx:228 TApplicationServer.cxx:229 TApplicationServer.cxx:230 TApplicationServer.cxx:231 TApplicationServer.cxx:232 TApplicationServer.cxx:233 TApplicationServer.cxx:234 TApplicationServer.cxx:235 TApplicationServer.cxx:236 TApplicationServer.cxx:237 TApplicationServer.cxx:238 TApplicationServer.cxx:239 TApplicationServer.cxx:240 TApplicationServer.cxx:241 TApplicationServer.cxx:242 TApplicationServer.cxx:243 TApplicationServer.cxx:244 TApplicationServer.cxx:245 TApplicationServer.cxx:246 TApplicationServer.cxx:247 TApplicationServer.cxx:248 TApplicationServer.cxx:249 TApplicationServer.cxx:250 TApplicationServer.cxx:251 TApplicationServer.cxx:252 TApplicationServer.cxx:253 TApplicationServer.cxx:254 TApplicationServer.cxx:255 TApplicationServer.cxx:256 TApplicationServer.cxx:257 TApplicationServer.cxx:258 TApplicationServer.cxx:259 TApplicationServer.cxx:260 TApplicationServer.cxx:261 TApplicationServer.cxx:262 TApplicationServer.cxx:263 TApplicationServer.cxx:264 TApplicationServer.cxx:265 TApplicationServer.cxx:266 TApplicationServer.cxx:267 TApplicationServer.cxx:268 TApplicationServer.cxx:269 TApplicationServer.cxx:270 TApplicationServer.cxx:271 TApplicationServer.cxx:272 TApplicationServer.cxx:273 TApplicationServer.cxx:274 TApplicationServer.cxx:275 TApplicationServer.cxx:276 TApplicationServer.cxx:277 TApplicationServer.cxx:278 TApplicationServer.cxx:279 TApplicationServer.cxx:280 TApplicationServer.cxx:281 TApplicationServer.cxx:282 TApplicationServer.cxx:283 TApplicationServer.cxx:284 TApplicationServer.cxx:285 TApplicationServer.cxx:286 TApplicationServer.cxx:287 TApplicationServer.cxx:288 TApplicationServer.cxx:289 TApplicationServer.cxx:290 TApplicationServer.cxx:291 TApplicationServer.cxx:292 TApplicationServer.cxx:293 TApplicationServer.cxx:294 TApplicationServer.cxx:295 TApplicationServer.cxx:296 TApplicationServer.cxx:297 TApplicationServer.cxx:298 TApplicationServer.cxx:299 TApplicationServer.cxx:300 TApplicationServer.cxx:301 TApplicationServer.cxx:302 TApplicationServer.cxx:303 TApplicationServer.cxx:304 TApplicationServer.cxx:305 TApplicationServer.cxx:306 TApplicationServer.cxx:307 TApplicationServer.cxx:308 TApplicationServer.cxx:309 TApplicationServer.cxx:310 TApplicationServer.cxx:311 TApplicationServer.cxx:312 TApplicationServer.cxx:313 TApplicationServer.cxx:314 TApplicationServer.cxx:315 TApplicationServer.cxx:316 TApplicationServer.cxx:317 TApplicationServer.cxx:318 TApplicationServer.cxx:319 TApplicationServer.cxx:320 TApplicationServer.cxx:321 TApplicationServer.cxx:322 TApplicationServer.cxx:323 TApplicationServer.cxx:324 TApplicationServer.cxx:325 TApplicationServer.cxx:326 TApplicationServer.cxx:327 TApplicationServer.cxx:328 TApplicationServer.cxx:329 TApplicationServer.cxx:330 TApplicationServer.cxx:331 TApplicationServer.cxx:332 TApplicationServer.cxx:333 TApplicationServer.cxx:334 TApplicationServer.cxx:335 TApplicationServer.cxx:336 TApplicationServer.cxx:337 TApplicationServer.cxx:338 TApplicationServer.cxx:339 TApplicationServer.cxx:340 TApplicationServer.cxx:341 TApplicationServer.cxx:342 TApplicationServer.cxx:343 TApplicationServer.cxx:344 TApplicationServer.cxx:345 TApplicationServer.cxx:346 TApplicationServer.cxx:347 TApplicationServer.cxx:348 TApplicationServer.cxx:349 TApplicationServer.cxx:350 TApplicationServer.cxx:351 TApplicationServer.cxx:352 TApplicationServer.cxx:353 TApplicationServer.cxx:354 TApplicationServer.cxx:355 TApplicationServer.cxx:356 TApplicationServer.cxx:357 TApplicationServer.cxx:358 TApplicationServer.cxx:359 TApplicationServer.cxx:360 TApplicationServer.cxx:361 TApplicationServer.cxx:362 TApplicationServer.cxx:363 TApplicationServer.cxx:364 TApplicationServer.cxx:365 TApplicationServer.cxx:366 TApplicationServer.cxx:367 TApplicationServer.cxx:368 TApplicationServer.cxx:369 TApplicationServer.cxx:370 TApplicationServer.cxx:371 TApplicationServer.cxx:372 TApplicationServer.cxx:373 TApplicationServer.cxx:374 TApplicationServer.cxx:375 TApplicationServer.cxx:376 TApplicationServer.cxx:377 TApplicationServer.cxx:378 TApplicationServer.cxx:379 TApplicationServer.cxx:380 TApplicationServer.cxx:381 TApplicationServer.cxx:382 TApplicationServer.cxx:383 TApplicationServer.cxx:384 TApplicationServer.cxx:385 TApplicationServer.cxx:386 TApplicationServer.cxx:387 TApplicationServer.cxx:388 TApplicationServer.cxx:389 TApplicationServer.cxx:390 TApplicationServer.cxx:391 TApplicationServer.cxx:392 TApplicationServer.cxx:393 TApplicationServer.cxx:394 TApplicationServer.cxx:395 TApplicationServer.cxx:396 TApplicationServer.cxx:397 TApplicationServer.cxx:398 TApplicationServer.cxx:399 TApplicationServer.cxx:400 TApplicationServer.cxx:401 TApplicationServer.cxx:402 TApplicationServer.cxx:403 TApplicationServer.cxx:404 TApplicationServer.cxx:405 TApplicationServer.cxx:406 TApplicationServer.cxx:407 TApplicationServer.cxx:408 TApplicationServer.cxx:409 TApplicationServer.cxx:410 TApplicationServer.cxx:411 TApplicationServer.cxx:412 TApplicationServer.cxx:413 TApplicationServer.cxx:414 TApplicationServer.cxx:415 TApplicationServer.cxx:416 TApplicationServer.cxx:417 TApplicationServer.cxx:418 TApplicationServer.cxx:419 TApplicationServer.cxx:420 TApplicationServer.cxx:421 TApplicationServer.cxx:422 TApplicationServer.cxx:423 TApplicationServer.cxx:424 TApplicationServer.cxx:425 TApplicationServer.cxx:426 TApplicationServer.cxx:427 TApplicationServer.cxx:428 TApplicationServer.cxx:429 TApplicationServer.cxx:430 TApplicationServer.cxx:431 TApplicationServer.cxx:432 TApplicationServer.cxx:433 TApplicationServer.cxx:434 TApplicationServer.cxx:435 TApplicationServer.cxx:436 TApplicationServer.cxx:437 TApplicationServer.cxx:438 TApplicationServer.cxx:439 TApplicationServer.cxx:440 TApplicationServer.cxx:441 TApplicationServer.cxx:442 TApplicationServer.cxx:443 TApplicationServer.cxx:444 TApplicationServer.cxx:445 TApplicationServer.cxx:446 TApplicationServer.cxx:447 TApplicationServer.cxx:448 TApplicationServer.cxx:449 TApplicationServer.cxx:450 TApplicationServer.cxx:451 TApplicationServer.cxx:452 TApplicationServer.cxx:453 TApplicationServer.cxx:454 TApplicationServer.cxx:455 TApplicationServer.cxx:456 TApplicationServer.cxx:457 TApplicationServer.cxx:458 TApplicationServer.cxx:459 TApplicationServer.cxx:460 TApplicationServer.cxx:461 TApplicationServer.cxx:462 TApplicationServer.cxx:463 TApplicationServer.cxx:464 TApplicationServer.cxx:465 TApplicationServer.cxx:466 TApplicationServer.cxx:467 TApplicationServer.cxx:468 TApplicationServer.cxx:469 TApplicationServer.cxx:470 TApplicationServer.cxx:471 TApplicationServer.cxx:472 TApplicationServer.cxx:473 TApplicationServer.cxx:474 TApplicationServer.cxx:475 TApplicationServer.cxx:476 TApplicationServer.cxx:477 TApplicationServer.cxx:478 TApplicationServer.cxx:479 TApplicationServer.cxx:480 TApplicationServer.cxx:481 TApplicationServer.cxx:482 TApplicationServer.cxx:483 TApplicationServer.cxx:484 TApplicationServer.cxx:485 TApplicationServer.cxx:486 TApplicationServer.cxx:487 TApplicationServer.cxx:488 TApplicationServer.cxx:489 TApplicationServer.cxx:490 TApplicationServer.cxx:491 TApplicationServer.cxx:492 TApplicationServer.cxx:493 TApplicationServer.cxx:494 TApplicationServer.cxx:495 TApplicationServer.cxx:496 TApplicationServer.cxx:497 TApplicationServer.cxx:498 TApplicationServer.cxx:499 TApplicationServer.cxx:500 TApplicationServer.cxx:501 TApplicationServer.cxx:502 TApplicationServer.cxx:503 TApplicationServer.cxx:504 TApplicationServer.cxx:505 TApplicationServer.cxx:506 TApplicationServer.cxx:507 TApplicationServer.cxx:508 TApplicationServer.cxx:509 TApplicationServer.cxx:510 TApplicationServer.cxx:511 TApplicationServer.cxx:512 TApplicationServer.cxx:513 TApplicationServer.cxx:514 TApplicationServer.cxx:515 TApplicationServer.cxx:516 TApplicationServer.cxx:517 TApplicationServer.cxx:518 TApplicationServer.cxx:519 TApplicationServer.cxx:520 TApplicationServer.cxx:521 TApplicationServer.cxx:522 TApplicationServer.cxx:523 TApplicationServer.cxx:524 TApplicationServer.cxx:525 TApplicationServer.cxx:526 TApplicationServer.cxx:527 TApplicationServer.cxx:528 TApplicationServer.cxx:529 TApplicationServer.cxx:530 TApplicationServer.cxx:531 TApplicationServer.cxx:532 TApplicationServer.cxx:533 TApplicationServer.cxx:534 TApplicationServer.cxx:535 TApplicationServer.cxx:536 TApplicationServer.cxx:537 TApplicationServer.cxx:538 TApplicationServer.cxx:539 TApplicationServer.cxx:540 TApplicationServer.cxx:541 TApplicationServer.cxx:542 TApplicationServer.cxx:543 TApplicationServer.cxx:544 TApplicationServer.cxx:545 TApplicationServer.cxx:546 TApplicationServer.cxx:547 TApplicationServer.cxx:548 TApplicationServer.cxx:549 TApplicationServer.cxx:550 TApplicationServer.cxx:551 TApplicationServer.cxx:552 TApplicationServer.cxx:553 TApplicationServer.cxx:554 TApplicationServer.cxx:555 TApplicationServer.cxx:556 TApplicationServer.cxx:557 TApplicationServer.cxx:558 TApplicationServer.cxx:559 TApplicationServer.cxx:560 TApplicationServer.cxx:561 TApplicationServer.cxx:562 TApplicationServer.cxx:563 TApplicationServer.cxx:564 TApplicationServer.cxx:565 TApplicationServer.cxx:566 TApplicationServer.cxx:567 TApplicationServer.cxx:568 TApplicationServer.cxx:569 TApplicationServer.cxx:570 TApplicationServer.cxx:571 TApplicationServer.cxx:572 TApplicationServer.cxx:573 TApplicationServer.cxx:574 TApplicationServer.cxx:575 TApplicationServer.cxx:576 TApplicationServer.cxx:577 TApplicationServer.cxx:578 TApplicationServer.cxx:579 TApplicationServer.cxx:580 TApplicationServer.cxx:581 TApplicationServer.cxx:582 TApplicationServer.cxx:583 TApplicationServer.cxx:584 TApplicationServer.cxx:585 TApplicationServer.cxx:586 TApplicationServer.cxx:587 TApplicationServer.cxx:588 TApplicationServer.cxx:589 TApplicationServer.cxx:590 TApplicationServer.cxx:591 TApplicationServer.cxx:592 TApplicationServer.cxx:593 TApplicationServer.cxx:594 TApplicationServer.cxx:595 TApplicationServer.cxx:596 TApplicationServer.cxx:597 TApplicationServer.cxx:598 TApplicationServer.cxx:599 TApplicationServer.cxx:600 TApplicationServer.cxx:601 TApplicationServer.cxx:602 TApplicationServer.cxx:603 TApplicationServer.cxx:604 TApplicationServer.cxx:605 TApplicationServer.cxx:606 TApplicationServer.cxx:607 TApplicationServer.cxx:608 TApplicationServer.cxx:609 TApplicationServer.cxx:610 TApplicationServer.cxx:611 TApplicationServer.cxx:612 TApplicationServer.cxx:613 TApplicationServer.cxx:614 TApplicationServer.cxx:615 TApplicationServer.cxx:616 TApplicationServer.cxx:617 TApplicationServer.cxx:618 TApplicationServer.cxx:619 TApplicationServer.cxx:620 TApplicationServer.cxx:621 TApplicationServer.cxx:622 TApplicationServer.cxx:623 TApplicationServer.cxx:624 TApplicationServer.cxx:625 TApplicationServer.cxx:626 TApplicationServer.cxx:627 TApplicationServer.cxx:628 TApplicationServer.cxx:629 TApplicationServer.cxx:630 TApplicationServer.cxx:631 TApplicationServer.cxx:632 TApplicationServer.cxx:633 TApplicationServer.cxx:634 TApplicationServer.cxx:635 TApplicationServer.cxx:636 TApplicationServer.cxx:637 TApplicationServer.cxx:638 TApplicationServer.cxx:639 TApplicationServer.cxx:640 TApplicationServer.cxx:641 TApplicationServer.cxx:642 TApplicationServer.cxx:643 TApplicationServer.cxx:644 TApplicationServer.cxx:645 TApplicationServer.cxx:646 TApplicationServer.cxx:647 TApplicationServer.cxx:648 TApplicationServer.cxx:649 TApplicationServer.cxx:650 TApplicationServer.cxx:651 TApplicationServer.cxx:652 TApplicationServer.cxx:653 TApplicationServer.cxx:654 TApplicationServer.cxx:655 TApplicationServer.cxx:656 TApplicationServer.cxx:657 TApplicationServer.cxx:658 TApplicationServer.cxx:659 TApplicationServer.cxx:660 TApplicationServer.cxx:661 TApplicationServer.cxx:662 TApplicationServer.cxx:663 TApplicationServer.cxx:664 TApplicationServer.cxx:665 TApplicationServer.cxx:666 TApplicationServer.cxx:667 TApplicationServer.cxx:668 TApplicationServer.cxx:669 TApplicationServer.cxx:670 TApplicationServer.cxx:671 TApplicationServer.cxx:672 TApplicationServer.cxx:673 TApplicationServer.cxx:674 TApplicationServer.cxx:675 TApplicationServer.cxx:676 TApplicationServer.cxx:677 TApplicationServer.cxx:678 TApplicationServer.cxx:679 TApplicationServer.cxx:680 TApplicationServer.cxx:681 TApplicationServer.cxx:682 TApplicationServer.cxx:683 TApplicationServer.cxx:684 TApplicationServer.cxx:685 TApplicationServer.cxx:686 TApplicationServer.cxx:687 TApplicationServer.cxx:688 TApplicationServer.cxx:689 TApplicationServer.cxx:690 TApplicationServer.cxx:691 TApplicationServer.cxx:692 TApplicationServer.cxx:693 TApplicationServer.cxx:694 TApplicationServer.cxx:695 TApplicationServer.cxx:696 TApplicationServer.cxx:697 TApplicationServer.cxx:698 TApplicationServer.cxx:699 TApplicationServer.cxx:700 TApplicationServer.cxx:701 TApplicationServer.cxx:702 TApplicationServer.cxx:703 TApplicationServer.cxx:704 TApplicationServer.cxx:705 TApplicationServer.cxx:706 TApplicationServer.cxx:707 TApplicationServer.cxx:708 TApplicationServer.cxx:709 TApplicationServer.cxx:710 TApplicationServer.cxx:711 TApplicationServer.cxx:712 TApplicationServer.cxx:713 TApplicationServer.cxx:714 TApplicationServer.cxx:715 TApplicationServer.cxx:716 TApplicationServer.cxx:717 TApplicationServer.cxx:718 TApplicationServer.cxx:719 TApplicationServer.cxx:720 TApplicationServer.cxx:721 TApplicationServer.cxx:722 TApplicationServer.cxx:723 TApplicationServer.cxx:724 TApplicationServer.cxx:725 TApplicationServer.cxx:726 TApplicationServer.cxx:727 TApplicationServer.cxx:728 TApplicationServer.cxx:729 TApplicationServer.cxx:730 TApplicationServer.cxx:731 TApplicationServer.cxx:732 TApplicationServer.cxx:733 TApplicationServer.cxx:734 TApplicationServer.cxx:735 TApplicationServer.cxx:736 TApplicationServer.cxx:737 TApplicationServer.cxx:738 TApplicationServer.cxx:739 TApplicationServer.cxx:740 TApplicationServer.cxx:741 TApplicationServer.cxx:742 TApplicationServer.cxx:743 TApplicationServer.cxx:744 TApplicationServer.cxx:745 TApplicationServer.cxx:746 TApplicationServer.cxx:747 TApplicationServer.cxx:748 TApplicationServer.cxx:749 TApplicationServer.cxx:750 TApplicationServer.cxx:751 TApplicationServer.cxx:752 TApplicationServer.cxx:753 TApplicationServer.cxx:754 TApplicationServer.cxx:755 TApplicationServer.cxx:756 TApplicationServer.cxx:757 TApplicationServer.cxx:758 TApplicationServer.cxx:759 TApplicationServer.cxx:760 TApplicationServer.cxx:761 TApplicationServer.cxx:762 TApplicationServer.cxx:763 TApplicationServer.cxx:764 TApplicationServer.cxx:765 TApplicationServer.cxx:766 TApplicationServer.cxx:767 TApplicationServer.cxx:768 TApplicationServer.cxx:769 TApplicationServer.cxx:770 TApplicationServer.cxx:771 TApplicationServer.cxx:772 TApplicationServer.cxx:773 TApplicationServer.cxx:774 TApplicationServer.cxx:775 TApplicationServer.cxx:776 TApplicationServer.cxx:777 TApplicationServer.cxx:778 TApplicationServer.cxx:779 TApplicationServer.cxx:780 TApplicationServer.cxx:781 TApplicationServer.cxx:782 TApplicationServer.cxx:783 TApplicationServer.cxx:784 TApplicationServer.cxx:785 TApplicationServer.cxx:786 TApplicationServer.cxx:787 TApplicationServer.cxx:788 TApplicationServer.cxx:789 TApplicationServer.cxx:790 TApplicationServer.cxx:791 TApplicationServer.cxx:792 TApplicationServer.cxx:793 TApplicationServer.cxx:794 TApplicationServer.cxx:795 TApplicationServer.cxx:796 TApplicationServer.cxx:797 TApplicationServer.cxx:798 TApplicationServer.cxx:799 TApplicationServer.cxx:800 TApplicationServer.cxx:801 TApplicationServer.cxx:802 TApplicationServer.cxx:803 TApplicationServer.cxx:804 TApplicationServer.cxx:805 TApplicationServer.cxx:806 TApplicationServer.cxx:807 TApplicationServer.cxx:808 TApplicationServer.cxx:809 TApplicationServer.cxx:810 TApplicationServer.cxx:811 TApplicationServer.cxx:812 TApplicationServer.cxx:813 TApplicationServer.cxx:814 TApplicationServer.cxx:815 TApplicationServer.cxx:816 TApplicationServer.cxx:817 TApplicationServer.cxx:818 TApplicationServer.cxx:819 TApplicationServer.cxx:820 TApplicationServer.cxx:821 TApplicationServer.cxx:822 TApplicationServer.cxx:823 TApplicationServer.cxx:824 TApplicationServer.cxx:825 TApplicationServer.cxx:826 TApplicationServer.cxx:827 TApplicationServer.cxx:828 TApplicationServer.cxx:829 TApplicationServer.cxx:830 TApplicationServer.cxx:831 TApplicationServer.cxx:832 TApplicationServer.cxx:833 TApplicationServer.cxx:834 TApplicationServer.cxx:835 TApplicationServer.cxx:836 TApplicationServer.cxx:837 TApplicationServer.cxx:838 TApplicationServer.cxx:839 TApplicationServer.cxx:840 TApplicationServer.cxx:841 TApplicationServer.cxx:842 TApplicationServer.cxx:843 TApplicationServer.cxx:844 TApplicationServer.cxx:845 TApplicationServer.cxx:846 TApplicationServer.cxx:847 TApplicationServer.cxx:848 TApplicationServer.cxx:849 TApplicationServer.cxx:850 TApplicationServer.cxx:851 TApplicationServer.cxx:852 TApplicationServer.cxx:853 TApplicationServer.cxx:854 TApplicationServer.cxx:855 TApplicationServer.cxx:856 TApplicationServer.cxx:857 TApplicationServer.cxx:858 TApplicationServer.cxx:859 TApplicationServer.cxx:860 TApplicationServer.cxx:861 TApplicationServer.cxx:862 TApplicationServer.cxx:863 TApplicationServer.cxx:864 TApplicationServer.cxx:865 TApplicationServer.cxx:866 TApplicationServer.cxx:867 TApplicationServer.cxx:868 TApplicationServer.cxx:869 TApplicationServer.cxx:870 TApplicationServer.cxx:871 TApplicationServer.cxx:872 TApplicationServer.cxx:873 TApplicationServer.cxx:874 TApplicationServer.cxx:875 TApplicationServer.cxx:876 TApplicationServer.cxx:877 TApplicationServer.cxx:878 TApplicationServer.cxx:879 TApplicationServer.cxx:880 TApplicationServer.cxx:881 TApplicationServer.cxx:882 TApplicationServer.cxx:883 TApplicationServer.cxx:884 TApplicationServer.cxx:885 TApplicationServer.cxx:886 TApplicationServer.cxx:887 TApplicationServer.cxx:888 TApplicationServer.cxx:889 TApplicationServer.cxx:890 TApplicationServer.cxx:891 TApplicationServer.cxx:892 TApplicationServer.cxx:893 TApplicationServer.cxx:894 TApplicationServer.cxx:895 TApplicationServer.cxx:896 TApplicationServer.cxx:897 TApplicationServer.cxx:898 TApplicationServer.cxx:899 TApplicationServer.cxx:900 TApplicationServer.cxx:901 TApplicationServer.cxx:902 TApplicationServer.cxx:903 TApplicationServer.cxx:904 TApplicationServer.cxx:905 TApplicationServer.cxx:906 TApplicationServer.cxx:907 TApplicationServer.cxx:908 TApplicationServer.cxx:909 TApplicationServer.cxx:910 TApplicationServer.cxx:911 TApplicationServer.cxx:912 TApplicationServer.cxx:913 TApplicationServer.cxx:914 TApplicationServer.cxx:915 TApplicationServer.cxx:916 TApplicationServer.cxx:917 TApplicationServer.cxx:918 TApplicationServer.cxx:919 TApplicationServer.cxx:920 TApplicationServer.cxx:921 TApplicationServer.cxx:922 TApplicationServer.cxx:923 TApplicationServer.cxx:924 TApplicationServer.cxx:925 TApplicationServer.cxx:926 TApplicationServer.cxx:927 TApplicationServer.cxx:928 TApplicationServer.cxx:929 TApplicationServer.cxx:930 TApplicationServer.cxx:931 TApplicationServer.cxx:932 TApplicationServer.cxx:933 TApplicationServer.cxx:934 TApplicationServer.cxx:935 TApplicationServer.cxx:936 TApplicationServer.cxx:937 TApplicationServer.cxx:938 TApplicationServer.cxx:939 TApplicationServer.cxx:940 TApplicationServer.cxx:941 TApplicationServer.cxx:942 TApplicationServer.cxx:943 TApplicationServer.cxx:944 TApplicationServer.cxx:945 TApplicationServer.cxx:946 TApplicationServer.cxx:947 TApplicationServer.cxx:948 TApplicationServer.cxx:949 TApplicationServer.cxx:950 TApplicationServer.cxx:951 TApplicationServer.cxx:952 TApplicationServer.cxx:953 TApplicationServer.cxx:954 TApplicationServer.cxx:955 TApplicationServer.cxx:956 TApplicationServer.cxx:957 TApplicationServer.cxx:958 TApplicationServer.cxx:959 TApplicationServer.cxx:960 TApplicationServer.cxx:961 TApplicationServer.cxx:962 TApplicationServer.cxx:963 TApplicationServer.cxx:964 TApplicationServer.cxx:965 TApplicationServer.cxx:966 TApplicationServer.cxx:967 TApplicationServer.cxx:968 TApplicationServer.cxx:969 TApplicationServer.cxx:970 TApplicationServer.cxx:971 TApplicationServer.cxx:972 TApplicationServer.cxx:973 TApplicationServer.cxx:974 TApplicationServer.cxx:975 TApplicationServer.cxx:976 TApplicationServer.cxx:977 TApplicationServer.cxx:978 TApplicationServer.cxx:979 TApplicationServer.cxx:980 TApplicationServer.cxx:981 TApplicationServer.cxx:982 TApplicationServer.cxx:983 TApplicationServer.cxx:984 TApplicationServer.cxx:985 TApplicationServer.cxx:986 TApplicationServer.cxx:987 TApplicationServer.cxx:988 TApplicationServer.cxx:989 TApplicationServer.cxx:990 TApplicationServer.cxx:991 TApplicationServer.cxx:992 TApplicationServer.cxx:993 TApplicationServer.cxx:994 TApplicationServer.cxx:995 TApplicationServer.cxx:996 TApplicationServer.cxx:997 TApplicationServer.cxx:998 TApplicationServer.cxx:999 TApplicationServer.cxx:1000 TApplicationServer.cxx:1001 TApplicationServer.cxx:1002 TApplicationServer.cxx:1003 TApplicationServer.cxx:1004 TApplicationServer.cxx:1005 TApplicationServer.cxx:1006 TApplicationServer.cxx:1007 TApplicationServer.cxx:1008 TApplicationServer.cxx:1009 TApplicationServer.cxx:1010 TApplicationServer.cxx:1011 TApplicationServer.cxx:1012 TApplicationServer.cxx:1013 TApplicationServer.cxx:1014 TApplicationServer.cxx:1015 TApplicationServer.cxx:1016 TApplicationServer.cxx:1017 TApplicationServer.cxx:1018 TApplicationServer.cxx:1019 TApplicationServer.cxx:1020 TApplicationServer.cxx:1021 TApplicationServer.cxx:1022 TApplicationServer.cxx:1023 TApplicationServer.cxx:1024 TApplicationServer.cxx:1025 TApplicationServer.cxx:1026 TApplicationServer.cxx:1027 TApplicationServer.cxx:1028 TApplicationServer.cxx:1029 TApplicationServer.cxx:1030 TApplicationServer.cxx:1031 TApplicationServer.cxx:1032 TApplicationServer.cxx:1033 TApplicationServer.cxx:1034 TApplicationServer.cxx:1035 TApplicationServer.cxx:1036 TApplicationServer.cxx:1037 TApplicationServer.cxx:1038 TApplicationServer.cxx:1039 TApplicationServer.cxx:1040 TApplicationServer.cxx:1041 TApplicationServer.cxx:1042 TApplicationServer.cxx:1043 TApplicationServer.cxx:1044 TApplicationServer.cxx:1045 TApplicationServer.cxx:1046 TApplicationServer.cxx:1047 TApplicationServer.cxx:1048 TApplicationServer.cxx:1049 TApplicationServer.cxx:1050 TApplicationServer.cxx:1051 TApplicationServer.cxx:1052 TApplicationServer.cxx:1053 TApplicationServer.cxx:1054 TApplicationServer.cxx:1055 TApplicationServer.cxx:1056 TApplicationServer.cxx:1057 TApplicationServer.cxx:1058 TApplicationServer.cxx:1059 TApplicationServer.cxx:1060 TApplicationServer.cxx:1061 TApplicationServer.cxx:1062 TApplicationServer.cxx:1063 TApplicationServer.cxx:1064 TApplicationServer.cxx:1065 TApplicationServer.cxx:1066 TApplicationServer.cxx:1067 TApplicationServer.cxx:1068 TApplicationServer.cxx:1069 TApplicationServer.cxx:1070 TApplicationServer.cxx:1071 TApplicationServer.cxx:1072 TApplicationServer.cxx:1073 TApplicationServer.cxx:1074 TApplicationServer.cxx:1075 TApplicationServer.cxx:1076 TApplicationServer.cxx:1077 TApplicationServer.cxx:1078 TApplicationServer.cxx:1079 TApplicationServer.cxx:1080 TApplicationServer.cxx:1081 TApplicationServer.cxx:1082 TApplicationServer.cxx:1083 TApplicationServer.cxx:1084 TApplicationServer.cxx:1085 TApplicationServer.cxx:1086 TApplicationServer.cxx:1087 TApplicationServer.cxx:1088 TApplicationServer.cxx:1089 TApplicationServer.cxx:1090 TApplicationServer.cxx:1091 TApplicationServer.cxx:1092 TApplicationServer.cxx:1093 TApplicationServer.cxx:1094 TApplicationServer.cxx:1095 TApplicationServer.cxx:1096 TApplicationServer.cxx:1097 TApplicationServer.cxx:1098 TApplicationServer.cxx:1099 TApplicationServer.cxx:1100 TApplicationServer.cxx:1101 TApplicationServer.cxx:1102 TApplicationServer.cxx:1103 TApplicationServer.cxx:1104 TApplicationServer.cxx:1105 TApplicationServer.cxx:1106 TApplicationServer.cxx:1107 TApplicationServer.cxx:1108 TApplicationServer.cxx:1109 TApplicationServer.cxx:1110 TApplicationServer.cxx:1111 TApplicationServer.cxx:1112 TApplicationServer.cxx:1113 TApplicationServer.cxx:1114 TApplicationServer.cxx:1115 TApplicationServer.cxx:1116 TApplicationServer.cxx:1117 TApplicationServer.cxx:1118 TApplicationServer.cxx:1119 TApplicationServer.cxx:1120 TApplicationServer.cxx:1121 TApplicationServer.cxx:1122 TApplicationServer.cxx:1123 TApplicationServer.cxx:1124 TApplicationServer.cxx:1125 TApplicationServer.cxx:1126 TApplicationServer.cxx:1127 TApplicationServer.cxx:1128 TApplicationServer.cxx:1129 TApplicationServer.cxx:1130 TApplicationServer.cxx:1131 TApplicationServer.cxx:1132 TApplicationServer.cxx:1133 TApplicationServer.cxx:1134 TApplicationServer.cxx:1135 TApplicationServer.cxx:1136 TApplicationServer.cxx:1137 TApplicationServer.cxx:1138 TApplicationServer.cxx:1139 TApplicationServer.cxx:1140 TApplicationServer.cxx:1141 TApplicationServer.cxx:1142 TApplicationServer.cxx:1143 TApplicationServer.cxx:1144 TApplicationServer.cxx:1145 TApplicationServer.cxx:1146 TApplicationServer.cxx:1147 TApplicationServer.cxx:1148 TApplicationServer.cxx:1149 TApplicationServer.cxx:1150 TApplicationServer.cxx:1151 TApplicationServer.cxx:1152 TApplicationServer.cxx:1153 TApplicationServer.cxx:1154 TApplicationServer.cxx:1155 TApplicationServer.cxx:1156 TApplicationServer.cxx:1157 TApplicationServer.cxx:1158 TApplicationServer.cxx:1159 TApplicationServer.cxx:1160 TApplicationServer.cxx:1161 TApplicationServer.cxx:1162 TApplicationServer.cxx:1163 TApplicationServer.cxx:1164 TApplicationServer.cxx:1165 TApplicationServer.cxx:1166 TApplicationServer.cxx:1167 TApplicationServer.cxx:1168 TApplicationServer.cxx:1169 TApplicationServer.cxx:1170 TApplicationServer.cxx:1171 TApplicationServer.cxx:1172 TApplicationServer.cxx:1173 TApplicationServer.cxx:1174 TApplicationServer.cxx:1175 TApplicationServer.cxx:1176 TApplicationServer.cxx:1177 TApplicationServer.cxx:1178 TApplicationServer.cxx:1179 TApplicationServer.cxx:1180 TApplicationServer.cxx:1181 TApplicationServer.cxx:1182 TApplicationServer.cxx:1183 TApplicationServer.cxx:1184 TApplicationServer.cxx:1185 TApplicationServer.cxx:1186 TApplicationServer.cxx:1187 TApplicationServer.cxx:1188 TApplicationServer.cxx:1189 TApplicationServer.cxx:1190 TApplicationServer.cxx:1191 TApplicationServer.cxx:1192 TApplicationServer.cxx:1193 TApplicationServer.cxx:1194 TApplicationServer.cxx:1195 TApplicationServer.cxx:1196 TApplicationServer.cxx:1197 TApplicationServer.cxx:1198 TApplicationServer.cxx:1199 TApplicationServer.cxx:1200 TApplicationServer.cxx:1201 TApplicationServer.cxx:1202 TApplicationServer.cxx:1203 TApplicationServer.cxx:1204 TApplicationServer.cxx:1205 TApplicationServer.cxx:1206 TApplicationServer.cxx:1207 TApplicationServer.cxx:1208 TApplicationServer.cxx:1209 TApplicationServer.cxx:1210 TApplicationServer.cxx:1211 TApplicationServer.cxx:1212 TApplicationServer.cxx:1213 TApplicationServer.cxx:1214 TApplicationServer.cxx:1215 TApplicationServer.cxx:1216 TApplicationServer.cxx:1217 TApplicationServer.cxx:1218 TApplicationServer.cxx:1219 TApplicationServer.cxx:1220 TApplicationServer.cxx:1221 TApplicationServer.cxx:1222 TApplicationServer.cxx:1223 TApplicationServer.cxx:1224 TApplicationServer.cxx:1225 TApplicationServer.cxx:1226 TApplicationServer.cxx:1227 TApplicationServer.cxx:1228 TApplicationServer.cxx:1229 TApplicationServer.cxx:1230 TApplicationServer.cxx:1231 TApplicationServer.cxx:1232 TApplicationServer.cxx:1233 TApplicationServer.cxx:1234 TApplicationServer.cxx:1235 TApplicationServer.cxx:1236 TApplicationServer.cxx:1237 TApplicationServer.cxx:1238 TApplicationServer.cxx:1239 TApplicationServer.cxx:1240 TApplicationServer.cxx:1241 TApplicationServer.cxx:1242 TApplicationServer.cxx:1243 TApplicationServer.cxx:1244 TApplicationServer.cxx:1245 TApplicationServer.cxx:1246 TApplicationServer.cxx:1247 TApplicationServer.cxx:1248 TApplicationServer.cxx:1249 TApplicationServer.cxx:1250 TApplicationServer.cxx:1251 TApplicationServer.cxx:1252 TApplicationServer.cxx:1253 TApplicationServer.cxx:1254 TApplicationServer.cxx:1255 TApplicationServer.cxx:1256 TApplicationServer.cxx:1257 TApplicationServer.cxx:1258 TApplicationServer.cxx:1259 TApplicationServer.cxx:1260 TApplicationServer.cxx:1261 TApplicationServer.cxx:1262 TApplicationServer.cxx:1263 TApplicationServer.cxx:1264 TApplicationServer.cxx:1265 TApplicationServer.cxx:1266 TApplicationServer.cxx:1267 TApplicationServer.cxx:1268 TApplicationServer.cxx:1269 TApplicationServer.cxx:1270 TApplicationServer.cxx:1271 TApplicationServer.cxx:1272 TApplicationServer.cxx:1273 TApplicationServer.cxx:1274 TApplicationServer.cxx:1275 TApplicationServer.cxx:1276 TApplicationServer.cxx:1277 TApplicationServer.cxx:1278 TApplicationServer.cxx:1279 TApplicationServer.cxx:1280 TApplicationServer.cxx:1281 TApplicationServer.cxx:1282 TApplicationServer.cxx:1283 TApplicationServer.cxx:1284 TApplicationServer.cxx:1285 TApplicationServer.cxx:1286 TApplicationServer.cxx:1287 TApplicationServer.cxx:1288 TApplicationServer.cxx:1289 TApplicationServer.cxx:1290 TApplicationServer.cxx:1291 TApplicationServer.cxx:1292 TApplicationServer.cxx:1293 TApplicationServer.cxx:1294 TApplicationServer.cxx:1295 TApplicationServer.cxx:1296 TApplicationServer.cxx:1297 TApplicationServer.cxx:1298 TApplicationServer.cxx:1299 TApplicationServer.cxx:1300 TApplicationServer.cxx:1301 TApplicationServer.cxx:1302 TApplicationServer.cxx:1303 TApplicationServer.cxx:1304 TApplicationServer.cxx:1305 TApplicationServer.cxx:1306 TApplicationServer.cxx:1307 TApplicationServer.cxx:1308 TApplicationServer.cxx:1309