#ifndef ROOT_THttpServer
#define ROOT_THttpServer
#ifndef ROOT_TObject
#include "TObject.h"
#endif
#ifndef ROOT_TList
#include "TList.h"
#endif
#ifndef ROOT_TMutex
#include "TMutex.h"
#endif
#ifndef ROOT_THttpCallArg
#include "THttpCallArg.h"
#endif
class THttpEngine;
class THttpTimer;
class TRootSniffer;
class THttpServer : public TNamed {
protected:
TList fEngines;
THttpTimer *fTimer;
TRootSniffer *fSniffer;
Long_t fMainThrdId;
TString fJSROOTSYS;
TString fTopName;
TString fJSROOT;
TList fLocations;
TString fDefaultPage;
TString fDefaultPageCont;
TString fDrawPage;
TString fDrawPageCont;
TMutex fMutex;
TList fCallArgs;
virtual void ProcessRequest(THttpCallArg *arg);
static Bool_t VerifyFilePath(const char *fname);
public:
THttpServer(const char *engine = "civetweb:8080");
virtual ~THttpServer();
Bool_t CreateEngine(const char *engine);
TRootSniffer *GetSniffer() const
{
return fSniffer;
}
void SetSniffer(TRootSniffer *sniff);
Bool_t IsReadOnly() const;
void SetReadOnly(Bool_t readonly);
void SetTopName(const char *top)
{
fTopName = top;
}
const char *GetTopName() const
{
return fTopName.Data();
}
void SetJSROOT(const char *location);
void AddLocation(const char *prefix, const char *path);
void SetDefaultPage(const char *filename);
void SetDrawPage(const char *filename);
void SetTimer(Long_t milliSec = 100, Bool_t mode = kTRUE);
Bool_t IsFileRequested(const char *uri, TString &res) const;
Bool_t ExecuteHttp(THttpCallArg *arg);
void ProcessRequests();
Bool_t Register(const char *subfolder, TObject *obj);
Bool_t Unregister(TObject *obj);
void Restrict(const char *path, const char* options);
Bool_t RegisterCommand(const char *cmdname, const char *method, const char *icon = 0);
Bool_t Hide(const char *fullname, Bool_t hide = kTRUE);
Bool_t SetIcon(const char *fullname, const char *iconname);
Bool_t CreateItem(const char *fullname, const char *title);
Bool_t SetItemField(const char *fullname, const char *name, const char *value);
const char *GetItemField(const char *fullname, const char *name);
static const char *GetMimeType(const char *path);
static char *ReadFileContent(const char *filename, Int_t &len);
ClassDef(THttpServer, 0)
};
#endif