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 ~ICBMCookieCache()
00039 {
00040 removeAll();
00041 }
00042
00043 void removeItem(const ICBMCookieCache::literator& l) {
00044 delete ((*l).getValue());
00045 Cache<ICBMCookie, MessageEvent*>::removeItem(l);
00046 }
00047
00048 void expireItem(const ICBMCookieCache::literator& l) {
00049 expired.emit( (*l).getValue() );
00050 Cache<ICBMCookie, MessageEvent*>::expireItem(l);
00051 }
00052
00053 ICBMCookie generateUnique() const {
00054 ICBMCookie c;
00055 c.generate();
00056 while (exists(c)) c.generate();
00057 return c;
00058 }
00059
00060 Signal1<void,MessageEvent*> expired;
00061
00062 };
00063 }
00064
00065 #endif