geekbrains_network_programming/lesson_03/header/server.hpp

67 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* server.hpp
*
* Created on: 5 сент. 2022 г.
* Author: alexander
*/
#pragma once
//#include <algorithm>
#include <socket.hpp>
#include <address.hpp>
#include <memory>
#include <vector>
#include <string>
namespace zh
{
class Server // @suppress("Class has a virtual method and non-virtual destructor")
{
protected:
std::unique_ptr<Socket> _socket;
std::unique_ptr<Address> _local, _client;
unsigned int _sizeClient;
const unsigned short int _port;
int _connfd;
public:
Server(const unsigned short int port);
virtual void bind() = 0;
virtual void listen() = 0;
};
typedef void (*hook)(std::string buffer, Server &s);
class ServerTCP: public Server // @suppress("Class has a virtual method and non-virtual destructor")
{
private:
bool _bind;
const unsigned short int _sizeBuffer;
std::unique_ptr<std::byte[]> _buffer;
class Hook
{
private:
std::string _command;
hook _handler;
public:
Hook(std::string command, hook handler);
void execute(std::string buffer, Server &s);
};
std::vector<Hook> _hooks;
void chat();
void readData(const int sizeData);
public:
ServerTCP(const unsigned short int port, const unsigned short int sizeBuffer = 1024);
void bind();
void listen();
void registerHook(std::string command, hook handler);
};
}