diff options
| author | admin (centauri.fritz.box) <puppet@mx.buetow.org> | 2014-07-01 20:17:18 +0200 |
|---|---|---|
| committer | admin (centauri.fritz.box) <puppet@mx.buetow.org> | 2014-07-01 20:17:18 +0200 |
| commit | 79f67cf524bf8c9069241475e9365362066ca3ab (patch) | |
| tree | 2cb149d26c3faa3c1dba7161c30f07ec61884e22 /user.h | |
| parent | 3a96ab7e91145b367d05e98533b5f426f762f83f (diff) | |
| parent | 4c578b7bdc0cb1492254866434235da583aec0a4 (diff) | |
Merge remote-tracking branch 'remotes/github/ychat-0.5' into ychat-0.5ychat-0.5
Diffstat (limited to 'user.h')
| -rw-r--r-- | user.h | 84 |
1 files changed, 84 insertions, 0 deletions
@@ -0,0 +1,84 @@ +// class user declaration. +#ifndef USER_H +#define USER_H + +#include "incl.h" +#include "hmap.h" +#include "name.h" +#include "s_lang.h" +using namespace std; + +class room; + +class user : public name +{ +private: + // private members: + bool b_away; // true if user is away. + bool b_online; // true if user is online. + int i_sock; // user's stream socket descriptor. + long l_time; // user's last activity time. + rang r_rang; // user's rang ( see enum rang @ globals.h ). + rang r_oldr; // user's previous rang. + string s_id; + string s_agnt; // user's http user agent. + string s_away; // user's last away message. + string s_col1; // user's nick color. + string s_mess; // message string which has to be sent to the user. + room* p_room; // pointer to the user's room. + + pthread_mutex_t mut_b_online; + pthread_mutex_t mut_i_sock; + pthread_mutex_t mut_l_time; + pthread_mutex_t mut_s_mess; + pthread_mutex_t mut_p_room; + +public: + pthread_cond_t cond_message; + pthread_mutex_t mut_message; + + // small inline methods: + string get_col1() const { return s_col1; } + string get_id() const { return s_id; } + void set_id ( string s_id ) { this -> s_id = s_id; } + void set_col1 ( string s_col1 ) { this -> s_col1 = s_col1; } + + rang get_rang ( ) const { return r_rang; } + void set_rang ( rang r_rang ) { r_oldr = this -> r_rang; + this -> r_rang = r_rang; } + + bool new_msgs ( ) { return s_mess.empty(); } + // public methods: + explicit user( string s_name ); // a standard constructor. + ~user(); // user destructor. + + // gets specific data of this user und stores it in + // (*p_map_string)["nick"]. this method will be used + // every time data has to be got from every user of a room + // or even of the system. + virtual void get_data( map_string *p_map_data ); + + virtual bool get_online(); + virtual void set_online( bool b_online ); + virtual room* get_p_room(); + virtual void set_p_room( room* p_room ); + virtual int get_sock ( ); + virtual void set_sock ( int i_sock ); + + // executes a command. + virtual void command( string &s_command ); + + // gets the message and clears s_mess; + virtual string get_mess(); + + // actualizes the user's timestamp. + virtual void renew_stamp(); + + // Here are starting methods which are mainly needed by the data<type> class. + + // appends a string to s_mess including br. + virtual void msg_post( string *p_msg ); + virtual void get_user_list( string &s_list, string &s_seperator ); +}; + +#endif |
