Refactor chat system: Introduce ChatRoom and ChatUser classes
- Created ChatRoom class to manage chat room functionalities, including user management, message handling, and game mechanics. - Developed ChatUser class to represent individual users, handling user-specific actions and interactions within chat rooms. - Implemented a Config class for loading configuration settings from a JSON file. - Established a Server class to manage connections, handle requests, and facilitate communication between users and chat rooms. - Introduced a Database class for database interactions, utilizing PostgreSQL for user and room data management. - Added utility functions in the Base class for JSON handling and socket communication. - Created Object classes for Room and User to encapsulate their properties and behaviors. - Updated main function to initialize server and load chat rooms from configuration.
This commit is contained in:
71
src/core/chat_user.h
Normal file
71
src/core/chat_user.h
Normal file
@@ -0,0 +1,71 @@
|
||||
#ifndef YC_LIB_CHAT_USER_H
|
||||
#define YC_LIB_CHAT_USER_H
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <set>
|
||||
#include <json/json.h>
|
||||
#include <thread>
|
||||
#include "lib/base.h"
|
||||
#include "object/user.h"
|
||||
|
||||
namespace Yc
|
||||
{
|
||||
namespace Lib
|
||||
{
|
||||
|
||||
class ChatRoom;
|
||||
|
||||
class ChatUser : public Base, public std::enable_shared_from_this<ChatUser>
|
||||
{
|
||||
public:
|
||||
enum MsgType
|
||||
{
|
||||
error = -1,
|
||||
token = 1,
|
||||
userListe = 2,
|
||||
roomList = 3,
|
||||
message = 4,
|
||||
system = 5,
|
||||
scream = 6,
|
||||
dosomething = 7,
|
||||
dice = 8,
|
||||
result = 9
|
||||
};
|
||||
|
||||
ChatUser(std::shared_ptr<ChatRoom> parent, std::string name, std::string color, int socket);
|
||||
~ChatUser();
|
||||
std::string name() const;
|
||||
bool validateToken(std::string token);
|
||||
bool isUser(std::shared_ptr<ChatUser> toValidate);
|
||||
void sendMsg(MsgType type, std::string message, std::string userName, std::string color);
|
||||
void sendMsg(MsgType type, const char *message, std::string userName, std::string color);
|
||||
void sendMsg(MsgType type, Json::Value message, std::string userName, std::string color);
|
||||
void checkerTask();
|
||||
void stop();
|
||||
std::string color() const;
|
||||
void setParent(std::shared_ptr<ChatRoom> parent);
|
||||
|
||||
private:
|
||||
std::shared_ptr<ChatRoom> _parent;
|
||||
Yc::Object::User _user;
|
||||
std::string _name;
|
||||
std::string _color;
|
||||
int _socket;
|
||||
std::string _token;
|
||||
bool _stop;
|
||||
std::unique_ptr<std::thread> thread;
|
||||
|
||||
void send(std::string out);
|
||||
void send(Json::Value out);
|
||||
void handleMessage(std::string message);
|
||||
void doDice();
|
||||
void changeRoom(std::string newRoom, std::string password);
|
||||
void checkString(std::string message);
|
||||
void sendUserList();
|
||||
};
|
||||
|
||||
} // namespace Lib
|
||||
} // namespace Yc
|
||||
|
||||
#endif // YC_LIB_CHAT_USER_H
|
||||
Reference in New Issue
Block a user