12#ifndef ROOT_THttpServer
13#define ROOT_THttpServer
56 std::queue<std::shared_ptr<THttpCallArg>>
fArgs;
114 void AddLocation(
const char *prefix,
const char *path);
118 void SetDrawPage(
const std::string &filename =
"");
131 Bool_t ExecuteHttp(std::shared_ptr<THttpCallArg> arg);
137 Bool_t SubmitHttp(std::shared_ptr<THttpCallArg> arg,
Bool_t can_run_immediately =
kFALSE);
140 Int_t ProcessRequests();
149 void RegisterWS(std::shared_ptr<THttpWSHandler>
ws);
152 void UnregisterWS(std::shared_ptr<THttpWSHandler>
ws);
155 std::shared_ptr<THttpWSHandler> FindWS(
const char *
name);
161 void Restrict(
const char *path,
const char *options);
163 Bool_t RegisterCommand(
const char *cmdname,
const char *method,
const char *icon = 0);
167 Bool_t SetIcon(
const char *fullname,
const char *iconname);
169 Bool_t CreateItem(
const char *fullname,
const char *title);
171 Bool_t SetItemField(
const char *fullname,
const char *
name,
const char *value);
173 const char *GetItemField(
const char *fullname,
const char *
name);
176 static const char *GetMimeType(
const char *path);
179 static char *ReadFileContent(
const char *filename,
Int_t &len);
182 static std::string ReadFileContent(
const std::string &filename);
#define _R__DEPRECATED_618(REASON)
#define ClassDef(name, id)
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
Bool_t IsReadOnly() const
returns read-only mode
TString fJSROOT
! location of external JSROOT files
virtual void ProcessRequest(std::shared_ptr< THttpCallArg > arg)
Process single http request Depending from requested path and filename different actions will be perf...
const char * GetTopName() const
returns name of top item in objects hierarchy
void SetTimer(Long_t milliSec=100, Bool_t mode=kTRUE)
create timer which will invoke ProcessRequests() function periodically Timer is required to perform a...
virtual void ProcessBatchHolder(std::shared_ptr< THttpCallArg > &arg)
Process special http request for root_batch_holder.js script This kind of requests used to hold web b...
std::vector< std::shared_ptr< THttpWSHandler > > fWSHandlers
! list of WS handlers
virtual ~THttpServer()
destructor delete all http engines and sniffer
void SetTerminate()
set termination flag, no any further requests will be processed
virtual void MissedRequest(THttpCallArg *arg)
Method called when THttpServer cannot process request By default such requests replied with 404 code ...
Bool_t fOwnThread
! true when specialized thread allocated for processing requests
void SetSniffer(TRootSniffer *sniff)
Set TRootSniffer to the server Server takes ownership over sniffer.
Bool_t IsFileRequested(const char *uri, TString &res) const
Check if file is requested, thread safe.
const char * GetCors() const
Returns specified CORS domain.
std::thread fThrd
! own thread
void StopServerThread()
Stop server thread Normally called shortly before http server destructor.
TString fTopName
! name of top folder, default - "ROOT"
TRootSniffer * fSniffer
! sniffer provides access to ROOT objects hierarchy
void SetDrawPage(const std::string &filename="")
Set file name of HTML page, delivered by the server when objects drawing page is requested from the b...
THttpServer(const char *engine="civetweb:8080")
constructor
void AddLocation(const char *prefix, const char *path)
add files location, which could be used in the server one could map some system folder to the server ...
Bool_t IsAnyEngine() const
std::map< std::string, std::string > fLocations
! list of local directories, which could be accessed via server
TList fCallArgs
! submitted arguments (deprecated)
Long_t fMainThrdId
! id of the thread for processing requests
std::string fCors
! CORS: sets Access-Control-Allow-Origin header for ProcessRequest responses
Bool_t IsTerminated() const
returns kTRUE, if server was terminated
TString fJSROOTSYS
! location of local JSROOT files
TList fEngines
! engines which runs http server
void SetCors(const std::string &domain="*")
Enable CORS header to ProcessRequests() responses Specified location (typically "*") add as "Access-C...
Bool_t IsCors() const
Returns kTRUE if CORS was configured.
std::queue< std::shared_ptr< THttpCallArg > > fArgs
! submitted arguments
void SetDefaultPage(const std::string &filename="")
Set file name of HTML page, delivered by the server when http address is opened in the browser.
void CreateServerThread()
Creates special thread to process all requests, directed to http server.
std::string fDrawPageCont
! content of draw html page
THttpTimer * fTimer
! timer used to access main thread
std::mutex fWSMutex
! mutex to protect WS handler lists
Bool_t CreateEngine(const char *engine)
factory method to create different http engines At the moment two engine kinds are supported: civetwe...
std::string fDrawPage
! file name for drawing of single element
std::string fDefaultPageCont
! content of default html page
static Bool_t VerifyFilePath(const char *fname)
Checked that filename does not contains relative path below current directory Used to prevent access ...
void SetReadOnly(Bool_t readonly)
Set read-only mode for the server (default on) In read-only server is not allowed to change any ROOT ...
void SetJSROOT(const char *location)
Set location of JSROOT to use with the server One could specify address like: https://root....
std::mutex fMutex
! mutex to protect list with arguments
std::string fDefaultPage
! file name for default page name
TRootSniffer * GetSniffer() const
returns pointer on objects sniffer
Bool_t fTerminated
! termination flag, disables all requests processing
void SetTopName(const char *top)
set name of top item in objects hierarchy
The TNamed class is the base class for all named ROOT classes.
Mother of all ROOT objects.
const char * Data() const
RooCmdArg Restrict(const char *catName, const char *stateNameList)