00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef ICBMCOOKIECACHE_H
00023 #define ICBMCOOKIECACHE_H
00024
00025 #include <libicq2000/Cache.h>
00026 #include <libicq2000/ICBMCookie.h>
00027 #include <libicq2000/events.h>
00028
00029 #include <sigc++/signal_system.h>
00030
00031 namespace ICQ2000 {
00032
00033 class ICBMCookieCache : public Cache<ICBMCookie, MessageEvent*> {
00034 public:
00035 ICBMCookieCache() { }
00036 ~ICBMCookieCache()
00037 {
00038 removeAll();
00039 }
00040
00041 void removeItem(const ICBMCookieCache::literator& l) {
00042 delete ((*l).getValue());
00043 Cache<ICBMCookie, MessageEvent*>::removeItem(l);
00044 }
00045
00046 void expireItem(const ICBMCookieCache::literator& l) {
00047 expired.emit( (*l).getValue() );
00048 Cache<ICBMCookie, MessageEvent*>::expireItem(l);
00049 }
00050
00051 ICBMCookie generateUnique() const {
00052 ICBMCookie c;
00053 c.generate();
00054 while (exists(c)) c.generate();
00055 return c;
00056 }
00057
00058 SigC::Signal1<void,MessageEvent*> expired;
00059
00060 };
00061 }
00062
00063 #endif