mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
serialization compiles.
Not entirely sure if it works too...
This commit is contained in:
parent
ac0e211c6c
commit
a37ffab0ea
7 changed files with 89 additions and 4 deletions
|
@ -10,7 +10,10 @@
|
||||||
*/
|
*/
|
||||||
#define conf .95
|
#define conf .95
|
||||||
|
|
||||||
|
class CardinalityVal;
|
||||||
|
|
||||||
class CardinalityCounter {
|
class CardinalityCounter {
|
||||||
|
friend class CardinalityVal;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
#include "OpaqueVal.h"
|
#include "OpaqueVal.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "Serializer.h"
|
#include "Serializer.h"
|
||||||
|
#include "HyperLogLog.h"
|
||||||
|
|
||||||
|
|
||||||
CardinalityVal::CardinalityVal()
|
CardinalityVal::CardinalityVal() : OpaqueVal(new OpaqueType("cardinality"))
|
||||||
{
|
{
|
||||||
valid = false;
|
valid = false;
|
||||||
}
|
}
|
||||||
|
@ -14,6 +15,49 @@ CardinalityVal::~CardinalityVal()
|
||||||
delete c;
|
delete c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IMPLEMENT_SERIAL(CardinalityVal, SER_CARDINALITY_VAL);
|
||||||
|
|
||||||
|
bool CardinalityVal::DoSerialize(SerialInfo* info) const
|
||||||
|
{
|
||||||
|
DO_SERIALIZE(SER_CARDINALITY_VAL, OpaqueVal);
|
||||||
|
|
||||||
|
if ( ! IsValid() )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
assert(c);
|
||||||
|
|
||||||
|
bool valid = true;
|
||||||
|
|
||||||
|
valid &= SERIALIZE(c->m);
|
||||||
|
for ( int i = 0; i < c->m; i++ )
|
||||||
|
{
|
||||||
|
valid &= SERIALIZE(c->buckets[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CardinalityVal::DoUnserialize(UnserialInfo* info)
|
||||||
|
{
|
||||||
|
DO_UNSERIALIZE(OpaqueVal);
|
||||||
|
|
||||||
|
if ( ! IsValid() )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
uint64_t m;
|
||||||
|
bool valid = UNSERIALIZE(&m);
|
||||||
|
|
||||||
|
c = new CardinalityCounter(m);
|
||||||
|
uint8_t* buckets = c->buckets;
|
||||||
|
for ( int i = 0; i < m; i++ )
|
||||||
|
{
|
||||||
|
uint8_t* currbucket = buckets + i;
|
||||||
|
valid &= UNSERIALIZE( currbucket );
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
|
||||||
bool CardinalityVal::Init(CardinalityCounter* arg_c)
|
bool CardinalityVal::Init(CardinalityCounter* arg_c)
|
||||||
{
|
{
|
||||||
if ( valid )
|
if ( valid )
|
||||||
|
|
|
@ -11,17 +11,17 @@ class CardinalityCounter;
|
||||||
|
|
||||||
class CardinalityVal: public OpaqueVal {
|
class CardinalityVal: public OpaqueVal {
|
||||||
public:
|
public:
|
||||||
CardinalityVal();
|
|
||||||
~CardinalityVal();
|
|
||||||
bool Init(CardinalityCounter*);
|
bool Init(CardinalityCounter*);
|
||||||
bool IsValid() const { return valid; };
|
bool IsValid() const { return valid; };
|
||||||
CardinalityCounter* Get() { return c; };
|
CardinalityCounter* Get() { return c; };
|
||||||
|
CardinalityVal();
|
||||||
|
~CardinalityVal();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool valid;
|
bool valid;
|
||||||
CardinalityCounter* c;
|
CardinalityCounter* c;
|
||||||
|
|
||||||
// DECLARE_SERIAL(CardinalityVal); Fixme?
|
DECLARE_SERIAL(CardinalityVal);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,7 @@ SERIAL_VAL(MD5_VAL, 16)
|
||||||
SERIAL_VAL(SHA1_VAL, 17)
|
SERIAL_VAL(SHA1_VAL, 17)
|
||||||
SERIAL_VAL(SHA256_VAL, 18)
|
SERIAL_VAL(SHA256_VAL, 18)
|
||||||
SERIAL_VAL(ENTROPY_VAL, 19)
|
SERIAL_VAL(ENTROPY_VAL, 19)
|
||||||
|
SERIAL_VAL(CARDINALITY_VAL, 20)
|
||||||
|
|
||||||
#define SERIAL_EXPR(name, val) SERIAL_CONST(name, val, EXPR)
|
#define SERIAL_EXPR(name, val) SERIAL_CONST(name, val, EXPR)
|
||||||
SERIAL_EXPR(EXPR, 1)
|
SERIAL_EXPR(EXPR, 1)
|
||||||
|
|
|
@ -107,6 +107,16 @@ bool BinarySerializationFormat::Read(int* v, const char* tag)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BinarySerializationFormat::Read(uint8* v, const char* tag)
|
||||||
|
{
|
||||||
|
if ( ! ReadData(v, sizeof(*v)) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*v = ntohs(*v);
|
||||||
|
DBG_LOG(DBG_SERIAL, "Read uint8 %hu [%s]", *v, tag);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool BinarySerializationFormat::Read(uint16* v, const char* tag)
|
bool BinarySerializationFormat::Read(uint16* v, const char* tag)
|
||||||
{
|
{
|
||||||
if ( ! ReadData(v, sizeof(*v)) )
|
if ( ! ReadData(v, sizeof(*v)) )
|
||||||
|
@ -301,6 +311,13 @@ bool BinarySerializationFormat::Write(char v, const char* tag)
|
||||||
return WriteData(&v, 1);
|
return WriteData(&v, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BinarySerializationFormat::Write(uint8 v, const char* tag)
|
||||||
|
{
|
||||||
|
DBG_LOG(DBG_SERIAL, "Write uint8 %hu [%s]", v, tag);
|
||||||
|
v = htons(v);
|
||||||
|
return WriteData(&v, sizeof(v));
|
||||||
|
}
|
||||||
|
|
||||||
bool BinarySerializationFormat::Write(uint16 v, const char* tag)
|
bool BinarySerializationFormat::Write(uint16 v, const char* tag)
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_SERIAL, "Write uint16 %hu [%s]", v, tag);
|
DBG_LOG(DBG_SERIAL, "Write uint16 %hu [%s]", v, tag);
|
||||||
|
@ -447,6 +464,12 @@ bool XMLSerializationFormat::Read(int* v, const char* tag)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool XMLSerializationFormat::Read(uint8* v, const char* tag)
|
||||||
|
{
|
||||||
|
reporter->InternalError("no reading of xml");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool XMLSerializationFormat::Read(uint16* v, const char* tag)
|
bool XMLSerializationFormat::Read(uint16* v, const char* tag)
|
||||||
{
|
{
|
||||||
reporter->InternalError("no reading of xml");
|
reporter->InternalError("no reading of xml");
|
||||||
|
@ -530,6 +553,13 @@ bool XMLSerializationFormat::Write(char v, const char* tag)
|
||||||
return WriteElem(tag, "char", &v, 1);
|
return WriteElem(tag, "char", &v, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool XMLSerializationFormat::Write(uint8 v, const char* tag)
|
||||||
|
{
|
||||||
|
const char* tmp = fmt("%" PRIu8, v);
|
||||||
|
return WriteElem(tag, "uint8", tmp, strlen(tmp));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool XMLSerializationFormat::Write(uint16 v, const char* tag)
|
bool XMLSerializationFormat::Write(uint16 v, const char* tag)
|
||||||
{
|
{
|
||||||
const char* tmp = fmt("%" PRIu16, v);
|
const char* tmp = fmt("%" PRIu16, v);
|
||||||
|
|
|
@ -23,6 +23,7 @@ public:
|
||||||
virtual void EndRead();
|
virtual void EndRead();
|
||||||
|
|
||||||
virtual bool Read(int* v, const char* tag) = 0;
|
virtual bool Read(int* v, const char* tag) = 0;
|
||||||
|
virtual bool Read(uint8* v, const char* tag) = 0;
|
||||||
virtual bool Read(uint16* v, const char* tag) = 0;
|
virtual bool Read(uint16* v, const char* tag) = 0;
|
||||||
virtual bool Read(uint32* v, const char* tag) = 0;
|
virtual bool Read(uint32* v, const char* tag) = 0;
|
||||||
virtual bool Read(int64* v, const char* tag) = 0;
|
virtual bool Read(int64* v, const char* tag) = 0;
|
||||||
|
@ -47,6 +48,7 @@ public:
|
||||||
virtual uint32 EndWrite(char** data); // passes ownership
|
virtual uint32 EndWrite(char** data); // passes ownership
|
||||||
|
|
||||||
virtual bool Write(int v, const char* tag) = 0;
|
virtual bool Write(int v, const char* tag) = 0;
|
||||||
|
virtual bool Write(uint8 v, const char* tag) = 0;
|
||||||
virtual bool Write(uint16 v, const char* tag) = 0;
|
virtual bool Write(uint16 v, const char* tag) = 0;
|
||||||
virtual bool Write(uint32 v, const char* tag) = 0;
|
virtual bool Write(uint32 v, const char* tag) = 0;
|
||||||
virtual bool Write(int64 v, const char* tag) = 0;
|
virtual bool Write(int64 v, const char* tag) = 0;
|
||||||
|
@ -92,6 +94,7 @@ public:
|
||||||
virtual ~BinarySerializationFormat();
|
virtual ~BinarySerializationFormat();
|
||||||
|
|
||||||
virtual bool Read(int* v, const char* tag);
|
virtual bool Read(int* v, const char* tag);
|
||||||
|
virtual bool Read(uint8* v, const char* tag);
|
||||||
virtual bool Read(uint16* v, const char* tag);
|
virtual bool Read(uint16* v, const char* tag);
|
||||||
virtual bool Read(uint32* v, const char* tag);
|
virtual bool Read(uint32* v, const char* tag);
|
||||||
virtual bool Read(int64* v, const char* tag);
|
virtual bool Read(int64* v, const char* tag);
|
||||||
|
@ -106,6 +109,7 @@ public:
|
||||||
virtual bool Read(struct in_addr* addr, const char* tag);
|
virtual bool Read(struct in_addr* addr, const char* tag);
|
||||||
virtual bool Read(struct in6_addr* addr, const char* tag);
|
virtual bool Read(struct in6_addr* addr, const char* tag);
|
||||||
virtual bool Write(int v, const char* tag);
|
virtual bool Write(int v, const char* tag);
|
||||||
|
virtual bool Write(uint8 v, const char* tag);
|
||||||
virtual bool Write(uint16 v, const char* tag);
|
virtual bool Write(uint16 v, const char* tag);
|
||||||
virtual bool Write(uint32 v, const char* tag);
|
virtual bool Write(uint32 v, const char* tag);
|
||||||
virtual bool Write(int64 v, const char* tag);
|
virtual bool Write(int64 v, const char* tag);
|
||||||
|
@ -132,6 +136,7 @@ public:
|
||||||
|
|
||||||
// We don't write anything if tag is nil.
|
// We don't write anything if tag is nil.
|
||||||
virtual bool Write(int v, const char* tag);
|
virtual bool Write(int v, const char* tag);
|
||||||
|
virtual bool Write(uint8 v, const char* tag);
|
||||||
virtual bool Write(uint16 v, const char* tag);
|
virtual bool Write(uint16 v, const char* tag);
|
||||||
virtual bool Write(uint32 v, const char* tag);
|
virtual bool Write(uint32 v, const char* tag);
|
||||||
virtual bool Write(int64 v, const char* tag);
|
virtual bool Write(int64 v, const char* tag);
|
||||||
|
@ -152,6 +157,7 @@ public:
|
||||||
|
|
||||||
// Not implemented.
|
// Not implemented.
|
||||||
virtual bool Read(int* v, const char* tag);
|
virtual bool Read(int* v, const char* tag);
|
||||||
|
virtual bool Read(uint8* v, const char* tag);
|
||||||
virtual bool Read(uint16* v, const char* tag);
|
virtual bool Read(uint16* v, const char* tag);
|
||||||
virtual bool Read(uint32* v, const char* tag);
|
virtual bool Read(uint32* v, const char* tag);
|
||||||
virtual bool Read(int64* v, const char* tag);
|
virtual bool Read(int64* v, const char* tag);
|
||||||
|
|
|
@ -54,6 +54,7 @@ public:
|
||||||
DECLARE_WRITE(type)
|
DECLARE_WRITE(type)
|
||||||
|
|
||||||
DECLARE_IO(int)
|
DECLARE_IO(int)
|
||||||
|
DECLARE_IO(uint8)
|
||||||
DECLARE_IO(uint16)
|
DECLARE_IO(uint16)
|
||||||
DECLARE_IO(uint32)
|
DECLARE_IO(uint32)
|
||||||
DECLARE_IO(int64)
|
DECLARE_IO(int64)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue