summaryrefslogtreecommitdiffstats
path: root/src/server/rooms.hpp
diff options
context:
space:
mode:
authorJoursoir <chat@joursoir.net>2020-11-25 19:04:49 +0300
committerJoursoir <chat@joursoir.net>2020-11-25 19:04:49 +0300
commit6139b74876a5c8417d75c2759ce0baec4ae0e171 (patch)
tree9924c31f8136c3834fd452e3846a35bcac6602d7 /src/server/rooms.hpp
parent8dfca4755430209504dac5ed2e03a482342265b3 (diff)
downloadwant-chat-6139b74876a5c8417d75c2759ce0baec4ae0e171.tar.gz
want-chat-6139b74876a5c8417d75c2759ce0baec4ae0e171.tar.bz2
want-chat-6139b74876a5c8417d75c2759ce0baec4ae0e171.zip
add second (work with chat) level of abstraction
Diffstat (limited to 'src/server/rooms.hpp')
-rw-r--r--src/server/rooms.hpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/server/rooms.hpp b/src/server/rooms.hpp
new file mode 100644
index 0000000..08fffff
--- /dev/null
+++ b/src/server/rooms.hpp
@@ -0,0 +1,33 @@
+#ifndef ROOMREALIZATION_H
+#define ROOMREALIZATION_H
+
+class Server;
+class ChatSession;
+
+class ChatRoom {
+ Server *the_server;
+ const bool it_lobby;
+
+ struct item {
+ ChatSession *s;
+ item *next;
+ };
+ item *first;
+public:
+ ChatRoom(Server *i_server, bool i_lobby)
+ : the_server(i_server), it_lobby(i_lobby), first(0) {}
+ ~ChatRoom();
+
+ void SendAll(const char *msg, ChatSession *except = 0);
+ void LeaveMessage(ChatSession *except);
+
+ void HandleMessage(ChatSession *ses, const char *str);
+ void HandleCommand(ChatSession *s, int cmd_counter,
+ char **commands);
+
+ void AddSession(ChatSession *ses);
+ void RemoveSession(ChatSession *ses);
+ void CloseSession(ChatSession *ses);
+};
+
+#endif \ No newline at end of file