A number of tweaks of the serialization code.

This commit is contained in:
Matthias Vallentin 2013-06-10 20:15:13 -07:00
parent 4c21576c12
commit 22afbe42dd
5 changed files with 20 additions and 19 deletions

View file

@ -8,7 +8,7 @@
/**
* A vector of bits.
*/
class BitVector : SerialObj {
class BitVector : public SerialObj {
public:
typedef size_t block_type;
typedef size_t size_type;

View file

@ -55,7 +55,7 @@ IMPLEMENT_SERIAL(CounterVector, SER_COUNTERVECTOR)
bool CounterVector::DoSerialize(SerialInfo* info) const
{
DO_SERIALIZE(SER_COUNTERVECTOR, SerialObj);
if ( ! SERIALIZE(bits_) )
if ( ! bits_->Serialize(info) )
return false;
return SERIALIZE(static_cast<uint64>(width_));
}
@ -63,14 +63,13 @@ bool CounterVector::DoSerialize(SerialInfo* info) const
bool CounterVector::DoUnserialize(UnserialInfo* info)
{
DO_UNSERIALIZE(SerialObj);
return false;
bits_ = BitVector::Unserialize(info);
if ( ! bits_ )
return false;
uint64 width;
if ( ! UNSERIALIZE(&width) )
return false;
width_ = static_cast<unsigned>(width);
width_ = static_cast<size_t>(width);
return true;
}
@ -127,7 +126,7 @@ bool BloomFilter::DoSerialize(SerialInfo* info) const
DO_SERIALIZE(SER_BLOOMFILTER, SerialObj);
if ( ! SERIALIZE(static_cast<uint16>(hash_->K())) )
return false;
return SERIALIZE(static_cast<uint16>(elements_));
return SERIALIZE(static_cast<uint64>(elements_));
}
bool BloomFilter::DoUnserialize(UnserialInfo* info)
@ -178,14 +177,14 @@ IMPLEMENT_SERIAL(BasicBloomFilter, SER_BASICBLOOMFILTER)
bool BasicBloomFilter::DoSerialize(SerialInfo* info) const
{
DO_SERIALIZE(SER_BASICBLOOMFILTER, BloomFilter);
return SERIALIZE(bits_);
return bits_->Serialize(info);
}
bool BasicBloomFilter::DoUnserialize(UnserialInfo* info)
{
DO_UNSERIALIZE(BloomFilter);
bits_ = BitVector::Unserialize(info);
return bits_ == NULL;
return bits_ != NULL;
}
void BasicBloomFilter::AddImpl(const HashPolicy::HashVector& h)
@ -227,15 +226,15 @@ IMPLEMENT_SERIAL(CountingBloomFilter, SER_COUNTINGBLOOMFILTER)
bool CountingBloomFilter::DoSerialize(SerialInfo* info) const
{
DO_SERIALIZE(SER_BASICBLOOMFILTER, BloomFilter);
return SERIALIZE(cells_);
DO_SERIALIZE(SER_COUNTINGBLOOMFILTER, BloomFilter);
return cells_->Serialize(info);
}
bool CountingBloomFilter::DoUnserialize(UnserialInfo* info)
{
DO_UNSERIALIZE(BloomFilter);
cells_ = CounterVector::Unserialize(info);
return cells_ == NULL;
return cells_ != NULL;
}
void CountingBloomFilter::AddImpl(const HashPolicy::HashVector& h)

View file

@ -73,7 +73,7 @@ protected:
private:
BitVector* bits_;
unsigned width_;
size_t width_;
};
/**

View file

@ -574,7 +574,7 @@ size_t BloomFilterVal::Count(const Val* val) const
BloomFilterVal* BloomFilterVal::Merge(const BloomFilterVal* first,
const BloomFilterVal* second)
{
{
assert(! "not yet implemented");
return NULL;
}
@ -594,14 +594,15 @@ IMPLEMENT_SERIAL(BloomFilterVal, SER_BLOOMFILTER_VAL);
bool BloomFilterVal::DoSerialize(SerialInfo* info) const
{
DO_SERIALIZE(SER_BLOOMFILTER_VAL, OpaqueVal);
if ( ! SERIALIZE(type_) )
if ( ! type_->Serialize(info) )
return false;
return SERIALIZE(bloom_filter_);
return bloom_filter_->Serialize(info);
}
bool BloomFilterVal::DoUnserialize(UnserialInfo* info)
{
DO_UNSERIALIZE(OpaqueVal);
type_ = BroType::Unserialize(info);
if ( ! type_ )
return false;
@ -609,6 +610,7 @@ bool BloomFilterVal::DoUnserialize(UnserialInfo* info)
tl->Append(type_);
hash_ = new CompositeHash(tl);
Unref(tl);
bloom_filter_ = BloomFilter::Unserialize(info);
return bloom_filter_ == NULL;
return bloom_filter_ != NULL;
}

View file

@ -50,10 +50,10 @@ SERIAL_IS_BO(CASE, 0x1200)
SERIAL_IS(LOCATION, 0x1300)
SERIAL_IS(RE_MATCHER, 0x1400)
SERIAL_IS(BITVECTOR, 0x1500)
SERIAL_IS(COUNTERVECTOR, 0xa000)
SERIAL_IS(BLOOMFILTER, 0xa100)
SERIAL_IS(BASICBLOOMFILTER, 0xa200)
SERIAL_IS(COUNTINGBLOOMFILTER, 0xa300)
SERIAL_IS(COUNTERVECTOR, 0x1600)
SERIAL_IS(BLOOMFILTER, 0x1700)
SERIAL_IS(BASICBLOOMFILTER, 0x1800)
SERIAL_IS(COUNTINGBLOOMFILTER, 0x1900)
// These are the externally visible types.
const SerialType SER_NONE = 0;