BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
MpdWebScreenshots.h
Go to the documentation of this file.
1// -------------------------------------------------------------------------
2// ----- MpdWebScreenshots header file -----
3// ----- Created 11/12/15 by K. Smirnov -----
4// -------------------------------------------------------------------------
5
6#ifndef MPDWEBSCREENSHOTS_H
7#define MPDWEBSCREENSHOTS_H
8
9#include "FairTask.h"
10#include "MpdEventManager.h"
11#include "TString.h"
12
13///////////////////////////////////////////////////////////////////////////////
14#define BUFFER_SIZE 512
15#define MAX_FILE_SIZE 1024 * 1024
16#define MAX_CONNECTIONS 3
17///////////////////////////////////////////////////////////////////////////////
18
25
27{
28 public:
29 // Standard constructor
30 //*@param name Name of task
31 //*@outputDir Output directory
32 //*@param iVerbose Verbosity level
33 MpdWebScreenshots(const char* name, char* output_dir, bool isWebServer = false, Int_t iVerbose = 0);
34
35 // Destructor
36 virtual ~MpdWebScreenshots();
37
38 // Set verbosity level. For this task and all of the subtasks.
39 void SetVerbose(Int_t iVerbose) { fVerbose = iVerbose; }
40 // Executed task
41 virtual void Exec(Option_t* option);
42 virtual InitStatus Init();
43 virtual void SetParContainers();
44 // Action after each event
45 virtual void Finish();
46
47 // Set format of saved files
48 void SetFormatFiles(int i_format_files) { iFormatFiles = i_format_files; }
49 // Set quantity of files
50 void SetMultiFiles(bool is_multi_files) { isMultiFiles = is_multi_files; }
51 // Set Number port
52 void SetPort(int NumberPort) { web_port = NumberPort; }
53
54 private:
55 // Default constructor
59
60 static int daemonize();
61 static int sendString(const char* message, int socket);
62 static void sendHeader(const char* Status_code, char* Content_Type, int TotalSize, int socket);
63 static void sendHTML(char* statusCode, char* contentType, char* content, int size, int socket);
64 static void sendFile(FILE* fp, int connecting_socket);
65 static int scan(char* input, char* output, size_t start, size_t max);
66 static int checkMime(char* extension, char* mime_type);
67 static int getHttpVersion(char* input, char* output);
68 static int GetExtension(char* input, char* output, size_t max);
69 static int handleHttpGET(char* input, TString output_dir, int connecting_socket);
70 static int getRequestType(char* input);
71 static int receive(int connecting_socket, TString output_dir);
72 static int acceptConnection(int currentSocket, TString output_dir);
73 static int start(int webPort, TString output_dir);
74 static int start_server(void* ptr);
75
77
78 // 0 - PNG, 1 -JPG, 2 - both types
80 // 0 - one (the same) file event.png; 1 - multiple files event_nnn.png (event1.png and etc.)
82
85 int daemon;
86
88 bool isWeb;
89
91};
92
93#endif
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition P4_F32vec4.h:31
int Int_t
const char Option_t
#define ClassDef(name, id)
static int start(int webPort, TString output_dir)
void SetPort(int NumberPort)
MpdWebScreenshots & operator=(const MpdWebScreenshots &)=delete
void SetVerbose(Int_t iVerbose)
static void sendFile(FILE *fp, int connecting_socket)
virtual InitStatus Init()
static int handleHttpGET(char *input, TString output_dir, int connecting_socket)
static int checkMime(char *extension, char *mime_type)
static int getRequestType(char *input)
static int GetExtension(char *input, char *output, size_t max)
static int start_server(void *ptr)
MpdWebScreenshots(const char *name, char *output_dir, bool isWebServer=false, Int_t iVerbose=0)
MpdWebScreenshots(const MpdWebScreenshots &)=delete
void SetFormatFiles(int i_format_files)
static int getHttpVersion(char *input, char *output)
void SetMultiFiles(bool is_multi_files)
MpdEventManager * fMan
static int receive(int connecting_socket, TString output_dir)
virtual void Exec(Option_t *option)
virtual void SetParContainers()
static void sendHeader(const char *Status_code, char *Content_Type, int TotalSize, int socket)
static int acceptConnection(int currentSocket, TString output_dir)
static void sendHTML(char *statusCode, char *contentType, char *content, int size, int socket)
static int sendString(const char *message, int socket)
void scan()