mirror of
https://github.com/3lswear/webserv.git
synced 2025-10-29 13:27:59 +03:00
tmp improvements
This commit is contained in:
@@ -37,6 +37,7 @@ void Server::print_epoll_events(unsigned int events)
|
|||||||
void Server::readConfig(char *filename)
|
void Server::readConfig(char *filename)
|
||||||
{
|
{
|
||||||
TOMLMap *root = NULL;
|
TOMLMap *root = NULL;
|
||||||
|
// root = parse(filename);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
root = parse(filename);
|
root = parse(filename);
|
||||||
@@ -49,7 +50,7 @@ void Server::readConfig(char *filename)
|
|||||||
// root->clear();
|
// root->clear();
|
||||||
// delete root;
|
// delete root;
|
||||||
// clean_parsed(root);
|
// clean_parsed(root);
|
||||||
return;
|
exit(-1);
|
||||||
}
|
}
|
||||||
catch (config::Tokenizer::InvalidToken &e)
|
catch (config::Tokenizer::InvalidToken &e)
|
||||||
{
|
{
|
||||||
@@ -58,7 +59,7 @@ void Server::readConfig(char *filename)
|
|||||||
// clean_parsed(root);
|
// clean_parsed(root);
|
||||||
// root->clear();
|
// root->clear();
|
||||||
delete root;
|
delete root;
|
||||||
return;
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TOMLMap *map; */
|
/* TOMLMap *map; */
|
||||||
@@ -430,9 +431,9 @@ void Server::clean_parsed(TOMLMap *root)
|
|||||||
DBOUT << ">>> cleaning up: <<<" << std::endl;
|
DBOUT << ">>> cleaning up: <<<" << std::endl;
|
||||||
for (it = root->begin(); it != root->end(); ++it)
|
for (it = root->begin(); it != root->end(); ++it)
|
||||||
{
|
{
|
||||||
DBOUT << RED << it->first
|
// DBOUT << RED << it->first
|
||||||
<< ": " << GREEN
|
// << ": " << GREEN
|
||||||
<< *(it->second->toString());
|
// << *(it->second->toString());
|
||||||
|
|
||||||
clean_generic(it->second);
|
clean_generic(it->second);
|
||||||
/* delete it->second; */
|
/* delete it->second; */
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace config
|
|||||||
try { current = tokenizer.getToken(); }
|
try { current = tokenizer.getToken(); }
|
||||||
catch (Tokenizer::NoMoreTokens &e)
|
catch (Tokenizer::NoMoreTokens &e)
|
||||||
{
|
{
|
||||||
std::cerr << e.what() << std::endl;
|
DBOUT << "got no more tokens" << ENDL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (current.type == MAP_DECL)
|
if (current.type == MAP_DECL)
|
||||||
@@ -45,7 +45,7 @@ namespace config
|
|||||||
if (tokenizer.getToken().type != NEWLINE)
|
if (tokenizer.getToken().type != NEWLINE)
|
||||||
throw ExpectedToken("newline", current.value);
|
throw ExpectedToken("newline", current.value);
|
||||||
// throw std::logic_error("no newline after MAP_DECL");
|
// throw std::logic_error("no newline after MAP_DECL");
|
||||||
map_node = parseMap();
|
map_node = parseMap().release();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
// throw std::logic_error("unexpected token in processMap");
|
// throw std::logic_error("unexpected token in processMap");
|
||||||
@@ -57,15 +57,14 @@ namespace config
|
|||||||
|
|
||||||
full_name = split_name(current.value);
|
full_name = split_name(current.value);
|
||||||
|
|
||||||
put_to_subtable(root, full_name, map_node, toml_node::MAP);
|
put_to_subtable(root.get(), full_name, map_node, toml_node::MAP);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toml_node *TOMLParser::parseMap(void)
|
std::auto_ptr<toml_node> TOMLParser::parseMap(void)
|
||||||
{
|
{
|
||||||
/* std::cerr << "Parsing map" << std::endl; */
|
/* std::cerr << "Parsing map" << std::endl; */
|
||||||
toml_node *node = new toml_node;
|
std::auto_ptr<TOMLMap> mapObject(new TOMLMap);
|
||||||
TOMLMap *mapObject = new TOMLMap;
|
|
||||||
bool completed = false;
|
bool completed = false;
|
||||||
while (!completed)
|
while (!completed)
|
||||||
{
|
{
|
||||||
@@ -75,7 +74,7 @@ namespace config
|
|||||||
try { nextToken = tokenizer.getToken(); }
|
try { nextToken = tokenizer.getToken(); }
|
||||||
catch (Tokenizer::NoMoreTokens &e)
|
catch (Tokenizer::NoMoreTokens &e)
|
||||||
{
|
{
|
||||||
std::cerr << e.what() << std::endl;
|
DBOUT << "got no more tokens" << ENDL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (nextToken.type == MAPARRAY_DECL)
|
if (nextToken.type == MAPARRAY_DECL)
|
||||||
@@ -153,7 +152,10 @@ namespace config
|
|||||||
// throw std::logic_error("parseMap: no more tokens");
|
// throw std::logic_error("parseMap: no more tokens");
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
node->setObject(mapObject);
|
|
||||||
|
// toml_node *node = new toml_node;
|
||||||
|
std::auto_ptr<toml_node> node(new toml_node);
|
||||||
|
node->setObject(mapObject.release());
|
||||||
return (node);
|
return (node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,13 +163,14 @@ namespace config
|
|||||||
{
|
{
|
||||||
|
|
||||||
/* std::cerr << "Parsing MapArray" << std::endl; */
|
/* std::cerr << "Parsing MapArray" << std::endl; */
|
||||||
toml_node *map_node;
|
// toml_node *map_node;
|
||||||
|
std::auto_ptr<toml_node> map_node;
|
||||||
s_token current;
|
s_token current;
|
||||||
|
|
||||||
try { current = tokenizer.getToken(); }
|
try { current = tokenizer.getToken(); }
|
||||||
catch (Tokenizer::NoMoreTokens &e)
|
catch (Tokenizer::NoMoreTokens &e)
|
||||||
{
|
{
|
||||||
std::cerr << e.what() << std::endl;
|
DBOUT << "got no more tokens" << ENDL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (current.type == MAPARRAY_DECL)
|
if (current.type == MAPARRAY_DECL)
|
||||||
@@ -185,19 +188,19 @@ namespace config
|
|||||||
|
|
||||||
full_name = split_name(current.value);
|
full_name = split_name(current.value);
|
||||||
|
|
||||||
put_to_subtable(root, full_name, map_node, toml_node::MAPARRAY);
|
put_to_subtable(root.get(), full_name, map_node.release(), toml_node::MAPARRAY);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toml_node *TOMLParser::parseString(void)
|
toml_node *TOMLParser::parseString(void)
|
||||||
{
|
{
|
||||||
/* toml_node *node; */
|
|
||||||
toml_node *node = new toml_node;
|
|
||||||
std::string *sValue;
|
std::string *sValue;
|
||||||
|
|
||||||
/* std::cerr << "Parsing string" << std::endl; */
|
/* std::cerr << "Parsing string" << std::endl; */
|
||||||
s_token token = tokenizer.getToken();
|
s_token token = tokenizer.getToken();
|
||||||
sValue = new std::string(token.value);
|
sValue = new std::string(token.value);
|
||||||
|
|
||||||
|
toml_node *node = new toml_node;
|
||||||
node->setString(sValue);
|
node->setString(sValue);
|
||||||
|
|
||||||
return (node);
|
return (node);
|
||||||
@@ -205,12 +208,13 @@ namespace config
|
|||||||
|
|
||||||
toml_node *TOMLParser::parseNumber(void)
|
toml_node *TOMLParser::parseNumber(void)
|
||||||
{
|
{
|
||||||
toml_node *node = new toml_node;
|
|
||||||
int value;
|
int value;
|
||||||
|
|
||||||
/* std::cerr << "Parsing number" << std::endl; */
|
/* std::cerr << "Parsing number" << std::endl; */
|
||||||
s_token token = tokenizer.getToken();
|
s_token token = tokenizer.getToken();
|
||||||
value = std::atoi(token.value.c_str());
|
value = std::atoi(token.value.c_str());
|
||||||
|
|
||||||
|
toml_node *node = new toml_node;
|
||||||
node->setNumber(value);
|
node->setNumber(value);
|
||||||
|
|
||||||
return (node);
|
return (node);
|
||||||
@@ -287,7 +291,6 @@ namespace config
|
|||||||
|
|
||||||
toml_node *TOMLParser::parseBool(void)
|
toml_node *TOMLParser::parseBool(void)
|
||||||
{
|
{
|
||||||
toml_node *node = new toml_node;
|
|
||||||
bool value;
|
bool value;
|
||||||
|
|
||||||
/* std::cerr << "Parsing bool" << std::endl; */
|
/* std::cerr << "Parsing bool" << std::endl; */
|
||||||
@@ -298,6 +301,8 @@ namespace config
|
|||||||
value = false;
|
value = false;
|
||||||
else
|
else
|
||||||
throw std::invalid_argument("Unexpected bool value");
|
throw std::invalid_argument("Unexpected bool value");
|
||||||
|
|
||||||
|
toml_node *node = new toml_node;
|
||||||
node->setBool(value);
|
node->setBool(value);
|
||||||
|
|
||||||
return (node);
|
return (node);
|
||||||
@@ -315,7 +320,9 @@ namespace config
|
|||||||
TOMLMap *TOMLParser::parse(void)
|
TOMLMap *TOMLParser::parse(void)
|
||||||
{
|
{
|
||||||
/* std::cerr << "Parsing ROOT" << std::endl; */
|
/* std::cerr << "Parsing ROOT" << std::endl; */
|
||||||
root = new TOMLMap;
|
// root = new TOMLMap;
|
||||||
|
// std::auto_ptr<TOMLMap> root(new TOMLMap);
|
||||||
|
root.reset(new TOMLMap);
|
||||||
bool completed = false;
|
bool completed = false;
|
||||||
while (!completed)
|
while (!completed)
|
||||||
{
|
{
|
||||||
@@ -325,7 +332,7 @@ namespace config
|
|||||||
try { current = tokenizer.getToken(); }
|
try { current = tokenizer.getToken(); }
|
||||||
catch (Tokenizer::NoMoreTokens &e)
|
catch (Tokenizer::NoMoreTokens &e)
|
||||||
{
|
{
|
||||||
std::cerr << e.what() << std::endl;
|
DBOUT << "got no more tokens" << ENDL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (current.type == MAPARRAY_DECL)
|
if (current.type == MAPARRAY_DECL)
|
||||||
@@ -402,7 +409,7 @@ namespace config
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (root);
|
return (root.release());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> TOMLParser::split_name(std::string name)
|
std::vector<std::string> TOMLParser::split_name(std::string name)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "Tokenizer.hpp"
|
#include "Tokenizer.hpp"
|
||||||
#include "TOMLNode.hpp"
|
#include "TOMLNode.hpp"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
namespace config
|
namespace config
|
||||||
{
|
{
|
||||||
@@ -13,7 +14,8 @@ namespace config
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
std::fstream file;
|
std::fstream file;
|
||||||
TOMLMap *root; //root of TOML tree
|
std::auto_ptr<TOMLMap> root;
|
||||||
|
// TOMLMap *root; //root of TOML tree
|
||||||
/* toml_node *current; //node currently being parsed */
|
/* toml_node *current; //node currently being parsed */
|
||||||
Tokenizer tokenizer;
|
Tokenizer tokenizer;
|
||||||
|
|
||||||
@@ -26,7 +28,8 @@ namespace config
|
|||||||
TOMLParser(char *filename);
|
TOMLParser(char *filename);
|
||||||
TOMLMap *parse(void);
|
TOMLMap *parse(void);
|
||||||
|
|
||||||
toml_node *parseMap(void);
|
// toml_node *parseMap(void);
|
||||||
|
std::auto_ptr<toml_node> parseMap(void);
|
||||||
void processMap(void);
|
void processMap(void);
|
||||||
|
|
||||||
void processMapArray(void);
|
void processMapArray(void);
|
||||||
|
|||||||
Reference in New Issue
Block a user