AppChat  0.5.0
TCP client-server caht application with boost::asio library.
server.h
1 #ifndef SERVER_H
2 #define SERVER_H
3 
4 #include <boost/asio.hpp>
5 #include <memory>
6 
7 #include "connection/connection_manager.h"
8 
9 using boost::asio::ip::tcp;
10 
15 class Server {
16 public:
22  Server(int32_t port, database_ptr _db):
23  endpoint(boost::asio::ip::tcp::v4(), port),
24  acceptor(io_service, endpoint),
25  db(_db),
26  connect_manager(db)
27  {
28  scan_acception();
29  }
30 
34  void run() {
35  io_service.run();
36  }
37 
38 private:
39  boost::asio::io_service io_service;
40  boost::asio::ip::tcp::endpoint endpoint;
41  boost::asio::ip::tcp::acceptor acceptor;
42  database_ptr db;
43 
44  ConnectionManager connect_manager;
45 private:
50  void scan_acception() {
51  acceptor.async_accept([this](const boost::system::error_code& error, tcp::socket sock) {
52  if (!error) {
53  connect_manager.get_connection(std::move(sock))->start();
54  }
55  scan_acception();
56  });
57  }
58 
59 };
60 
61 #endif // SERVER_H
62 
63 
64 
65 
66 
67 
Async TCP Server.
Definition: server.h:15
ConnectionManager.
Definition: connection_manager.h:10
connection_ptr get_connection(boost::asio::ip::tcp::socket &&_socket)
get new or old connection for new client
Definition: connection_manager.cpp:4
Server(int32_t port, database_ptr _db)
Construct a new Server object.
Definition: server.h:22
void run()
Run server.
Definition: server.h:34