wip
This commit is contained in:
1 parent
eb8bc7a696
commit
1dd457d2d2
5 files changed
+66
-62
No files matched your search
+24
-24
@@ -10,26 +10,27 @@ using std::cerr;
|
|||||||
using std::endl;
|
using std::endl;
|
||||||
|
|
||||||
Logger::Logger(enum Level logLevel) :
|
Logger::Logger(enum Level logLevel) :
|
||||||
logLevel(logLevel),
|
_logLevel(logLevel),
|
||||||
debug(DEBUG, *this),
|
debug(DEBUG, *this),
|
||||||
info(INFO, *this),
|
info(INFO, *this),
|
||||||
warn(WARN, *this),
|
warn(WARN, *this),
|
||||||
fatal(FATAL, *this)
|
fatal(FATAL, *this)
|
||||||
{
|
{
|
||||||
output = new ofstream("plains.log", std::ios_base::app);
|
_output = new ofstream("plains.log", std::ios_base::app);
|
||||||
|
|
||||||
if (!(*output)) {
|
if (!(*_output)) {
|
||||||
cout << "Unable to open Logfile! writing to /tmp/plains.log" << endl;
|
cout << "Unable to open Logfile! writing to /tmp/plains.log" << endl;
|
||||||
output = new ofstream("/tmp/plains.log");
|
_output = new ofstream("/tmp/plains.log");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
debug << "============================" << commit;
|
||||||
debug << "Logfile successfully opened!" << commit;
|
debug << "Logfile successfully opened!" << commit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::~Logger() {
|
Logger::~Logger() {
|
||||||
output->close();
|
_output->close();
|
||||||
delete output;
|
delete _output;
|
||||||
}
|
}
|
||||||
|
|
||||||
string Logger::genTimeStamp() {
|
string Logger::genTimeStamp() {
|
||||||
@@ -43,8 +44,7 @@ string Logger::genTimeStamp() {
|
|||||||
return string(buffer);
|
return string(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::setLogLevel(Level level) {
|
void Logger::setLogLevel(Level level) { _logLevel = level; }
|
||||||
}
|
|
||||||
|
|
||||||
void Logger::log(Level lvl, const string& msg) { log ( lvl, msg.c_str() ); }
|
void Logger::log(Level lvl, const string& msg) { log ( lvl, msg.c_str() ); }
|
||||||
|
|
||||||
@@ -67,11 +67,11 @@ void Logger::Sink::ln ( const string& msg ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Logger::Sink::ln ( const char* msg ) {
|
void Logger::Sink::ln ( const char* msg ) {
|
||||||
if ( _level>= _parent.logLevel ) {
|
if ( _level >= _parent._logLevel ) {
|
||||||
// If line has already been started, abort it and start new one:
|
// If line has already been started, abort it and start new one:
|
||||||
if(_lineIsPrefixed) *_parent.output << endl;
|
if(_lineIsPrefixed) *_parent._output << endl;
|
||||||
prefixLine(true);
|
prefixLine(true);
|
||||||
*_parent.output << msg << endl;
|
*_parent._output << msg << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,58 +85,58 @@ void Logger::Sink::prefixLine(bool resetToFalse) {
|
|||||||
case WARN: lvlString = "WARN"; break;
|
case WARN: lvlString = "WARN"; break;
|
||||||
case FATAL: lvlString = "FATAL"; break;
|
case FATAL: lvlString = "FATAL"; break;
|
||||||
}
|
}
|
||||||
*_parent.output << Logger::genTimeStamp() << " [" << lvlString << "] ";
|
*_parent._output << Logger::genTimeStamp() << " [" << lvlString << "] ";
|
||||||
_lineIsPrefixed = resetToFalse ? false : true;
|
_lineIsPrefixed = resetToFalse ? false : true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::Sink& Logger::Sink::operator<<(const string& msg) {
|
Logger::Sink& Logger::Sink::operator<<(const string& msg) {
|
||||||
if ( _level>= _parent.logLevel ) {
|
if ( _level >= _parent._logLevel ) {
|
||||||
prefixLine();
|
prefixLine();
|
||||||
*_parent.output << msg;
|
*_parent._output << msg;
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::Sink& Logger::Sink::operator<<(const char* msg) {
|
Logger::Sink& Logger::Sink::operator<<(const char* msg) {
|
||||||
if ( _level>= _parent.logLevel ) {
|
if ( _level >= _parent._logLevel ) {
|
||||||
prefixLine();
|
prefixLine();
|
||||||
*_parent.output << msg;
|
*_parent._output << msg;
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Logger::Sink& Logger::Sink::operator<<(const int msg) {
|
Logger::Sink& Logger::Sink::operator<<(const int msg) {
|
||||||
if ( _level>= _parent.logLevel ) {
|
if ( _level >= _parent._logLevel ) {
|
||||||
prefixLine();
|
prefixLine();
|
||||||
*_parent.output << msg;
|
*_parent._output << msg;
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::Sink& Logger::Sink::operator<<(const long msg) {
|
Logger::Sink& Logger::Sink::operator<<(const long msg) {
|
||||||
if ( _level>= _parent.logLevel ) {
|
if ( _level >= _parent._logLevel ) {
|
||||||
prefixLine();
|
prefixLine();
|
||||||
*_parent.output << msg;
|
*_parent._output << msg;
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::Sink& Logger::Sink::operator<<(const unsigned long msg) {
|
Logger::Sink& Logger::Sink::operator<<(const unsigned long msg) {
|
||||||
if ( _level>= _parent.logLevel ) {
|
if ( _level >= _parent._logLevel ) {
|
||||||
prefixLine();
|
prefixLine();
|
||||||
*_parent.output << msg;
|
*_parent._output << msg;
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::Sink& Logger::Sink::operator<<(const char character) {
|
Logger::Sink& Logger::Sink::operator<<(const char character) {
|
||||||
if ( _level>= _parent.logLevel ) {
|
if ( _level >= _parent._logLevel ) {
|
||||||
switch(character) {
|
switch(character) {
|
||||||
// COMMIT - End message line
|
// COMMIT - End message line
|
||||||
case 0:
|
case 0:
|
||||||
*_parent.output << endl;
|
*_parent._output << endl;
|
||||||
_lineIsPrefixed = false;
|
_lineIsPrefixed = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ class Logger {
|
|||||||
Sink fatal;
|
Sink fatal;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum Level logLevel;
|
enum Level _logLevel;
|
||||||
ofstream* output;
|
ofstream* _output;
|
||||||
static string genTimeStamp();
|
static string genTimeStamp();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+10
-6
@@ -14,24 +14,28 @@ int main(int args, char **argv) {
|
|||||||
Logger logger(Logger::DEBUG);
|
Logger logger(Logger::DEBUG);
|
||||||
logger.info.ln ("Starting PlaiNS...");
|
logger.info.ln ("Starting PlaiNS...");
|
||||||
|
|
||||||
try{
|
try
|
||||||
|
{
|
||||||
vector<string> arguments;
|
vector<string> arguments;
|
||||||
for ( unsigned index = 0; index < args; ++index ) {
|
for ( unsigned index = 0; index < args; ++index ) {
|
||||||
arguments.push_back (argv[index]);
|
arguments.push_back (argv[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.debug.ln ("Loading Configuration...");
|
||||||
ConfigManager cfg(logger, arguments);
|
ConfigManager cfg(logger, arguments);
|
||||||
|
|
||||||
|
logger.debug.ln ("Start Event Bus...");
|
||||||
EventBus eventBus(logger);
|
EventBus eventBus(logger);
|
||||||
|
|
||||||
|
logger.debug.ln ("Start DNS resolver...");
|
||||||
Resolver::Server resolver(logger, eventBus);
|
Resolver::Server resolver(logger, eventBus);
|
||||||
|
|
||||||
//Record testrec = ARecord();
|
//Record testrec = ARecord();
|
||||||
logger.debug.ln ("Running DNS resolver...");
|
//logger.debug.ln ("Running DNS resolver...");
|
||||||
resolver.run();
|
//resolver.run();
|
||||||
logger.info.ln ("PlaiNS successfully started.");
|
logger.info.ln ("PlaiNS successfully started.");
|
||||||
// Run something on main thread...
|
// Run something on main thread...
|
||||||
logger.info.ln ("Done - shutting down. Bye!");
|
logger.info.ln ("Shutting down PlaiNS. Good Bye!");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (std::exception& e)
|
catch (std::exception& e)
|
||||||
{
|
{
|
||||||
|
|||||||
+25
-25
@@ -30,21 +30,21 @@ static char* intToHex(unsigned byteCount, int c) {
|
|||||||
static char* out = new char[32];
|
static char* out = new char[32];
|
||||||
const char* byte = (char*)&c;
|
const char* byte = (char*)&c;
|
||||||
|
|
||||||
printf("%x\n", c);
|
//printf("%x\n", c);
|
||||||
printf("%x\n", byte[0] & 0xFF);
|
//printf("%x\n", byte[0] & 0xFF);
|
||||||
printf("%x\n", byte[1] & 0xFF);
|
//printf("%x\n", byte[1] & 0xFF);
|
||||||
|
|
||||||
|
|
||||||
out[byteCount*3] = 0x0; //Terminate string
|
out[byteCount*3] = 0x0; //Terminate string
|
||||||
//out[4] = 0xE; //Terminate string
|
//out[4] = 0xE; //Terminate string
|
||||||
for (unsigned i = 0; i < byteCount; i++) {
|
for (unsigned i = 0; i < byteCount; i++) {
|
||||||
std::cout << "i(" << i << ") ";
|
//std::cout << "i(" << i << ") ";
|
||||||
//char byte = (c >> (i*8)) & 0xFF;
|
//char byte = (c >> (i*8)) & 0xFF;
|
||||||
const char* nibble = byteToHex(byte[i]);
|
const char* nibble = byteToHex(byte[i]);
|
||||||
out[i*3] = nibble[0];
|
out[i*3] = nibble[0];
|
||||||
out[i*3+1] = nibble[1];
|
out[i*3+1] = nibble[1];
|
||||||
out[i*3+2] = ' ';
|
out[i*3+2] = ' ';
|
||||||
std::cout << "Char1(" << out[0] << ") Char2(" << out[1] << ") Char3(" << out[2] << ")" << std::endl;
|
//std::cout << "Char1(" << out[0] << ") Char2(" << out[1] << ") Char3(" << out[2] << ")" << std::endl;
|
||||||
}
|
}
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
@@ -53,6 +53,7 @@ Server::Server(Logger& logger, EventBus& eventBus)
|
|||||||
: _logger(logger),
|
: _logger(logger),
|
||||||
_eventBus(eventBus)
|
_eventBus(eventBus)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
_logger.debug << "Testing some stuff..." << Logger::commit;
|
_logger.debug << "Testing some stuff..." << Logger::commit;
|
||||||
_logger.debug << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;
|
_logger.debug << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;
|
||||||
// _logger.debug << "Message::Header size:" << sizeof(Message::Header) << endl;
|
// _logger.debug << "Message::Header size:" << sizeof(Message::Header) << endl;
|
||||||
@@ -86,43 +87,42 @@ Server::Server(Logger& logger, EventBus& eventBus)
|
|||||||
"Additional Record Count: " << intToHex(2, header->arCount) << Logger::commit;
|
"Additional Record Count: " << intToHex(2, header->arCount) << Logger::commit;
|
||||||
myfile.close();
|
myfile.close();
|
||||||
//Testing over
|
//Testing over
|
||||||
|
_logger.debug << "Done testing" << Logger::commit;
|
||||||
_socket = new udp::socket(_io_context, udp::endpoint(udp::v4(), 8853));
|
*/
|
||||||
|
_udpSocket = new udp::socket(_ioContext, udp::endpoint(udp::v4(), 8853));
|
||||||
|
_ioContext.run();
|
||||||
|
doReceive();
|
||||||
}
|
}
|
||||||
|
|
||||||
Server::~Server() {
|
Server::~Server() {}
|
||||||
|
|
||||||
}
|
//void Server::run() {
|
||||||
|
// _ioContext.run();
|
||||||
|
// doReceive();
|
||||||
|
//}
|
||||||
|
|
||||||
void Server::run() {
|
void Server::doReceive()
|
||||||
_io_context.run();
|
|
||||||
do_receive();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Server::do_receive()
|
|
||||||
{
|
{
|
||||||
_socket->async_receive_from(
|
_udpSocket->async_receive_from(
|
||||||
asio::buffer(_data, 1024), _sender_endpoint,
|
asio::buffer(_data, 1024), _sender_endpoint,
|
||||||
[this](std::error_code ec, std::size_t bytes_recvd)
|
[this](std::error_code ec, std::size_t bytes_recvd)
|
||||||
{
|
{
|
||||||
if (!ec && bytes_recvd > 0)
|
if (!ec && bytes_recvd > 0) {
|
||||||
{
|
doSend(bytes_recvd);
|
||||||
do_send(bytes_recvd);
|
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
doReceive();
|
||||||
do_receive();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Server::do_send(std::size_t length)
|
void Server::doSend(std::size_t length)
|
||||||
{
|
{
|
||||||
_socket->async_send_to (
|
_udpSocket->async_send_to (
|
||||||
asio::buffer(_data, length), _sender_endpoint,
|
asio::buffer(_data, length), _sender_endpoint,
|
||||||
[this](std::error_code /*ec*/, std::size_t /*_bytessent*/)
|
[this](std::error_code /*ec*/, std::size_t /*_bytessent*/)
|
||||||
{
|
{
|
||||||
do_receive();
|
doReceive();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,18 +17,18 @@ class Server
|
|||||||
private:
|
private:
|
||||||
EventBus& _eventBus;
|
EventBus& _eventBus;
|
||||||
Logger& _logger;
|
Logger& _logger;
|
||||||
asio::io_context _io_context;
|
asio::io_context _ioContext;
|
||||||
asio::ip::udp::socket* _socket;
|
asio::ip::udp::socket* _udpSocket;
|
||||||
asio::ip::udp::endpoint _sender_endpoint;
|
asio::ip::udp::endpoint _sender_endpoint;
|
||||||
char _data[1024];
|
char _data[1024];
|
||||||
|
|
||||||
void do_receive();
|
void doReceive();
|
||||||
void do_send(std::size_t length);
|
void doSend(std::size_t length);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Server(Logger& logger, EventBus& eventBus);
|
Server(Logger& logger, EventBus& eventBus);
|
||||||
~Server();
|
~Server();
|
||||||
void run();
|
//void run();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user