mirror of https://github.com/layters/testshop
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.8 KiB
63 lines
1.8 KiB
#include <iostream>
|
|
// neroshop
|
|
#include "../core/server.hpp"
|
|
#include "../core/database.hpp"
|
|
#include "../core/debug.hpp"
|
|
|
|
#define NEROMON_TAG "\033[1;95m[neromon]:\033[0m "
|
|
|
|
// Daemon will handle database server requests from the client
|
|
|
|
using namespace neroshop;
|
|
|
|
Server * server;
|
|
|
|
void close_server() {
|
|
server->shutdown();
|
|
delete server; // calls destructor which calls closesocket()
|
|
server = nullptr;
|
|
std::cout << NEROMON_TAG "\033[1;91mdisconnected\033[0m" << std::endl;
|
|
}
|
|
////////////////////
|
|
///////////////////
|
|
void do_heartbeat()
|
|
{
|
|
// accept multiple connections - I noticed that new clients are only accepted when the primary client writes to the server
|
|
if(server->accept() != -1) // accepts any incoming connection
|
|
{
|
|
//std::cout << "server's client_socket: " << server->get_client_socket() << std::endl;// returns 5
|
|
//std::thread new_client(client); // create a new client thread each time it accepts
|
|
//new_client.join();
|
|
server->write(NEROMON_TAG "\033[1;32mconnected\033[0m"); // write to client once
|
|
} //else exit(0);
|
|
std::cout << server->read() << std::endl;
|
|
}
|
|
// For security purposes, we don't allow any arguments to be passed into the daemon
|
|
int main(void)
|
|
{
|
|
// Start server
|
|
std::atexit(close_server);
|
|
|
|
server = new Server();
|
|
|
|
int server_port = 40441;//1234;//(std::stoi(port));
|
|
if(server->bind(server_port)) {
|
|
server->write(NEROMON_TAG "\033[1;97mbound to port " + std::to_string(server_port) + "\033[0m\n");
|
|
}
|
|
server->listen(); // listens for any incoming connection
|
|
|
|
const int SLEEP_INTERVAL = 1;
|
|
// Enter daemon loop
|
|
while(true) {
|
|
// Execute daemon heartbeat
|
|
do_heartbeat();
|
|
// Sleep for a period of time
|
|
#ifdef _WIN32
|
|
Sleep(SLEEP_INTERVAL);
|
|
#else
|
|
sleep(SLEEP_INTERVAL);
|
|
#endif
|
|
}
|
|
return 0;
|
|
}
|