24 #include "TBufferFile.h"
37 #include <QApplication>
39 #include <QInputDialog>
48 connect(&
qnam, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
60 QByteArray res =
fHReply->readAll();
69 printf(
"QHttpProxy::httpHReqError %d %s\n", code,
fHReply ?
fHReply->errorString().toLatin1().constData() :
"---");
97 connect(
fHReply, SIGNAL(finished()),
100 connect(
fHReply, SIGNAL(error(QNetworkReply::NetworkError)),
103 connect(
fHReply, SIGNAL(sslErrors(
const QList<QSslError>&)),
104 fHReply, SLOT(ignoreSslErrors()));
106 QSslConfiguration cfg =
fHReply->sslConfiguration();
107 cfg.setProtocol(QSsl::AnyProtocol);
108 fHReply->setSslConfiguration(cfg);
121 QInputDialog::getText(0, tr(
"Authentication required"),
122 tr(
"User name:"), QLineEdit::Normal,
126 QInputDialog::getText(0, tr(
"Authentication required"),
127 tr(
"User password:"), QLineEdit::Password,
134 auth->setUser(user_name);
135 auth->setPassword(passwd);
140 if ((kind==0) || (*kind==0))
return 0;
141 if (strncmp(kind,
"ROOT.", 5)!=0)
return 0;
142 if (strcmp(kind+5,
"TGo4AnalysisWebStatus")==0)
return "TGo4AnalysisStatus";
174 if (
fKind==3)
return TGraph::Class();
175 if (
fKind==4)
return gROOT->GetClass(
"TGo4ParameterStatus");
176 if (
fKind==5)
return gROOT->GetClass(
"TTree");
177 if (
fKind==6)
return gROOT->GetClass(
"TGo4AnalysisStatus");
178 if (
fKind==7)
return gROOT->GetClass(
"TList");
179 if (
fKind==8)
return gROOT->GetClass(
"TGo4HistogramStatus");
190 if (
fKind==3)
return "TGraph";
191 if (
fKind==4)
return "TGo4ParameterStatus";
192 if (
fKind==6)
return "TGo4AnalysisStatus";
193 if (
fKind==7)
return "TList";
194 if (
fKind==8)
return "TGo4HistogramStatus";
198 return clname ? clname :
"TObject";
203 if (rcv==0)
return 0;
207 printf(
"TGo4HttpAccess fail to get class %s for object %s\n",
GetObjectClassName(), path);
211 if (obj_cl->GetBaseClassOffset(TObject::Class()) != 0) {
212 printf(
"TGo4HttpAccess cannot used class %s not derived from TObject\n",
GetObjectClassName());
223 case 0: url.Append(
"/h.xml?compact");
break;
224 case 1: url.Append(
"/root.bin.gz");
break;
225 case 2: url.Append(
"/get.xml");
break;
226 case 3: url.Append(
"/get.xml.gz?history=100&compact");
break;
227 case 4: url.Append(
"/exe.bin.gz?method=CreateStatus&_destroy_result_");
break;
228 case 5: url.Append(
"/exe.bin.gz?method=CreateSampleTree&sample=0&_destroy_result_");
break;
229 case 6: url.Append(
"/exe.bin.gz?method=CreateStatus&_destroy_result_");
break;
230 case 7: url.Append(
"/exe.bin.gz?method=Select&max=10000");
break;
231 case 8: url.Form(
"%s/Control/go4_sniffer/exe.bin.gz?method=CreateItemStatus&_destroy_result_&itemname=\"%s\"",
fProxy->
fNodeName.Data(),
fUrlPath.Data());
break;
232 default: url.Append(
"/root.bin.gz");
break;
236 if (url.Index(
"?") != kNPOS) url.Append(
"&");
else url.Append(
"?");
243 connect(
fReply, SIGNAL(error(QNetworkReply::NetworkError)),
244 this, SLOT(
httpError(QNetworkReply::NetworkError)));
246 if (gDebug>2) printf(
"TGo4HttpAccess::AssignObjectTo Request URL %s\n", url.Data());
259 QByteArray res =
fReply->readAll();
263 if (gDebug>2) printf(
"TGo4HttpAccess::httpFinished Get reply size %d\n", res.size());
266 if (
fUrlPath ==
"Status/Ratemeter") {
267 Bool_t conn = res.size() > 0;
279 if (res.size()==0) {
if (gDebug>0) printf(
"TGo4HttpAccess::httpFinished error with %s\n",
fUrlPath.Data());
return; }
285 XMLDocPointer_t doc = xml->ParseString(res.data());
289 XMLNodePointer_t top = xml->GetChild(xml->DocGetRootElement(doc));
291 xml->FreeAllAttr(
fNode);
293 XMLAttrPointer_t attr = xml->GetFirstAttr(top);
295 xml->NewAttr(
fNode, 0, xml->GetAttrName(attr), xml->GetAttrValue(attr));
296 attr = xml->GetNextAttr(attr);
299 XMLNodePointer_t chld;
300 while ((chld = xml->GetChild(top)) != 0) {
301 xml->UnlinkNode(chld);
302 xml->AddChild(
fNode, chld);
316 XMLDocPointer_t doc = xml->ParseString(res.data());
319 XMLNodePointer_t top = xml->DocGetRootElement(doc);
321 const char* _kind = xml->GetAttr(top,
"_kind");
322 const char* _name = xml->GetAttr(top,
"_name");
323 const char* _title = xml->GetAttr(top,
"_title");
324 const char* xtitle = xml->GetAttr(top,
"xtitle");
325 const char* ytitle = xml->GetAttr(top,
"ytitle");
326 const char* xlabels = xml->GetAttr(top,
"xlabels");
327 const char* ylabels = xml->GetAttr(top,
"ylabels");
329 if (strcmp(_kind,
"ROOT.TH1D")==0) {
330 Int_t nbins = xml->GetIntAttr(top,
"nbins");
331 Int_t left = TString(xml->GetAttr(top,
"left")).Atof();
332 Int_t right = TString(xml->GetAttr(top,
"right")).Atof();
333 TH1D* h1 =
new TH1D(_name, _title, nbins, left, right);
335 const char* bins = xml->GetAttr(top,
"bins") + 1;
336 for (
int n =-3; n<nbins+2; n++) {
337 const char* separ = strpbrk(bins,
",]");
338 if (separ==0) { printf(
"Error parsing histogram bins\n");
break; }
340 Double_t v = TString(bins, separ-bins).Atof();
341 h1->SetBinContent(n, v);
348 Int_t nbins1 = xml->GetIntAttr(top,
"nbins1");
349 Int_t left1 = TString(xml->GetAttr(top,
"left1")).Atof();
350 Int_t right1 = TString(xml->GetAttr(top,
"right1")).Atof();
351 Int_t nbins2 = xml->GetIntAttr(top,
"nbins2");
352 Int_t left2 = TString(xml->GetAttr(top,
"left2")).Atof();
353 Int_t right2 = TString(xml->GetAttr(top,
"right2")).Atof();
354 TH2D* h2 =
new TH2D(_name, _title, nbins1, left1, right1, nbins2, left2, right2);
356 const char* bins = xml->GetAttr(top,
"bins") + 1;
357 for (
int n =-6; n<(nbins1+2)*(nbins2+2); n++) {
358 const char* separ = strpbrk(bins,
",]");
359 if (separ==0) { printf(
"Error parsing histogram bins\n");
break; }
361 Double_t v = TString(bins, separ-bins).Atof();
362 h2->SetBinContent(n % (nbins1 + 2), n / (nbins1 + 2), v);
372 ((TH1*)obj)->GetXaxis()->SetTitle(xtitle);
374 ((TH1*)obj)->GetYaxis()->SetTitle(ytitle);
376 TObjArray* arr = TString(xlabels).Tokenize(
",");
377 for (
int n=0; n<=(arr ? arr->GetLast() : -1);n++)
378 ((TH1*)obj)->GetXaxis()->SetBinLabel(1 + n, arr->At(n)->GetName());
382 TObjArray* arr = TString(ylabels).Tokenize(
",");
383 for (
int n=0; n<=(arr ? arr->GetLast() : -1);n++)
384 ((TH1*)obj)->GetYaxis()->SetBinLabel(1 + n, arr->At(n)->GetName());
398 XMLDocPointer_t doc = xml->ParseString(res.data());
401 XMLNodePointer_t top = xml->DocGetRootElement(doc);
403 XMLNodePointer_t chld = top;
406 if (xml->GetAttr(chld,
"value") && xml->GetAttr(chld,
"time")) cnt++;
407 chld = (chld==top) ? xml->GetChild(top) : xml->GetNext(chld);
410 TGraph* gr =
new TGraph(cnt);
411 gr->SetName(xml->GetAttr(top,
"_name"));
412 gr->SetTitle(Form(
"%s ratemeter", xml->GetAttr(top,
"_name")));
417 const char* time = xml->GetAttr(chld,
"time");
418 const char* value = xml->GetAttr(chld,
"value");
419 if ((time!=0) && (value!=0)) {
420 QDateTime tm = QDateTime::fromString(time, Qt::ISODate);
421 gr->SetPoint(i, tm.toTime_t(), TString(value).Atof());
424 chld = (chld==top) ? xml->GetChild(top) : xml->GetNext(chld);
430 gr->GetXaxis()->SetTimeDisplay(1);
431 gr->GetXaxis()->SetTimeFormat(
"%H:%M:%S%F1970-01-01 00:00:00");
436 if (gDebug>2) printf(
"TGo4HttpAccess::httpFinished Reconstruct object class %s\n", obj_cl ? obj_cl->GetName() :
"---");
438 if ((obj_cl==0) || (obj_cl->GetBaseClassOffset(TObject::Class()) != 0))
return;
440 obj = (TObject*) obj_cl->New();
446 TBufferFile buf(TBuffer::kRead, res.size(), res.data(), kFALSE);
447 buf.MapObject(obj, obj_cl);
452 if (obj->IsA() == TGo4Ratemeter::Class()) {
456 if ((
fKind==6) && (obj!=0))
485 if (fParent == 0)
return kFALSE;
490 fChild = fXML->GetChild(fParent);
492 fChild = fXML->GetNext(fChild);
495 if (fChild==0)
return kFALSE;
497 if (fXML->HasAttr(fChild,
"_hidden"))
continue;
506 return fXML->GetChild(fChild)!=0;
511 if (strcmp(flagname,
"IsRemote")==0)
return 1;
513 if (strcmp(flagname,
"IsDeleteProtect")==0)
514 return fXML->HasAttr(fChild,
"_can_delete") ? 0 : 1;
516 if (strcmp(flagname,
"IsResetProtect")==0)
517 return fXML->HasAttr(fChild,
"_no_reset") ? 1 : 0;
519 if (strcmp(flagname,
"_numargs")==0) {
520 const char* _numargs = fXML->GetAttr(fChild,
"_numargs");
521 return (_numargs==0) ? -1 : TString(_numargs).Atoi();
537 const char* real = fXML->GetAttr(fChild,
"_realname");
538 return real!=0 ? real : fXML->GetAttr(fChild,
"_name");
541 virtual const char*
info() {
return fXML->GetAttr(fChild,
"_title"); }
551 const char* _kind = fXML->GetAttr(fChild,
"_kind");
554 const char* drawfunc = fXML->GetAttr(fChild,
"_drawfunc");
568 const char* _kind = fXML->GetAttr(fChild,
"_kind");
570 if (res!=0)
return res;
571 if (_kind && !strcmp(_kind,
"rate") && fXML->HasAttr(fChild,
"_history"))
return "TGraph";
586 fbAnalysisRunning(kFALSE),
592 fXML =
new TXMLEngine;
630 QTimer::singleShot(2000, &
fComm, SLOT(updateRatemeter()));
638 if ((curr==0) || (name==0) || (*name==0))
return curr;
640 const char* slash = strchr(name,
'\/');
641 bool doagain =
false;
644 int len = (slash==0) ? strlen(name) : (slash - name);
646 XMLNodePointer_t chld =
fXML->GetChild(curr);
648 const char* _name =
fXML->GetAttr(chld,
"_realname");
649 if (_name==0) _name =
fXML->GetAttr(chld,
"_name");
651 if ((_name!=0) && (strlen(_name) == len) && (strncmp(_name, name, len)==0))
652 return FindItem(slash ? slash+1 : 0, chld);
654 chld =
fXML->GetNext(chld);
659 if (slash) slash = strchr(slash+1,
'\/');
668 if (item==0)
return TString(
"");
674 while (item != root) {
675 const char* _name =
fXML->GetAttr(item,
"_name");
676 if (_name==0)
return TString(
"");
678 res = TString(_name) +
"/" + res;
682 item =
fXML->GetParent(item);
683 if (item==0)
return TString(
"");
692 if (res.size()==0)
return;
693 XMLDocPointer_t doc =
fXML->ParseString(res.data());
712 const char* analname =
fXML->GetAttr(
FindItem(
""),
"_analysis_name");
740 TString req =
fNodeName +
"/h.xml?compact";
744 if (!sync)
return kTRUE;
750 while (t.elapsed() < 5000) {
752 QApplication::processEvents();
765 XMLNodePointer_t item =
FindItem(name);
767 if (item==0)
return 0;
769 const char* _kind =
fXML->GetAttr(item,
"_kind");
773 if (!strcmp(_kind,
"rate") &&
fXML->HasAttr(item,
"_history")) kind = 3;
else
774 if (
fXML->HasAttr(item,
"_dabc_hist")) kind = 2;
else
775 if (
fXML->HasAttr(item,
"_more")) kind = 0;
816 return fXML->HasAttr(
FindItem(
""),
"_has_produce_multi");
822 XMLNodePointer_t item =
FindItem(
"");
823 if (item==0)
return kFALSE;
825 const char* _kind =
fXML->GetAttr(item,
"_kind");
826 const char* _title =
fXML->GetAttr(item,
"_title");
828 if ((_kind==0) || (_title==0))
return kFALSE;
830 return !strcmp(_kind,
"ROOT.Session") && !strcmp(_title,
"GO4 analysis");
835 XMLNodePointer_t item =
FindItem(
"");
836 if (item==0)
return dflt;
838 const char* username =
fXML->GetAttr(item,
"_username");
839 if (username==0)
return dflt;
841 return strcmp(username, expects)==0;
852 QTimer::singleShot(delay_sec*1000, &
fComm, SLOT(updateHierarchy()));
878 PostObject(
"Control/Analysis/exe.bin?method=ApplyStatus&status", status, 2);
896 TString foldername, objectname;
899 objectname = TString(
"\"") + objectname + TString(
"\"");
901 SubmitCommand(
"Control/CmdClearObject", -1, objectname.Data());
906 TString foldername, objectname;
909 objectname = TString(
"\"") + objectname + TString(
"\"");
911 SubmitCommand(
"Control/CmdDeleteObject", -1, objectname.Data());
918 SubmitURL(TString::Format(
"Control/Analysis/exe.json?method=ExecuteLine&cmd=\"%s\"", line));
944 if (gDebug>1) printf(
"Submit URL %s\n", url.Data());
946 QNetworkReply *netReply =
fComm.
qnam.get(QNetworkRequest(QUrl(url.Data())));
948 QSslConfiguration cfg = netReply->sslConfiguration();
949 cfg.setProtocol(QSsl::AnyProtocol);
950 netReply->setSslConfiguration(cfg);
953 netReply->connect(netReply, SIGNAL(finished()), netReply, SLOT(deleteLater()));
961 #if QT_VERSION >= QT_VERSION_CHECK(4,6,0)
962 while (!netReply->isFinished()) {
966 loop.processEvents(QEventLoop::AllEvents,100);
967 if (myTimer.elapsed() > waitres*1000)
break;
970 netReply->deleteLater();
971 #if QT_VERSION >= QT_VERSION_CHECK(4,6,0)
972 return netReply->isFinished();
980 if ((name==0) || (*name==0))
return "";
985 while (iter.
next()) {
986 if (iter.
getflag(
"_numargs")<0)
continue;
995 XMLNodePointer_t item =
FindItem(name);
996 if (item==0)
return -1;
998 const char* _numargs =
fXML->GetAttr(item,
"_numargs");
999 if (_numargs==0)
return 0;
1001 return TString(_numargs).Atoi();
1007 url.Append(
"/cmd.json");
1008 if ((arg1!=0) && (*arg1!=0)) {
1009 url.Append(
"?arg1=");
1011 if ((arg2!=0) && (*arg2!=0)) {
1012 url.Append(
"&arg2=");
1014 if ((arg3!=0) && (*arg3!=0)) {
1015 url.Append(
"&arg3=");
1028 TBufferFile *sbuf =
new TBufferFile(TBuffer::kWrite, 100000);
1029 sbuf->MapObject(obj);
1030 obj->Streamer(*sbuf);
1032 QByteArray postData;
1033 #if QT_VERSION >= QT_VERSION_CHECK(4,6,0)
1034 postData.append(sbuf->Buffer(), sbuf->Length());
1036 postData.append(sbuf->Buffer());
1045 url.Append(
"=_post_object_&");
1046 if (destroy_after) url.Append(
"_destroy_post_&");
1047 url.Append(
"_post_class_=");
1048 url.Append(obj->ClassName());
1052 QNetworkRequest req(QUrl(url.Data()));
1054 QNetworkReply *netReply =
fComm.
qnam.post(req, postData);
1056 QSslConfiguration cfg = netReply->sslConfiguration();
1057 cfg.setProtocol(QSsl::AnyProtocol);
1058 netReply->setSslConfiguration(cfg);
1061 netReply->connect(netReply, SIGNAL(finished()), netReply, SLOT(deleteLater()));
1068 #if QT_VERSION >= QT_VERSION_CHECK(4,6,0)
1069 while (!netReply->isFinished()) {
1073 loop.processEvents(QEventLoop::AllEvents,100);
1074 if (myTimer.elapsed() > waitres*1000)
break;
1077 netReply->deleteLater();
1078 #if QT_VERSION >= QT_VERSION_CHECK(4,6,0)
1079 return netReply->isFinished();
1090 Bool_t destr = kTRUE;
1092 if (*objectname == 0) {
1093 url.Append(
"Control/go4_sniffer/exe.bin?method=AddAnalysisObject&obj");
1096 url.Append(objectname);
1097 url.Append(
"/exe.bin?method=");
1099 if (obj->InheritsFrom(TGo4Condition::Class())) {
1100 url.Append(
"UpdateFrom&counts=kFALSE&cond");
1102 url.Append(
"SetStatus&status");
1106 return PostObject(url.Data(), obj, 2, destr);
1124 if (res.size() <= 0) {
1140 if (gDebug>2) printf(
"TGo4HttpProxy:: get reply on multi.bin request with %d bytes\n", res.size());
1144 for (
int n=0;n<3;n++) {
1145 unsigned char* ptr = (
unsigned char*) res.data() + pos;
1146 unsigned len = ((unsigned) ptr[0]) |
1147 (((unsigned) ptr[1]) << 8) |
1148 (((
unsigned) ptr[2]) << 16) |
1149 (((unsigned) ptr[3]) << 24);
1153 if (len > res.size()) {
1154 printf(
"Error decoding multi.bin buffer\n");
1158 if (gDebug>2) printf(
"Decoding portion of %d bytes\n", len);
1160 TClass* obj_cl = n==0 ? TGo4Ratemeter::Class() : TList::Class();
1161 TObject* obj = (TObject*) obj_cl->New();
1163 TBufferFile buf(TBuffer::kRead, len, ptr, kFALSE);
1164 buf.MapObject(obj, obj_cl);
1170 TList* curr = subslot ?
dynamic_cast<TList*
> (subslot->
GetAssignedObject()) : 0;
1171 TList* next =
dynamic_cast<TList*
> (obj);
1172 if (curr && curr->First() && next && next->First()) {
1173 if (strcmp(curr->First()->GetName(), next->First()->GetName())==0) {
1196 if (pos != res.size()) printf(
"Decoding fails %d != %d bytes\n", pos, res.size());
1206 req.Append(
"Ratemeter/root.bin\n");
1208 req.Append(
"Msg/exe.bin?method=Select&max=10000");
1210 TList* curr = subslot ?
dynamic_cast<TList*
> (subslot->
GetAssignedObject()) : 0;
1211 if (curr && curr->First()) {
1213 req.Append(curr->First()->GetName());
1218 req.Append(
"Log/exe.bin?method=Select&max=10000");
1221 if (curr && curr->First()) {
1223 req.Append(curr->First()->GetName());
1228 QByteArray postData;
1229 #if QT_VERSION >= QT_VERSION_CHECK(4,6,0)
1230 postData.append(req.Data(), req.Length());
1232 postData.append(req.Data());
1234 if (gDebug>2) printf(
"Sending multi.bin request\n%s", req.Data());
1237 url.Append(
"/Status/multi.bin.gz?number=3");
1241 QSslConfiguration cfg =
fRegularReq->sslConfiguration();
1242 cfg.setProtocol(QSsl::AnyProtocol);
1285 if (curr && curr->First()) {
1287 arg += curr->First()->GetName();
1299 if (curr && curr->First()) {
1301 arg += curr->First()->GetName();
1312 const char* cutcond,
1315 TString tfoldername, tobjectname;
1318 TString hfoldername, hobjectname;
1322 path.Form(
"Control/go4_sniffer/exe.json?method=RemoteTreeDraw&histoname=\"%s\"&treename=\"%s\"&varexpr=\"%s\"&cutexpr=\"%s\"",
1323 hobjectname.Data(), tobjectname.Data(), varexp, cutcond);
1330 if ((itemname==0) || (tgtslot==0))
return 0;
1332 XMLNodePointer_t item =
FindItem(itemname);
1333 if (item==0)
return 0;
1337 const char* _objkind =
fXML->GetAttr(item,
"_kind");
1338 if ((_objkind!=0) && ((strstr(_objkind,
"ROOT.TH1")==_objkind) ||
1339 (strstr(_objkind,
"ROOT.TH2")==_objkind) || (strstr(_objkind,
"ROOT.TH3")==_objkind))) kind = 8;
1354 TString url = evname;
1355 url.Append(
"/exe.bin?method=");
1356 url.Append(astree ?
"ShowSampleTree" :
"PrintEvent");
1372 url.Form(
"Events/%s/exe.bin?method=SetPrintEvent&num=%d&sid=%d&longw=%d&hexw=%d&dataw=%d",
1373 evname, evnumber, subid, islong ? 1 : 0, ishex ? 1 : 0, ishex ? 0 : 1);
1379 unsigned reset_bits(0), set_bits(0);
1381 TString opt = flags;
1387 TString url(fullpath);
1388 url.Append(
"/exe.bin?method=");
1390 if (reset_bits!=0)
SubmitURL(url + TString::Format(
"ResetBit&f=%u",reset_bits));
1391 if (set_bits!=0)
SubmitURL(url + TString::Format(
"SetBit&f=%u&prototype=UInt_t",set_bits));
1396 SubmitURL(TString(fullpath)+
"/exe.bin?method=Print");
1401 SubmitURL(TString::Format(
"Control/Analysis/exe.bin?method=LoadStatus&fname=%s", fname));
1406 SubmitURL(TString::Format(
"Control/Analysis/exe.bin?method=SaveStatus&fname=%s", fname));
1413 SubmitURL(TString::Format(
"Control/Analysis/exe.bin?method=WriteAutoSave&fname=%s&overwrite=%s&complevel=%d", fname, overwrite ?
"kTRUE" :
"kFALSE", complevel));
TGo4HttpProxy * fProxy
used only to receive hierarchy
virtual Int_t AssignObjectTo(TGo4ObjectManager *rcv, const char *path)
TString fPassword
user name and password -
virtual void RequestAnalysisSettings()
static TClass * GetClass(const char *classname, Bool_t load=kFALSE)
virtual void CloseAnalysisSettings()
Int_t fStatusCnt
counter for ratemeter updates
virtual void DisconnectAnalysis(Int_t waittime=30, Bool_t servershutdown=kFALSE)
virtual void ChageObjectProtection(const char *fullpath, const char *flags)
virtual Bool_t CanSubmitObjects()
Bool_t fbAnalysisRunning
counter for debug output updates
QNetworkAccessManager qnam
void SetProxy(TGo4Proxy *cont)
virtual TString FindCommand(const char *name)
virtual TGo4LevelIter * subiterator()
virtual void ReadData(TGo4Slot *slot, TDirectory *dir)
virtual Bool_t HasSublevels() const
Int_t fDebugCnt
counter for status messages updates
friend class TGo4HttpAccess
const char * GetHttpRootClassName(const char *kind)
Bool_t PostObject(const char *prefix, TObject *obj, Int_t waitres=-1, Bool_t destroy_after=kTRUE)
virtual void Initialize(TGo4Slot *slot)
Bool_t CheckUserName(const char *expects, Bool_t dflt=kFALSE)
virtual void ClearAnalysisObject(const char *fullpath)
virtual void RequestEventStatus(const char *evname, Bool_t astree, TGo4Slot *tgtslot)
virtual Bool_t IsViewer()
virtual TClass * GetObjectClass() const
void ProcessUpdateTimer()
void DoObjectAssignement(TGo4ObjectManager *rcv, const char *path, TObject *obj, Bool_t owner)
virtual void SaveConfigFile(const char *fname)
Bool_t SubmitURL(const char *path, Int_t waitres=-1)
virtual Bool_t IsConnected()
virtual const char * info()
virtual const char * GetObjectClassName() const
void authenticationRequiredSlot(QNetworkReply *, QAuthenticator *)
virtual const char * GetUserName() const
QHttpProxy(TGo4HttpProxy *p)
QNetworkReply * fRegularReq
true if connected
virtual Int_t getflag(const char *flagname)
Int_t getflag(const char *flagname)
Bool_t Connect(const char *nodename)
virtual ~TGo4HttpLevelIter()
virtual void Initialize(TGo4Slot *slot)
virtual Bool_t IsAdministrator()
TGo4Slot * RatemeterSlot()
TObject * GetAssignedObject()
void SetAnalysisReady(Bool_t on=kTRUE)
const char * getfullname()
TGo4HttpLevelIter(TXMLEngine *xml, XMLNodePointer_t item)
virtual void RemoteTreeDraw(const char *treename, const char *varexp, const char *cutcond, const char *hname)
TGo4Slot * DebugOutputSlot()
void ProcessRegularMultiRequest(Bool_t finished=kFALSE)
void StartRequest(const char *url)
virtual const char * GetContainedObjectInfo()
TGo4Slot * SettingsSlot()
virtual void ClearAllAnalysisObjects()
virtual void Update(TGo4Slot *slot, Bool_t strong)
virtual void StartAnalysis()
void GetHReply(QByteArray &res)
counter during shutdown
void SetAccount(const char *username, const char *passwd)
void SetAnalysisSettingsReady(Bool_t on=kTRUE)
virtual const char * GetContainedObjectInfo()
virtual Int_t NumCommandArgs(const char *name)
TGo4ObjectManager * fReceiver
TGo4HttpAccess * SubmitRequest(const char *itemname, Int_t kind, TGo4Slot *tgtslot, const char *extra_arg=0)
virtual void WriteData(TGo4Slot *slot, TDirectory *dir, Bool_t onlyobjs)
virtual TGo4Slot * getslot()
QHttpProxy fComm
pointer on dabc::Hierarchy class
virtual Bool_t RequestObjectStatus(const char *objectname, TGo4Slot *tgtslot)
void httpError(QNetworkReply::NetworkError)
virtual Bool_t SubmitCommand(const char *name, Int_t waitres=-1, const char *arg1=0, const char *arg2=0, const char *arg3=0)
virtual Bool_t IsGo4Analysis() const
XMLDocPointer_t fxHierarchy
virtual void ResetDebugOutputRequests()
virtual Bool_t NamesListReceived()
virtual void LoadConfigFile(const char *fname)
virtual void RemoveObjectFromAnalysis(const char *fullpath)
void httpHReqError(QNetworkReply::NetworkError)
virtual void SubmitAnalysisSettings()
Bool_t ServerHasRestrict()
void regularRequestFinished()
virtual Bool_t RefreshNamesList()
virtual void ExecuteLine(const char *line)
QNetworkReply * fHReply
central manager of network requests
static void ProduceFolderAndName(const char *fullname, TString &foldername, TString &objectname)
void ForwardEvent(TGo4Slot *source, Int_t id, void *param=0)
virtual Bool_t UpdateAnalysisObject(const char *objectname, TObject *obj)
virtual void WriteAutoSave(const char *fname, Int_t complevel, Bool_t overwrite)
virtual TGo4LevelIter * MakeIter()
Int_t AssignObjectToSlot(TGo4Slot *slot)
TString fNodeName
0 - not launched, 1 - external shell, 2 - in qt shell
virtual void Delete(Option_t *opt="")
Bool_t AssignObject(TObject *obj, Bool_t owner)
TString MakeUrlPath(XMLNodePointer_t item)
Bool_t UpdateHierarchy(Bool_t sync=kTRUE)
virtual const char * GetServerName() const
virtual void RemotePrintEvent(const char *evname, Int_t evnumber, Int_t subid, Bool_t ishex, Bool_t islong)
virtual const char * GetObjectName() const
virtual Bool_t isfolder()
TGo4HttpAccess(TGo4HttpProxy *proxy, XMLNodePointer_t node, Int_t kind=1, const char *extra_arg=0)
Bool_t CheckShutdown(Bool_t force=kFALSE)
virtual TGo4Access * ProvideAccess(const char *name)
virtual const char * GetClassName()
virtual void StopAnalysis()
virtual Bool_t DelayedRefreshNamesList(Int_t delay_sec)
Int_t GetAssignCnt() const
virtual const char * name()
virtual void PrintDynListEntry(const char *fullpath)
Int_t fShutdownCnt
multiple request for rate, log and messages
XMLNodePointer_t FindItem(const char *name, XMLNodePointer_t curr=0) const
Bool_t next(Bool_t goesinto=kTRUE)