/* * server.hpp * * Created on: 5 сент. 2022 г. * Author: alexander */ #pragma once //#include #include #include #include #include #include namespace zh { class Server // @suppress("Class has a virtual method and non-virtual destructor") { protected: std::unique_ptr _socket; std::unique_ptr
_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 _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 _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); }; }