Changeset 15630
- Timestamp:
- 2008-05-22T12:58:14+12:00 (16 years ago)
- Location:
- gsdl/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
gsdl/trunk/lib/dbclass.h
r15598 r15630 69 69 virtual bool setinfo(const text_t &key, const infodbclass &info) = 0; 70 70 71 // getfirstkey and getnextkey are used for traversing the database 72 // no insertions or deletions should be carried out while traversing 73 // the database. when there are no keys left to visit in the database 74 // an empty string is returned. 75 virtual text_t getfirstkey() = 0; 76 virtual text_t getnextkey(const text_t &key) = 0; 71 virtual text_tarray getkeys () = 0; 77 72 78 73 virtual void deletekey(const text_t &key) = 0; -
gsdl/trunk/lib/gdbmclass.cpp
r15598 r15630 239 239 240 240 241 text_tarray gdbmclass::getkeys () 242 { 243 text_tarray keys; 244 245 text_t key = getfirstkey(); 246 while (!key.empty()) 247 { 248 keys.push_back(key); 249 key = getnextkey(key); 250 } 251 252 return keys; 253 } 254 255 241 256 // getfirstkey and getnextkey are used for traversing the database 242 257 // no insertions or deletions should be carried out while traversing -
gsdl/trunk/lib/gdbmclass.h
r15598 r15630 73 73 void deletekey (const text_t &key); 74 74 75 // getfirstkey and getnextkey are used for traversing the database 76 // no insertions or deletions should be carried out while traversing 77 // the database. when there are no keys left to visit in the database 78 // an empty string is returned. 79 text_t getfirstkey (); 80 text_t getnextkey (const text_t &key); 75 text_tarray getkeys (); 81 76 82 77 // returns true on success … … 87 82 GDBM_FILE gdbmfile; 88 83 84 // getfirstkey and getnextkey are used for traversing the database 85 // no insertions or deletions should be carried out while traversing 86 // the database. when there are no keys left to visit in the database 87 // an empty string is returned. 88 text_t getfirstkey (); 89 text_t getnextkey (const text_t &key); 90 89 91 // returns true on success 90 92 bool getinfoline (text_t::iterator &here, text_t::iterator end, -
gsdl/trunk/src/recpt/userdb.cpp
r15586 r15630 332 332 { 333 333 userinfo_array.erase(userinfo_array.begin(), userinfo_array.end()); 334 text_t user = userdb->getfirstkey(); 335 while (!user.empty()) { 334 text_tarray userlist = userdb->getkeys(); 335 text_tarray::iterator user_iterator = userlist.begin(); 336 while (user_iterator != userlist.end()) 337 { 336 338 userinfo_t one_userinfo; 337 int returned = get_user_info( user, one_userinfo);339 int returned = get_user_info(*user_iterator, one_userinfo); 338 340 if (returned != ERRNO_SUCCEED) return returned; 339 341 userinfo_array.push_back(one_userinfo); 340 user = userdb->getnextkey(user);342 user_iterator++; 341 343 } 342 344 return ERRNO_SUCCEED; … … 353 355 { 354 356 userlist.erase (userlist.begin(), userlist.end()); 355 356 text_t user = userdb->getfirstkey (); 357 while (!user.empty()) { 358 userlist.push_back(user); 359 user = userdb->getnextkey (user); 360 } 357 userlist = userdb->getkeys(); 361 358 return ERRNO_SUCCEED; 362 359 } … … 490 487 // get a list of keys created more than keydecay seconds agon 491 488 text_tarray oldkeys; 492 text_t key = keydb->getfirstkey ();493 489 infodbclass info; 494 490 time_t timenow = text2time(time2text(time(NULL))); 495 491 time_t keycreation = (time_t)-1; 496 while (!key.empty()) { 497 if (keydb->getinfo (key, info)) { 492 493 text_tarray keylist = keydb->getkeys(); 494 text_tarray::iterator key_iterator = keylist.begin(); 495 while (key_iterator != keylist.end()) 496 { 497 if (keydb->getinfo (*key_iterator, info)) { 498 498 keycreation = text2time (info["time"]); 499 499 if (keycreation != (time_t)-1 && difftime (timenow, keycreation) > keydecay) { 500 500 // found an old key 501 oldkeys.push_back( key);501 oldkeys.push_back(*key_iterator); 502 502 } 503 503 } 504 504 505 key = keydb->getnextkey (key);505 key_iterator++; 506 506 } 507 507
Note:
See TracChangeset
for help on using the changeset viewer.