size_t event_manager::get_managed_size(void) { DIR *dirp; std::ostringstream buffer; struct dirent *ent; ifstream f; size_t db_size = 0; dirp = opendir(eventpath.c_str()); if (dirp) { while ( (ent = readdir(dirp)) != NULL ) { string str(ent->d_name); if (is_file_a_log(str)) { buffer.str(""); buffer << eventpath << "/" << str.c_str(); f.open(buffer.str() , ios::in|ios::binary|ios::ate); db_size += f.tellg(); f.close(); } } } closedir(dirp); return (db_size); }
uint16_t event_manager::next_log(void) { std::ostringstream buffer; struct dirent *ent; uint16_t id; if (dirp == NULL) dirp = opendir(eventpath.c_str()); if (dirp) { do { ent = readdir(dirp); if (ent == NULL) break; string str(ent->d_name); if (is_file_a_log(str)) { id = (uint16_t) atoi(str.c_str()); break; } } while( 1 ); } else { cerr << "Error opening directory " << eventpath << endl; ent = NULL; id = 0; } if (ent == NULL) { closedir(dirp); dirp = NULL; } return ((ent == NULL) ? 0 : id); }
bool event_manager::is_logid_a_log(uint16_t logid) { std::ostringstream buffer; buffer << int(logid); return is_file_a_log(buffer.str()); }