#include "TProofMonSenderML.h"
#include "TDSet.h"
#include "TFileInfo.h"
#include "THashList.h"
#include "TList.h"
#include "TParameter.h"
#include "TPluginManager.h"
#include "TProofDebug.h"
#include "TROOT.h"
#include "TSystem.h"
#include "TVirtualMonitoring.h"
TProofMonSenderML::TProofMonSenderML(const char *serv, const char *tag,
const char *id, const char *subid,
const char *opt)
: TProofMonSender(serv, "ProofMonSenderML")
{
fWriter = 0;
TPluginHandler *h = 0;
if ((h = gROOT->GetPluginManager()->FindHandler("TVirtualMonitoringWriter", "MonaLisa"))) {
if (h->LoadPlugin() != -1) {
fWriter = (TVirtualMonitoringWriter *) h->ExecPlugin(5, serv, tag, id, subid, opt);
if (fWriter && fWriter->IsZombie()) SafeDelete(fWriter);
}
}
if (fWriter) ResetBit(TObject::kInvalidObject);
SetBit(TProofMonSender::kSendSummary);
ResetBit(TProofMonSender::kSendDataSetInfo);
ResetBit(TProofMonSender::kSendFileInfo);
fSummaryVrs = 1;
fDataSetInfoVrs = 1;
fFileInfoVrs = 1;
PDB(kMonitoring,1) if (fWriter) fWriter->Verbose(kTRUE);
}
TProofMonSenderML::~TProofMonSenderML()
{
SafeDelete(fWriter);
}
Int_t TProofMonSenderML::SendSummary(TList *recs, const char *id)
{
if (!IsValid()) {
Error("SendSummary", "invalid instance: do nothing!");
return -1;
}
if (!TestBit(TProofMonSender::kSendSummary)) return 0;
if (!recs || (recs && recs->GetSize() <= 0)) {
Error("SendSummary", "records list undefined or empty!");
return -1;
}
TList *xrecs = recs;
PDB(kMonitoring,1) Info("SendSummary", "preparing (qid: '%s')", id);
TObject *qtag = recs->FindObject("querytag");
if (qtag) recs->Remove(qtag);
TObject *dsn = 0;
if (fSummaryVrs == 0) {
if ((dsn = recs->FindObject("dataset"))) recs->Remove(dsn);
} else if (fSummaryVrs == 0) {
xrecs = new TList;
xrecs->SetOwner(kFALSE);
TIter nxr(recs);
TObject *o = 0;
while ((o = nxr())) {
if (!strcmp(o->GetName(), "vmemmxw")) break;
xrecs->Add(o);
}
}
PDB(kMonitoring,1)
Info("SendSummary", "sending (%d entries)", xrecs->GetSize());
Bool_t rc = fWriter->SendParameters(xrecs, id);
if (fSummaryVrs > 1 && dsn && xrecs == recs) {
TObject *num = recs->FindObject("numfiles");
if (num)
recs->AddBefore(num, dsn);
else
recs->Add(dsn);
}
if (qtag) {
TObject *wrks = recs->FindObject("workers");
if (wrks)
recs->AddAfter(wrks, qtag);
else
recs->Add(qtag);
}
if (xrecs != recs) SafeDelete(xrecs);
return (rc ? 0 : -1);
}
Int_t TProofMonSenderML::SendDataSetInfo(TDSet *dset, TList *missing,
const char *begin, const char *qid)
{
if (!IsValid()) {
Error("SendDataSetInfo", "invalid instance: do nothing!");
return -1;
}
if (!TestBit(TProofMonSender::kSendDataSetInfo)) return 0;
if (!qid || (qid && strlen(qid) <= 0)) {
Error("SendDataSetInfo", "query id (tag) undefined!");
return -1;
}
if (!dset) {
Error("SendDataSetInfo", "TDSet object undefined! (qid: '%s')", qid);
return -1;
}
PDB(kMonitoring,1)
Info("SendDataSetInfo", "preparing (qid: '%s')", qid);
TList plets;
TString dss(dset->GetName()), ds;
Ssiz_t from = 0;
while ((dss.Tokenize(ds, from , "[,| ]"))) {
plets.Add(new TDSetPlet(ds.Data()));
}
TDSetPlet *plet = 0;
TIter nxpl(&plets);
TObject *o = 0;
TDSetElement *e = 0, *ee = 0;
TDSet *dsete = 0;
TIter nxe(dset->GetListOfElements());
TString dse;
while ((o = nxe())) {
if ((e = dynamic_cast<TDSetElement *>(o))) {
dse = e->GetDataSet();
if (!dse.IsNull()) {
nxpl.Reset();
while ((plet = (TDSetPlet *) nxpl())) {
if (dse == plet->GetName()) {
plet->fFiles += 1;
break;
}
}
}
} else if ((dsete = dynamic_cast<TDSet *>(o))) {
PDB(kMonitoring,1)
Info("SendDataSetInfo", "dset '%s' (%d files)",
o->GetName(), dsete->GetListOfElements()->GetSize());
TIter nxee(dsete->GetListOfElements());
while ((ee = (TDSetElement *) nxee())) {
dse = ee->GetDataSet();
if (!dse.IsNull()) {
nxpl.Reset();
while ((plet = (TDSetPlet *) nxpl())) {
if (dse == plet->GetName()) {
plet->fFiles += 1;
plet->fDSet = dsete;
break;
}
}
}
}
} else {
Warning("SendDataSetInfo", "ignoring unknown element type: '%s'", o->ClassName());
}
}
if (missing) {
TFileInfo *fi = 0;
TIter nxm(missing);
TString dsfi, fn;
while ((fi = (TFileInfo *) nxm())) {
dsfi = fi->GetTitle();
if (!dsfi.IsNull() && dsfi != "TFileInfo") {
nxpl.Reset();
while ((plet = (TDSetPlet *) nxpl())) {
if (dsfi == plet->GetName()) {
fn = fi->GetCurrentUrl()->GetUrl();
if (plet->fDSet && plet->fDSet->GetListOfElements() &&
!(plet->fDSet->GetListOfElements()->FindObject(fn))) plet->fFiles += 1;
plet->fMissing += 1;
break;
}
}
}
}
}
TList values;
TNamed *nm_dsn = new TNamed("dsn", "");
values.Add(nm_dsn);
TNamed *nm_querytag = new TNamed("querytag", qid);
values.Add(nm_querytag);
TNamed *nm_begin = 0;
if (fDataSetInfoVrs > 0) {
nm_begin = new TNamed("begin", begin);
values.Add(nm_begin);
}
TParameter<Int_t> *pi_numfiles = new TParameter<Int_t>("numfiles", -1);
values.Add(pi_numfiles);
TParameter<Int_t> *pi_missfiles = new TParameter<Int_t>("missfiles", -1);
values.Add(pi_missfiles);
PDB(kMonitoring,1)
Info("SendDataSetInfo", "sending (%d entries)", plets.GetSize());
Bool_t rc = kTRUE;
TString dsnh;
nxpl.Reset();
while ((plet = (TDSetPlet *) nxpl())) {
nm_dsn->SetTitle(plet->GetName());
pi_numfiles->SetVal(plet->fFiles);
pi_missfiles->SetVal(plet->fMissing);
dsnh.Form("dataset_%x", TString(plet->GetName()).Hash());
if (!(rc = fWriter->SendParameters(&values, dsnh.Data()))) break;
}
return (rc ? 0 : -1);
}
Int_t TProofMonSenderML::SendFileInfo(TDSet *dset, TList *missing,
const char *begin, const char *qid)
{
if (!IsValid()) {
Error("SendFileInfo", "invalid instance: do nothing!");
return -1;
}
if (!TestBit(TProofMonSender::kSendFileInfo)) return 0;
if (!qid || (qid && strlen(qid) <= 0)) {
Error("SendFileInfo", "query id (tag) undefined!");
return -1;
}
if (!dset) {
Error("SendFileInfo", "TDSet object undefined! (qid: '%s')", qid);
return -1;
}
PDB(kMonitoring,1) Info("SendFileInfo", "preparing (qid: '%s')", qid);
THashList hmiss;
if (missing) {
TIter nxfm(missing);
TFileInfo *fi = 0;
while ((fi = (TFileInfo *)nxfm())) {
hmiss.Add(new TObjString(fi->GetCurrentUrl()->GetUrl()));
}
hmiss.Print();
}
TList values;
TNamed *nm_lnf = new TNamed("lnf", "");
values.Add(nm_lnf);
TNamed *nm_path = new TNamed("path", "");
values.Add(nm_path);
TNamed *nm_querytag = new TNamed("querytag", qid);
values.Add(nm_querytag);
TNamed *nm_begin = 0;
if (fFileInfoVrs > 0) {
nm_begin = new TNamed("begin", begin);
values.Add(nm_begin);
}
TParameter<Int_t> *pi_status = new TParameter<Int_t>("status", -1);
values.Add(pi_status);
PDB(kMonitoring,1)
Info("SendFileInfo", "sending (%d entries)",
dset->GetListOfElements()->GetSize());
Bool_t rc = kTRUE;
TObject *o = 0;
TDSetElement *e = 0, *ee = 0;
TDSet *dsete = 0;
TIter nxe(dset->GetListOfElements());
TString fne, fneh;
Int_t status = -1;
while ((o = nxe())) {
if ((e = dynamic_cast<TDSetElement *>(o))) {
fne = e->GetName();
status = 1;
if (hmiss.FindObject(fne)) status = 0;
nm_lnf->SetTitle(gSystem->BaseName(fne));
nm_path->SetTitle(gSystem->DirName(fne));
pi_status->SetVal(status);
fneh.Form("file_%x", TString(TUrl(fne.Data()).GetFile()).Hash());
if (!(rc = fWriter->SendParameters(&values, fneh.Data()))) break;
} else if ((dsete = dynamic_cast<TDSet *>(o))) {
PDB(kMonitoring,1)
Info("SendFileInfo", "dset '%s' (%d files)",
o->GetName(), dsete->GetListOfElements()->GetSize());
TIter nxee(dsete->GetListOfElements());
while ((ee = (TDSetElement *) nxee())) {
fne = ee->GetName();
status = 1;
if (hmiss.FindObject(fne)) status = 0;
nm_lnf->SetTitle(gSystem->BaseName(fne));
nm_path->SetTitle(gSystem->DirName(fne));
pi_status->SetVal(status);
fneh.Form("file_%x", TString(TUrl(fne.Data()).GetFile()).Hash());
if (!(rc = fWriter->SendParameters(&values, fneh.Data()))) break;
}
} else {
Warning("SendFileInfo", "ignoring unknown element type: '%s'", o->ClassName());
}
}
return (rc ? 0 : -1);
}
TProofMonSenderML.cxx:100 TProofMonSenderML.cxx:101 TProofMonSenderML.cxx:102 TProofMonSenderML.cxx:103 TProofMonSenderML.cxx:104 TProofMonSenderML.cxx:105 TProofMonSenderML.cxx:106 TProofMonSenderML.cxx:107 TProofMonSenderML.cxx:108 TProofMonSenderML.cxx:109 TProofMonSenderML.cxx:110 TProofMonSenderML.cxx:111 TProofMonSenderML.cxx:112 TProofMonSenderML.cxx:113 TProofMonSenderML.cxx:114 TProofMonSenderML.cxx:115 TProofMonSenderML.cxx:116 TProofMonSenderML.cxx:117 TProofMonSenderML.cxx:118 TProofMonSenderML.cxx:119 TProofMonSenderML.cxx:120 TProofMonSenderML.cxx:121 TProofMonSenderML.cxx:122 TProofMonSenderML.cxx:123 TProofMonSenderML.cxx:124 TProofMonSenderML.cxx:125 TProofMonSenderML.cxx:126 TProofMonSenderML.cxx:127 TProofMonSenderML.cxx:128 TProofMonSenderML.cxx:129 TProofMonSenderML.cxx:130 TProofMonSenderML.cxx:131 TProofMonSenderML.cxx:132 TProofMonSenderML.cxx:133 TProofMonSenderML.cxx:134 TProofMonSenderML.cxx:135 TProofMonSenderML.cxx:136 TProofMonSenderML.cxx:137 TProofMonSenderML.cxx:138 TProofMonSenderML.cxx:139 TProofMonSenderML.cxx:140 TProofMonSenderML.cxx:141 TProofMonSenderML.cxx:142 TProofMonSenderML.cxx:143 TProofMonSenderML.cxx:144 TProofMonSenderML.cxx:145 TProofMonSenderML.cxx:146 TProofMonSenderML.cxx:147 TProofMonSenderML.cxx:148 TProofMonSenderML.cxx:149 TProofMonSenderML.cxx:150 TProofMonSenderML.cxx:151 TProofMonSenderML.cxx:152 TProofMonSenderML.cxx:153 TProofMonSenderML.cxx:154 TProofMonSenderML.cxx:155 TProofMonSenderML.cxx:156 TProofMonSenderML.cxx:157 TProofMonSenderML.cxx:158 TProofMonSenderML.cxx:159 TProofMonSenderML.cxx:160 TProofMonSenderML.cxx:161 TProofMonSenderML.cxx:162 TProofMonSenderML.cxx:163 TProofMonSenderML.cxx:164 TProofMonSenderML.cxx:165 TProofMonSenderML.cxx:166 TProofMonSenderML.cxx:167 TProofMonSenderML.cxx:168 TProofMonSenderML.cxx:169 TProofMonSenderML.cxx:170 TProofMonSenderML.cxx:171 TProofMonSenderML.cxx:172 TProofMonSenderML.cxx:173 TProofMonSenderML.cxx:174 TProofMonSenderML.cxx:175 TProofMonSenderML.cxx:176 TProofMonSenderML.cxx:177 TProofMonSenderML.cxx:178 TProofMonSenderML.cxx:179 TProofMonSenderML.cxx:180 TProofMonSenderML.cxx:181 TProofMonSenderML.cxx:182 TProofMonSenderML.cxx:183 TProofMonSenderML.cxx:184 TProofMonSenderML.cxx:185 TProofMonSenderML.cxx:186 TProofMonSenderML.cxx:187 TProofMonSenderML.cxx:188 TProofMonSenderML.cxx:189 TProofMonSenderML.cxx:190 TProofMonSenderML.cxx:191 TProofMonSenderML.cxx:192 TProofMonSenderML.cxx:193 TProofMonSenderML.cxx:194 TProofMonSenderML.cxx:195 TProofMonSenderML.cxx:196 TProofMonSenderML.cxx:197 TProofMonSenderML.cxx:198 TProofMonSenderML.cxx:199 TProofMonSenderML.cxx:200 TProofMonSenderML.cxx:201 TProofMonSenderML.cxx:202 TProofMonSenderML.cxx:203 TProofMonSenderML.cxx:204 TProofMonSenderML.cxx:205 TProofMonSenderML.cxx:206 TProofMonSenderML.cxx:207 TProofMonSenderML.cxx:208 TProofMonSenderML.cxx:209 TProofMonSenderML.cxx:210 TProofMonSenderML.cxx:211 TProofMonSenderML.cxx:212 TProofMonSenderML.cxx:213 TProofMonSenderML.cxx:214 TProofMonSenderML.cxx:215 TProofMonSenderML.cxx:216 TProofMonSenderML.cxx:217 TProofMonSenderML.cxx:218 TProofMonSenderML.cxx:219 TProofMonSenderML.cxx:220 TProofMonSenderML.cxx:221 TProofMonSenderML.cxx:222 TProofMonSenderML.cxx:223 TProofMonSenderML.cxx:224 TProofMonSenderML.cxx:225 TProofMonSenderML.cxx:226 TProofMonSenderML.cxx:227 TProofMonSenderML.cxx:228 TProofMonSenderML.cxx:229 TProofMonSenderML.cxx:230 TProofMonSenderML.cxx:231 TProofMonSenderML.cxx:232 TProofMonSenderML.cxx:233 TProofMonSenderML.cxx:234 TProofMonSenderML.cxx:235 TProofMonSenderML.cxx:236 TProofMonSenderML.cxx:237 TProofMonSenderML.cxx:238 TProofMonSenderML.cxx:239 TProofMonSenderML.cxx:240 TProofMonSenderML.cxx:241 TProofMonSenderML.cxx:242 TProofMonSenderML.cxx:243 TProofMonSenderML.cxx:244 TProofMonSenderML.cxx:245 TProofMonSenderML.cxx:246 TProofMonSenderML.cxx:247 TProofMonSenderML.cxx:248 TProofMonSenderML.cxx:249 TProofMonSenderML.cxx:250 TProofMonSenderML.cxx:251 TProofMonSenderML.cxx:252 TProofMonSenderML.cxx:253 TProofMonSenderML.cxx:254 TProofMonSenderML.cxx:255 TProofMonSenderML.cxx:256 TProofMonSenderML.cxx:257 TProofMonSenderML.cxx:258 TProofMonSenderML.cxx:259 TProofMonSenderML.cxx:260 TProofMonSenderML.cxx:261 TProofMonSenderML.cxx:262 TProofMonSenderML.cxx:263 TProofMonSenderML.cxx:264 TProofMonSenderML.cxx:265 TProofMonSenderML.cxx:266 TProofMonSenderML.cxx:267 TProofMonSenderML.cxx:268 TProofMonSenderML.cxx:269 TProofMonSenderML.cxx:270 TProofMonSenderML.cxx:271 TProofMonSenderML.cxx:272 TProofMonSenderML.cxx:273 TProofMonSenderML.cxx:274 TProofMonSenderML.cxx:275 TProofMonSenderML.cxx:276 TProofMonSenderML.cxx:277 TProofMonSenderML.cxx:278 TProofMonSenderML.cxx:279 TProofMonSenderML.cxx:280 TProofMonSenderML.cxx:281 TProofMonSenderML.cxx:282 TProofMonSenderML.cxx:283 TProofMonSenderML.cxx:284 TProofMonSenderML.cxx:285 TProofMonSenderML.cxx:286 TProofMonSenderML.cxx:287 TProofMonSenderML.cxx:288 TProofMonSenderML.cxx:289 TProofMonSenderML.cxx:290 TProofMonSenderML.cxx:291 TProofMonSenderML.cxx:292 TProofMonSenderML.cxx:293 TProofMonSenderML.cxx:294 TProofMonSenderML.cxx:295 TProofMonSenderML.cxx:296 TProofMonSenderML.cxx:297 TProofMonSenderML.cxx:298 TProofMonSenderML.cxx:299 TProofMonSenderML.cxx:300 TProofMonSenderML.cxx:301 TProofMonSenderML.cxx:302 TProofMonSenderML.cxx:303 TProofMonSenderML.cxx:304 TProofMonSenderML.cxx:305 TProofMonSenderML.cxx:306 TProofMonSenderML.cxx:307 TProofMonSenderML.cxx:308 TProofMonSenderML.cxx:309 TProofMonSenderML.cxx:310 TProofMonSenderML.cxx:311 TProofMonSenderML.cxx:312 TProofMonSenderML.cxx:313 TProofMonSenderML.cxx:314 TProofMonSenderML.cxx:315 TProofMonSenderML.cxx:316 TProofMonSenderML.cxx:317 TProofMonSenderML.cxx:318 TProofMonSenderML.cxx:319 TProofMonSenderML.cxx:320 TProofMonSenderML.cxx:321 TProofMonSenderML.cxx:322 TProofMonSenderML.cxx:323 TProofMonSenderML.cxx:324 TProofMonSenderML.cxx:325 TProofMonSenderML.cxx:326 TProofMonSenderML.cxx:327 TProofMonSenderML.cxx:328 TProofMonSenderML.cxx:329 TProofMonSenderML.cxx:330 TProofMonSenderML.cxx:331 TProofMonSenderML.cxx:332 TProofMonSenderML.cxx:333 TProofMonSenderML.cxx:334 TProofMonSenderML.cxx:335 TProofMonSenderML.cxx:336 TProofMonSenderML.cxx:337 TProofMonSenderML.cxx:338 TProofMonSenderML.cxx:339 TProofMonSenderML.cxx:340 TProofMonSenderML.cxx:341 TProofMonSenderML.cxx:342 TProofMonSenderML.cxx:343 TProofMonSenderML.cxx:344 TProofMonSenderML.cxx:345 TProofMonSenderML.cxx:346 TProofMonSenderML.cxx:347 TProofMonSenderML.cxx:348 TProofMonSenderML.cxx:349 TProofMonSenderML.cxx:350 TProofMonSenderML.cxx:351 TProofMonSenderML.cxx:352 TProofMonSenderML.cxx:353 TProofMonSenderML.cxx:354 TProofMonSenderML.cxx:355 TProofMonSenderML.cxx:356 TProofMonSenderML.cxx:357 TProofMonSenderML.cxx:358 TProofMonSenderML.cxx:359 TProofMonSenderML.cxx:360 TProofMonSenderML.cxx:361 TProofMonSenderML.cxx:362 TProofMonSenderML.cxx:363 TProofMonSenderML.cxx:364 TProofMonSenderML.cxx:365 TProofMonSenderML.cxx:366 TProofMonSenderML.cxx:367 TProofMonSenderML.cxx:368 TProofMonSenderML.cxx:369 TProofMonSenderML.cxx:370 TProofMonSenderML.cxx:371 TProofMonSenderML.cxx:372 TProofMonSenderML.cxx:373 TProofMonSenderML.cxx:374 TProofMonSenderML.cxx:375 TProofMonSenderML.cxx:376 TProofMonSenderML.cxx:377 TProofMonSenderML.cxx:378 TProofMonSenderML.cxx:379 TProofMonSenderML.cxx:380 TProofMonSenderML.cxx:381 TProofMonSenderML.cxx:382 TProofMonSenderML.cxx:383 TProofMonSenderML.cxx:384 TProofMonSenderML.cxx:385 TProofMonSenderML.cxx:386 TProofMonSenderML.cxx:387 TProofMonSenderML.cxx:388 TProofMonSenderML.cxx:389 TProofMonSenderML.cxx:390 TProofMonSenderML.cxx:391 TProofMonSenderML.cxx:392 TProofMonSenderML.cxx:393 TProofMonSenderML.cxx:394 TProofMonSenderML.cxx:395 TProofMonSenderML.cxx:396 TProofMonSenderML.cxx:397 TProofMonSenderML.cxx:398 TProofMonSenderML.cxx:399 TProofMonSenderML.cxx:400 TProofMonSenderML.cxx:401 TProofMonSenderML.cxx:402 TProofMonSenderML.cxx:403 TProofMonSenderML.cxx:404 TProofMonSenderML.cxx:405 TProofMonSenderML.cxx:406 TProofMonSenderML.cxx:407 TProofMonSenderML.cxx:408 TProofMonSenderML.cxx:409 TProofMonSenderML.cxx:410 TProofMonSenderML.cxx:411 TProofMonSenderML.cxx:412 TProofMonSenderML.cxx:413 TProofMonSenderML.cxx:414 TProofMonSenderML.cxx:415 TProofMonSenderML.cxx:416 TProofMonSenderML.cxx:417 TProofMonSenderML.cxx:418 TProofMonSenderML.cxx:419 TProofMonSenderML.cxx:420 TProofMonSenderML.cxx:421 TProofMonSenderML.cxx:422 TProofMonSenderML.cxx:423 TProofMonSenderML.cxx:424 TProofMonSenderML.cxx:425 TProofMonSenderML.cxx:426 TProofMonSenderML.cxx:427 TProofMonSenderML.cxx:428 TProofMonSenderML.cxx:429 TProofMonSenderML.cxx:430 TProofMonSenderML.cxx:431 TProofMonSenderML.cxx:432 TProofMonSenderML.cxx:433 TProofMonSenderML.cxx:434 TProofMonSenderML.cxx:435 TProofMonSenderML.cxx:436 TProofMonSenderML.cxx:437 TProofMonSenderML.cxx:438 TProofMonSenderML.cxx:439 TProofMonSenderML.cxx:440 TProofMonSenderML.cxx:441 TProofMonSenderML.cxx:442 TProofMonSenderML.cxx:443 TProofMonSenderML.cxx:444 TProofMonSenderML.cxx:445 TProofMonSenderML.cxx:446 TProofMonSenderML.cxx:447 TProofMonSenderML.cxx:448 TProofMonSenderML.cxx:449 TProofMonSenderML.cxx:450 TProofMonSenderML.cxx:451 TProofMonSenderML.cxx:452 TProofMonSenderML.cxx:453 TProofMonSenderML.cxx:454 TProofMonSenderML.cxx:455 TProofMonSenderML.cxx:456 TProofMonSenderML.cxx:457 TProofMonSenderML.cxx:458 TProofMonSenderML.cxx:459 TProofMonSenderML.cxx:460 TProofMonSenderML.cxx:461 TProofMonSenderML.cxx:462 TProofMonSenderML.cxx:463 TProofMonSenderML.cxx:464 TProofMonSenderML.cxx:465 TProofMonSenderML.cxx:466 TProofMonSenderML.cxx:467 TProofMonSenderML.cxx:468 TProofMonSenderML.cxx:469 TProofMonSenderML.cxx:470 TProofMonSenderML.cxx:471 TProofMonSenderML.cxx:472 TProofMonSenderML.cxx:473 TProofMonSenderML.cxx:474 TProofMonSenderML.cxx:475 TProofMonSenderML.cxx:476 TProofMonSenderML.cxx:477 TProofMonSenderML.cxx:478 TProofMonSenderML.cxx:479 TProofMonSenderML.cxx:480 TProofMonSenderML.cxx:481 TProofMonSenderML.cxx:482 TProofMonSenderML.cxx:483 TProofMonSenderML.cxx:484 TProofMonSenderML.cxx:485 TProofMonSenderML.cxx:486 TProofMonSenderML.cxx:487 TProofMonSenderML.cxx:488 TProofMonSenderML.cxx:489 TProofMonSenderML.cxx:490 TProofMonSenderML.cxx:491 TProofMonSenderML.cxx:492 TProofMonSenderML.cxx:493 TProofMonSenderML.cxx:494 TProofMonSenderML.cxx:495 TProofMonSenderML.cxx:496 TProofMonSenderML.cxx:497 TProofMonSenderML.cxx:498