Samchon Framework for CPP  1.0.0
ChatServer.hpp
1 #pragma once
2 #include <samchon/protocol/IServer.hpp>
3 #include <samchon/protocol/IProtocol.hpp>
4 
5 #include <set>
6 #include <samchon/library/RWMutex.hpp>
7 
8 namespace samchon
9 {
10  namespace example
11  {
21  namespace console_chat_server
22  {
23  class ChatClient;
24 
30  class ChatServer
31  : public protocol::IServer,
32  public protocol::IProtocol
33  {
34  private:
35  typedef protocol::IServer super;
36 
40  std::set<ChatClient*> clientSet;
41 
46 
47  public:
51  ChatServer();
52  virtual ~ChatServer() = default;
53 
57  void eraseClient(ChatClient *client);
58 
59  protected:
63  virtual auto PORT() const -> int override
64  {
65  return 37749;
66  };
67 
71  virtual void addClient(protocol::Socket *socket) override;
72 
73  public:
80  virtual void replyData(std::shared_ptr<protocol::Invoke>) override;
81 
88  virtual void sendData(std::shared_ptr<protocol::Invoke>) override;
89  };
90  };
91  };
92 };
An interface of a physical server.
Definition: IServer.hpp:43
library::RWMutex rwMutex
A rw_mutex managing clientSet.
Definition: ChatServer.hpp:45
virtual void replyData(std::shared_ptr< protocol::Invoke >) override
Handling replied message.
Definition: ChatServer.cpp:31
std::set< ChatClient * > clientSet
List of clients.
Definition: ChatServer.hpp:40
virtual void sendData(std::shared_ptr< protocol::Invoke >) override
Sending a message.
Definition: ChatServer.cpp:35
An interface of Invoke message chain.
Definition: IProtocol.hpp:31
virtual void addClient(protocol::Socket *socket) override
Add a client.
Definition: ChatServer.cpp:16
void eraseClient(ChatClient *client)
Erase client when disconnected.
Definition: ChatServer.cpp:25
virtual auto PORT() const -> int override
Port number: #33749.
Definition: ChatServer.hpp:63
Top level namespace of products built from samchon.
Definition: ByteArray.hpp:7