|
|
- #ifndef __BETACORE_SERVER_HPP__
- #define __BETACORE_SERVER_HPP__
- #include <vector>
- #include <algorithm>
- #include <iostream>
-
- #include <sys/types.h>
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
-
- #include <thread>
- #include <utility>
- #include <functional>
- #include "common.hpp"
-
- // LINUX SYSTEM CALLS :)
- #include <sys/socket.h>
- #include <sys/poll.h>
- #include <netinet/in.h>
- #include <unistd.h>
-
-
- namespace betacore
- {
-
- class Server
- {
- private:
- fd_set rset;
- bool online = false;
- bool server_running = false;
- int port;
- int server_socket;
- std::vector<int> clients;
- struct sockaddr_in server_address;
-
- /*
- * Starts the server
- */
- void start();
-
- /*
- * Shutdown Routine
- */
- void shutdown();
-
- /*
- * Listen for connection and spawn a new thread
- */
- void listener();
-
- /*
- * Read the socket, is blocking, but will block its own thread
- */
- void read_socket(int client);
-
- /*
- * This will forward to all connected clients except the client fd given
- */
- void forward_message(int client, char buffer[BUFFER_LENGTH]);
-
- public:
- /*
- * Create a server on port
- */
- Server(int port);
- /*
- * Turn it off
- */
- void off();
-
- /*
- * Return true if the server is running
- */
- bool running();
- };
- } // namespace betacore
-
- #endif
|