#ifndef YC_LIB_USER_H #define YC_LIB_USER_H #include #include #include #include "base.h" namespace Yc { namespace Lib { class Room; class User: public Base { public: enum MsgType { error = -1, token = 1, userListe = 2, roomList = 3, message = 4, system = 5, scream = 6, dosomething = 7, dice = 8, result = 9 }; User(Room *parent, std::string name, std::string color, int socket); ~User(); std::string name() const; bool validateToken(std::string token); bool isUser(User *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; private: Room *_parent; std::string _name; std::string _color; int _socket; std::string _token; bool _stop; std::thread *thread; void send(std::string out); void send(Json::Value out); void handleMessage(std::string message); void doDice(); }; } // namespace Lib } // namespace Yc #endif // YC_LIB_USER_H