This commit is contained in:
Sven Luethi committed 2021-04-08 00:08:56 +02:00
1 parent 5c297f5877
commit f90347b753
4 files changed
+54 -38

No files matched your search

+2 -2
View File
@@ -40,8 +40,8 @@ Event& EventBus::registerEvent(const string& eventID) {
void EventBus::run() { void EventBus::run() {
while (true) { while (true) {
std::this_thread::sleep_for(std::chrono::seconds(5)); std::this_thread::sleep_for(std::chrono::seconds(15));
_logger.warn.ln("EventBus: Looping..."); //_logger.warn.ln("EventBus: Looping...");
} }
} }
+6 -1
View File
@@ -14,6 +14,7 @@ using std::string;
void signalHandler( int ); void signalHandler( int );
// Provide global hooks for signal handler
Logger* globalLogger; Logger* globalLogger;
ConfigManager* globalConfigManager; ConfigManager* globalConfigManager;
EventBus* globalEventBus; EventBus* globalEventBus;
@@ -93,14 +94,18 @@ int main(int args, char **argv) {
void signalHandler( int signalNumber ) { void signalHandler( int signalNumber ) {
switch(signalNumber) { switch(signalNumber) {
case SIGINT: case SIGINT:
static auto firstCall = true;
if(firstCall) {
firstCall = false;
globalLogger->warn << "Shutting down Plains..." << Logger::commit; globalLogger->warn << "Shutting down Plains..." << Logger::commit;
globalResolver->~Server(); globalResolver->~Server();
globalUIServer->~Server(); //globalUIServer->~Server();
globalEventBus->~EventBus(); globalEventBus->~EventBus();
globalConfigManager->~ConfigManager(); globalConfigManager->~ConfigManager();
globalLogger->info.ln ("PLAINS shut down."); globalLogger->info.ln ("PLAINS shut down.");
globalLogger->~Logger(); globalLogger->~Logger();
exit(0); exit(0);
}
break; break;
} }
} }
+45 -31
View File
@@ -14,6 +14,7 @@
//Testing: //Testing:
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <iomanip>
namespace Plains { namespace Plains {
@@ -28,12 +29,11 @@ Server::Server(Logger& logger, EventBus& eventBus)
{ {
_logger.debug.ln ("Starting Resolver..."); _logger.debug.ln ("Starting Resolver...");
//throw Exception("Testi"); //throw Exception("Testi");
/*
_logger.debug << "Testing some stuff..." << 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::QR:RESPONSE Enum:" << Message::QR::RESPONSE << endl;
_logger.warn << "Testing some stuff..." << Logger::commit;
_logger.warn << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;
//_logger.debug << "Message::QR:RESPONSE Enum:" << Message::QR::RESPONSE << endl;
/*
std::cerr << std::hex << 0xABCDEF std::cerr << std::hex << 0xABCDEF
std::fstream myfile; std::fstream myfile;
@@ -70,57 +70,71 @@ Server::Server(Logger& logger, EventBus& eventBus)
_ioContext.run(); _ioContext.run();
doReceive(); doReceive();
*/ */
_stop = false;
_thread = thread(&Server::run, this); _thread = thread(&Server::run, this);
_logger.debug.ln ("Resolver started"); _logger.debug.ln ("Resolver started");
} }
Server::~Server() { Server::~Server() {
_logger.debug.ln ("Stopping Resolver..."); _logger.debug.ln ("Stopping Resolver...");
_stop = true;
//_udpSocket->close(); //_udpSocket->close();
_thread.join(); _thread.join();
_logger.debug.ln ("Resolver stopped"); _logger.debug.ln ("Resolver stopped");
} }
void Server::run() { void Server::run() {
// _ioContext.run(); //_ioContext.run();
// doReceive(); //doReceive();
_logger.warn.ln ("Hi From resolver thread!"); _logger.warn.ln ("Hi From resolver thread!");
char msg[] = "Hello to you too!!!\n"; char msg[] = "Hello to you too!!!\n";
//creating a new server socket int udpServerSocket, udpReadStatus;
if ((_serSockDes = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { struct sockaddr_in serverAddress, clientAddress;
perror("socket creation error...\n"); socklen_t clientAddressLength;
exit(-1);
}
//binding the port to ip and port //binding the port to ip and port
_serAddr.sin_family = AF_INET; serverAddress.sin_family = AF_INET;
_serAddr.sin_port = htons(PORT); serverAddress.sin_port = htons(PORT);
_serAddr.sin_addr.s_addr = INADDR_ANY; serverAddress.sin_addr.s_addr = INADDR_ANY;
clientAddressLength = sizeof(clientAddress);
if ((bind(_serSockDes, (struct sockaddr*)&_serAddr, sizeof(_serAddr))) < 0) { // Create receive buffer
perror("binding error...\n"); char buffer[65508] = { 0 }; // (2**16 = 65,536 − 8 byte UDP header − 20 byte IP header)
close(_serSockDes);
exit(-1); // Create new UDP Socket
if ((udpServerSocket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
_logger.fatal.ln("socket creation error...");
} }
_cliAddrLen = sizeof(_cliAddr); // Bind UDP Socket
_readStatus = recvfrom(_serSockDes, _buff, 1024, 0, (struct sockaddr*)&_cliAddr, &_cliAddrLen); if ((bind(udpServerSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress))) < 0) {
if (_readStatus < 0) { _logger.fatal.ln("binding error...");
perror("reading error...\n");
close(_serSockDes);
exit(-1);
} }
std::cout.write(_buff, _readStatus); while(!_stop) {
udpReadStatus = recvfrom(udpServerSocket, buffer, sizeof(buffer), 0, (struct sockaddr*)&clientAddress, &clientAddressLength);
if ( sendto(_serSockDes, msg, strlen(msg), 0, (struct sockaddr*)&_cliAddr, _cliAddrLen) < 0 ) { if (udpServerSocket < 0) {
_logger.debug.ln("sending error...\n"); close(udpServerSocket);
close(_serSockDes); _logger.warn.ln("reading error...");
exit(-1);
} }
close(_serSockDes); //std::cout.write(buffer, udpReadStatus);
//std::cout << "size: " << udpReadStatus << std::endl;
for(int i=0; i<udpReadStatus; ++i) {
//std::cout << std::hex << (char)buffer[i];
std::cout << std::setw(2) << static_cast<unsigned>(buffer[i]);
}
if ( sendto(udpServerSocket, msg, strlen(msg), 0, (struct sockaddr*)&clientAddress, clientAddressLength) < 0 ) {
close(udpServerSocket);
_logger.warn.ln("sending error...");
}
}
close(udpServerSocket);
} }
/* /*
+1 -4
View File
@@ -31,11 +31,8 @@ class Server
//asio::ip::udp::socket* _udpSocket; //asio::ip::udp::socket* _udpSocket;
//asio::ip::udp::endpoint _sender_endpoint; //asio::ip::udp::endpoint _sender_endpoint;
//char _data[1024]; //char _data[1024];
char _buff[1024] = {0};
int _serSockDes, _readStatus;
struct sockaddr_in _serAddr, _cliAddr;
socklen_t _cliAddrLen;
thread _thread; thread _thread;
bool _stop;
private: private:
//void doReceive(); //void doReceive();