diff options
Diffstat (limited to 'src/data/data_base.cpp')
| -rw-r--r-- | src/data/data_base.cpp | 151 |
1 files changed, 94 insertions, 57 deletions
diff --git a/src/data/data_base.cpp b/src/data/data_base.cpp index 61fc141..2cbe070 100644 --- a/src/data/data_base.cpp +++ b/src/data/data_base.cpp @@ -15,39 +15,40 @@ data_base::data_base( ) // Reads all DATA_ elements of conf.txt! for ( iter = vec_keys.begin(); iter != vec_keys.end(); iter++ ) - { - if ( iter->length() > 20 - && iter->compare(0, 19, "chat.database.mysql") == 0 - && iter->find(".descr") == string::npos ) { - vector<string> vec_tokens; - string s_element = wrap::CONF->get_elem(*iter); - unsigned i_pos = 0; - - for ( bool b_find = 1; b_find; ) - { - i_pos = s_element.find_first_of( " ", 0 ); - - if ( i_pos != string::npos ) + if ( iter->length() > 20 + && iter->compare(0, 19, "chat.database.mysql") == 0 + && iter->find(".descr") == string::npos ) { - vec_tokens.push_back( s_element.substr(0, i_pos) ); - s_element = s_element.substr( i_pos+1 ); + vector<string> vec_tokens; + string s_element = wrap::CONF->get_elem(*iter); + unsigned i_pos = 0; + + for ( bool b_find = 1; b_find; ) + { + i_pos = s_element.find_first_of( " ", 0 ); + + if ( i_pos != string::npos ) + { + vec_tokens.push_back( s_element.substr(0, i_pos) ); + s_element = s_element.substr( i_pos+1 ); + } + + else + { + vec_tokens.push_back( s_element ); + b_find = 0; + } + } + + string s_mysqlquery = iter->substr(20); + wrap::system_message(MYSQLQ2 + s_mysqlquery); + map_queries[s_mysqlquery] = vec_tokens; } - else - { - vec_tokens.push_back( s_element ); - b_find = 0; - } - } - - string s_mysqlquery = iter->substr(20); - wrap::system_message(MYSQLQ2 + s_mysqlquery); - map_queries[s_mysqlquery] = vec_tokens; } - } } -void data_base::init_connections() +void data_base::initialize_connections() { int i_min_con = tool::string2int( wrap::CONF->get_elem("chat.database.mincon") ), i_max_con = tool::string2int( wrap::CONF->get_elem("chat.database.maxcon") ); @@ -57,6 +58,11 @@ void data_base::init_connections() for ( int i = 0; i < i_min_con && i < i_max_con; i++ ) push_back( new con() ); + +#ifdef NCURSES + + print_queue_size(); +#endif } data_base::~data_base() @@ -64,23 +70,23 @@ data_base::~data_base() pthread_mutex_destroy ( &mut_con ); } -hashmap<string> +map<string,string> data_base::select_user_data( string s_user, string s_query) { print_query( DATAQUE + s_query ); - hashmap<string> map_ret; + map<string,string> map_ret; return map_ret; } void -data_base::insert_user_data( string s_user, string s_query, hashmap<string> insert_map ) +data_base::insert_user_data( string s_user, string s_query, map<string,string> insert_map ) { print_query( DATAQUE + s_query ); } void -data_base::update_user_data( string s_user, string s_query, hashmap<string> update_map ) +data_base::update_user_data( string s_user, string s_query, map<string,string> update_map ) { print_query( DATAQUE + s_query ); } @@ -107,23 +113,29 @@ data_base::get_con() pthread_mutex_lock( &mut_con ); if ( empty() ) - { - wrap::system_message( DATANEW + string("(") + tool::int2string(size()+1) + ")" ); - pthread_mutex_unlock( &mut_con ); - return new con; - } + { + wrap::system_message( DATANEW + string("(") + tool::int2string(size()+1) + ")" ); + pthread_mutex_unlock( &mut_con ); + return new con; + } + else if ( size() > i_max_con-1 ) - { - wrap::system_message( DATAMAX + string("(") + tool::int2string(i_max_con) + ")" ); - usleep( 5000000 ); - pthread_mutex_unlock( &mut_con ); - return get_con(); - } + { + wrap::system_message( DATAMAX + string("(") + tool::int2string(i_max_con) + ")" ); + usleep( 5000000 ); + pthread_mutex_unlock( &mut_con ); + return get_con(); + } con* p_con = *begin(); pop_front(); +#ifdef NCURSES + + print_queue_size(); +#endif + pthread_mutex_unlock( &mut_con ); wrap::system_message( DATAGET ); @@ -136,11 +148,27 @@ data_base::push_con( con* p_con ) { pthread_mutex_lock( &mut_con ); push_front( p_con ); +#ifdef NCURSES + + print_queue_size(); +#endif pthread_mutex_unlock( &mut_con ); wrap::system_message( DATAADD ); } +#ifdef NCURSES +void +data_base::print_queue_size() +{ + if ( wrap::NCUR->is_ready() ) + { + mvprintw( NCUR_CON_QUEUE_X,NCUR_CON_QUEUE_Y, "Con. queue: %d ", size()); + refresh(); + } +} +#endif + void data_base::disconnect_all_connections() { @@ -148,13 +176,17 @@ data_base::disconnect_all_connections() pthread_mutex_lock( &mut_con ); while ( !empty() ) - { - con* p_con = *begin(); - pop_front(); - delete p_con; - } + { + con* p_con = *begin(); + pop_front(); + delete p_con; + } pthread_mutex_unlock( &mut_con ); +#ifdef NCURSES + + print_queue_size(); +#endif } void @@ -168,22 +200,27 @@ data_base::check_data_con_timeout() list< list<con*>::iterator > erase_list; for ( list<con*>::iterator iter = begin(); iter != end(); iter++ ) - { - i_last_activity = (int) (*iter)->get_last_activity(); - if ( i_timeout_time <= i_last_activity ) { - con* p_con = *iter; - erase_list.push_back(iter); - delete p_con; - wrap::system_message(DATADI2 + tool::int2string(size()-erase_list.size()+1) + "," - + tool::int2string(i_timeout_time) + "," - + tool::int2string(i_last_activity) + ")"); + i_last_activity = (int) (*iter)->get_last_activity(); + if ( i_timeout_time <= i_last_activity ) + { + con* p_con = *iter; + erase_list.push_back(iter); + delete p_con; + wrap::system_message(DATADI2 + tool::int2string(size()-erase_list.size()+1) + "," + + tool::int2string(i_timeout_time) + "," + + tool::int2string(i_last_activity) + ")"); + } } - } for ( list< list<con*>::iterator >::iterator erase_iter = erase_list.begin(); erase_iter != erase_list.end(); erase_iter++ ) erase( *erase_iter ); +#ifdef NCURSES + + print_queue_size(); +#endif + pthread_mutex_unlock( &mut_con ); } |
