initial
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* This is the Server's menu.
|
||||
* It says: "I have a socket, a port, I can be created, I can be destroyed, I can start, and
|
||||
* I have a helper to talk to clients." This short resume doesn't say how Server does any of that.
|
||||
*/
|
||||
|
||||
#ifndef IOVI_NETWORK_ECHO_SERVER_H
|
||||
#define IOVI_NETWORK_ECHO_SERVER_H
|
||||
|
||||
#include "NetworkConfig.h" // We need the rulebook
|
||||
#include <string>
|
||||
#include <thread>
|
||||
|
||||
class EchoServer {
|
||||
SOCKET_TYPE serverSocket; // The main walkie-talkie
|
||||
int port; // The channel number
|
||||
|
||||
// this helper function belongs to the class itself,
|
||||
// not to a specific server object. Threads love static
|
||||
static void handleClient(SOCKET_TYPE clientSocket);
|
||||
|
||||
public:
|
||||
// Constructor: Runs when the server is born
|
||||
explicit EchoServer(int p);
|
||||
|
||||
// Destructor: Runs when the server is destroyed (cleans up)
|
||||
~EchoServer();
|
||||
|
||||
// The main action: Starts listening
|
||||
// It has a while(true) loop. There is no break; and no return; inside that loop.
|
||||
// Normally, a function is like a hallway: you walk in, do some work, and walk out the other end
|
||||
// (which is called "returning"). But start() function has a brick wall at the end of the hallway.
|
||||
// It will loop forever. CLion warns "Wait, this function never finishes! Is that a mistake?"
|
||||
// We add [[noreturn]]. This is a "Warning Label" you stick on the function. It tells the compiler:
|
||||
// "I know this never finishes. That is on purpose. Stop worrying."
|
||||
[[noreturn]] void start();
|
||||
};
|
||||
|
||||
#endif // IOVI_NETWORK_ECHO_SERVER_H
|
||||
Reference in New Issue
Block a user