LeftHookRoll
An HTTP/1.0 compliant web server, as specified by RFC1945
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
/**
2
* @file main.cpp - Entry point for LeftHookRoll web server.
3
* @brief validates args, spins up parser ServerManager, and enters main event loop.
4
*
5
*/
6
#include <iostream>
7
#include <cstdlib>
8
#include <csignal>
9
10
#include "../includes/ServerManager.hpp"
11
#include "../includes/FatalExceptions.hpp"
12
#include "../includes/ConfigParser.hpp"
13
14
//turn in checklist:
15
// write README
16
//comment .h and check for errors (to avoid forbidden functions)
17
//eval sheet test cases
18
volatile
sig_atomic_t
g_running
= 1;
19
volatile
sig_atomic_t
g_sigpipe
= 0;
20
21
static
void
signalHandler
(
int
sig)
22
{
23
(void)sig;
24
g_running
= 0;
25
}
26
27
static
void
signalPipeHandler
(
int
sig) {
28
g_sigpipe
= sig;
29
}
30
31
int
main
(
int
argc,
char
** argv)
32
{
33
signal(SIGINT,
signalHandler
);
34
signal(SIGPIPE,
signalPipeHandler
);
35
if
(argc > 2)
36
{
37
std::cerr <<
"Usage: "
<< argv[0] <<
" [configuration file]"
<< std::endl;
38
return
1;
39
}
40
try
41
{
42
std::vector<ServerConf> parsedConfs;
43
if
(argc == 1)
44
{
45
ServerConf
defaultConf;
46
defaultConf.
setDefaults
();
47
parsedConfs.push_back(defaultConf);
48
}
49
else
50
{
51
ConfigParser
parser(argv[1]);
52
parsedConfs = parser.
parse
();
53
}
54
ServerManager
manager(parsedConfs);
55
manager.
run
();
56
}
57
catch
(
const
FatalException
& e)
58
{
59
std::cerr <<
"Fatal: "
<< e.
what
() << std::endl;
60
return
1;
61
}
62
catch
(
const
std::exception& e)
63
{
64
std::cerr <<
"Unexpected fatal error: "
<< e.
what
() << std::endl;
65
return
1;
66
}
67
return
0;
68
}
ConfigParser
Definition
ConfigParser.hpp:22
ConfigParser::parse
std::vector< ServerConf > parse()
Parses the config file and returns one ServerConf per server block.
Definition
ConfigParser.cpp:26
FatalException
Definition
FatalExceptions.hpp:11
FatalException::what
virtual const char * what() const
Definition
FatalExceptions.cpp:16
ServerConf
Definition
ServerConf.hpp:20
ServerConf::setDefaults
void setDefaults()
Set the Defaults config directives.
Definition
ServerConf.hpp:63
ServerManager
Definition
ServerManager.hpp:40
ServerManager::run
void run()
Enters the main epoll() event loop. Blocks until g_running becomes false.
Definition
ServerManager.cpp:143
main
int main(int argc, char **argv)
Definition
main.cpp:31
g_sigpipe
volatile sig_atomic_t g_sigpipe
Definition
main.cpp:19
g_running
volatile sig_atomic_t g_running
Definition
main.cpp:18
signalHandler
static void signalHandler(int sig)
Definition
main.cpp:21
signalPipeHandler
static void signalPipeHandler(int sig)
Definition
main.cpp:27
src
main.cpp
Generated by
1.9.8