|
Boost Users : |
From: bert hubert (bert.hubert_at_[hidden])
Date: 2006-04-28 03:11:08
Hi,
I misread (or didn't read) the boost::multi_index_container documentation
and assumed 'insert' on a unique index would do 'replace', but of course it
doesn't and shouldn't.
So, I've made this change:
- s_negcache.insert(ne);
+
+ pair<negcache_t::iterator, bool> res=s_negcache.insert(ne);
+ if(!res.second) {
+ s_negcache.erase(res.first);
+ s_negcache.insert(ne);
+ }
But I can't help feeling there is probably a better and prettier way. Do
people have any suggestions?
In this case, ne is a NegCacheEntry, defined as:
struct NegCacheEntry
{
string d_name;
QType d_qtype;
string d_qname;
uint32_t d_ttd;
};
And the index:
typedef multi_index_container <
NegCacheEntry,
indexed_by <
ordered_unique<
composite_key<
NegCacheEntry,
member<NegCacheEntry, string, &NegCacheEntry::d_name>,
member<NegCacheEntry, QType, &NegCacheEntry::d_qtype>
>,
composite_key_compare<CIStringCompare, std::less<QType> >
>,
ordered_non_unique<
member<NegCacheEntry, uint32_t, &NegCacheEntry::d_ttd>
>
>
>negcache_t;
Thanks!
-- http://www.PowerDNS.com Open source, database driven DNS Software http://netherlabs.nl Open and Closed source services
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net