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 using SigC::Signal1;
00032
00033 namespace ICQ2000 {
00034
00035 class ICBMCookieCache : public Cache<ICBMCookie, MessageEvent*> {
00036 public:
00037 ICBMCookieCache() { }
00038
00039 void removeItem(const ICBMCookieCache::literator& l) {
00040 delete ((*l).getValue());
00041 Cache<ICBMCookie, MessageEvent*>::removeItem(l);
00042 }
00043
00044 void expireItem(const ICBMCookieCache::literator& l) {
00045 expired.emit( (*l).getValue() );
00046 Cache<ICBMCookie, MessageEvent*>::expireItem(l);
00047 }
00048
00049 ICBMCookie generateUnique() const {
00050 ICBMCookie c;
00051 c.generate();
00052 while (exists(c)) c.generate();
00053 return c;
00054 }
00055
00056 Signal1<void,MessageEvent*> expired;
00057
00058 };
00059 }
00060
00061 #endif