33 TStatus::TStatus() : fIter(&fMsgs), fExitStatus(-1),
34 fVirtMemMax(-1), fResMemMax(-1),
35 fVirtMaxMst(-1), fResMaxMst(-1)
37 SetName(
"PROOF_Status");
38 fMsgs.SetOwner(kTRUE);
39 fInfoMsgs.SetOwner(kTRUE);
40 ResetBit(TStatus::kNotOk);
46 void TStatus::Add(
const char *mesg)
48 fMsgs.Add(
new TObjString(mesg));
49 SetBit(TStatus::kNotOk);
56 void TStatus::AddInfo(
const char *mesg)
58 fInfoMsgs.Add(
new TObjString(mesg));
64 Int_t TStatus::Merge(TCollection *li)
68 Info("Merge", "start: max virtual memory: %.2f MB \tmax resident memory: %.2f MB ",
69 GetVirtMemMax()/1024., GetResMemMax()/1024.);
70 while (TObject *obj = stats()) {
71 TStatus *s =
dynamic_cast<TStatus*
>(obj);
76 TIter nxem(&(s->fMsgs));
77 while ((os = (TObjString *) nxem())) {
82 TIter nxwm(&(s->fInfoMsgs));
83 while ((os = (TObjString *) nxwm())) {
84 if (!fInfoMsgs.FindObject(os->GetName()))
85 AddInfo(os->GetName());
88 SetMemValues(s->GetVirtMemMax(), s->GetResMemMax());
90 SetMemValues(s->GetVirtMemMax(kTRUE), s->GetResMemMax(kTRUE), kTRUE);
92 Info("Merge", "during: max virtual memory: %.2f MB \t"
93 "max resident memory: %.2f MB ",
94 GetVirtMemMax()/1024., GetResMemMax()/1024.);
95 if (GetVirtMemMax(kTRUE) > 0) {
97 Info("Merge", "during: max master virtual memory: %.2f MB \t"
98 "max master resident memory: %.2f MB ",
99 GetVirtMemMax(kTRUE)/1024., GetResMemMax(kTRUE)/1024.);
103 return fMsgs.GetSize();
109 void TStatus::Print(Option_t * )
const
111 Printf(
"OBJ: %s\t%s\t%s", IsA()->GetName(), GetName(), (IsOk() ?
"OK" :
"ERROR"));
115 if (fMsgs.GetSize() > 0) {
116 Printf(
"\n Errors:");
118 while ((os = (TObjString *) nxem()))
119 Printf(
"\t%s",os->GetName());
124 if (fInfoMsgs.GetSize() > 0) {
126 TIter nxem(&fInfoMsgs);
127 while ((os = (TObjString *) nxem()))
128 Printf(
"\t%s",os->GetName());
132 Printf(
" Max worker virtual memory: %.2f MB \tMax worker resident memory: %.2f MB ",
133 GetVirtMemMax()/1024., GetResMemMax()/1024.);
134 Printf(
" Max master virtual memory: %.2f MB \tMax master resident memory: %.2f MB ",
135 GetVirtMemMax(kTRUE)/1024., GetResMemMax(kTRUE)/1024.);
141 void TStatus::Reset()
149 const char *TStatus::NextMesg()
151 TObjString *os = (TObjString *) fIter();
152 if (os)
return os->GetName();
159 void TStatus::SetMemValues(Long_t vmem, Long_t rmem, Bool_t master)
162 if (vmem > 0. && (fVirtMaxMst < 0. || vmem > fVirtMaxMst)) fVirtMaxMst = vmem;
163 if (rmem > 0. && (fResMaxMst < 0. || rmem > fResMaxMst)) fResMaxMst = rmem;
165 if (vmem > 0. && (fVirtMemMax < 0. || vmem > fVirtMemMax)) fVirtMemMax = vmem;
166 if (rmem > 0. && (fResMemMax < 0. || rmem > fResMemMax)) fResMemMax = rmem;
173 void TStatus::Streamer(TBuffer &R__b)
175 if (R__b.IsReading()) {
177 Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
179 R__b.ReadClassBuffer(TStatus::Class(),
this, R__v, R__s, R__c);
182 TNamed::Streamer(R__b);
183 std::set<std::string> msgs;
184 TClass *cl = TClass::GetClass(
"set<string>");
186 UInt_t SS__s = 0, SS__c = 0;
187 UInt_t SS__v = cl->GetClassVersion();
188 R__b.ReadClassBuffer(cl, &msgs, SS__v, SS__s, SS__c);
190 Error(
"Streamer",
"no info found for 'set<string>' - skip");
193 std::set<std::string>::const_iterator it;
194 for (it = msgs.begin(); it != msgs.end(); ++it) {
195 fMsgs.Add(
new TObjString((*it).c_str()));
210 R__b.WriteClassBuffer(TStatus::Class(),
this);