wip
This commit is contained in:
1 parent
5c297f5877
commit
f90347b753
4 files changed
+52
-36
No files matched your search
@@ -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
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+43
-29
@@ -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,12 +70,15 @@ 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");
|
||||||
@@ -87,40 +90,51 @@ void Server::run() {
|
|||||||
_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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in new issue
Block a user