/*
- * Copyright (c) 2002-2004 The Regents of The University of Michigan
+ * Copyright (c) 2002-2005 The Regents of The University of Michigan
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
class PacketData : public RefCounted
{
public:
+ /*
+ * Pointer to packet data will be deleted
+ */
uint8_t *data;
+
+ /*
+ * Length of the current packet
+ */
int length;
+ /*
+ * Extra space taken up by the packet in whatever data structure
+ * it is in.
+ *
+ * NOTE: This can only be use by *one* data structure at a time!
+ */
+ int slack;
+
public:
- PacketData() : data(NULL), length(0) { }
- PacketData(std::auto_ptr<uint8_t> d, int l)
- : data(d.release()), length(l) { }
+ PacketData() : data(NULL), length(0), slack(0) { }
+ explicit PacketData(size_t size)
+ : data(new uint8_t[size]), length(0), slack(0) { }
+ PacketData(std::auto_ptr<uint8_t> d, int l, int s = 0)
+ : data(d.release()), length(l), slack(s) { }
~PacketData() { if (data) delete [] data; }
public:
- void serialize(std::ostream &os);
- void unserialize(Checkpoint *cp, const std::string §ion);
+ void serialize(const std::string &base, std::ostream &os);
+ void unserialize(const std::string &base, Checkpoint *cp,
+ const std::string §ion);
};
typedef RefCountingPtr<PacketData> PacketPtr;