X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=version2%2Fsrc%2FC%2FNewKey.cpp;fp=version2%2Fsrc%2FC%2FNewKey.cpp;h=0b35933b85750ba375414a8b18a64be8987c4559;hb=786e40250f31eff04eec25bbcaae3cd916fedb14;hp=0000000000000000000000000000000000000000;hpb=3f24bffc82ebfe2730308b63100af08645316577;p=iotcloud.git diff --git a/version2/src/C/NewKey.cpp b/version2/src/C/NewKey.cpp new file mode 100644 index 0000000..0b35933 --- /dev/null +++ b/version2/src/C/NewKey.cpp @@ -0,0 +1,37 @@ +#include "NewKey.h" +#include "ByteBuffer.h" +#include "IoTString.h" + +NewKey::NewKey(Slot *slot, IoTString *_key, int64_t _machineid) : + Entry(slot), + key(new IoTString(_key)), + machineid(_machineid) { +} + +NewKey::~NewKey() { + delete key; +} + +Entry *NewKey_decode(Slot *slot, ByteBuffer *bb) { + int keylength = bb->getInt(); + Array *key = new Array(keylength); + bb->get(key); + int64_t machineid = bb->getLong(); + IoTString *str = IoTString_shallow(key); + NewKey *newkey = new NewKey(slot, str, machineid); + delete str; + return newkey; +} + +Entry *NewKey::getCopy(Slot *s) { return new NewKey(s, key, machineid); } + +void NewKey::encode(ByteBuffer *bb) { + bb->put(TypeNewKey); + bb->putInt(key->length()); + bb->put(key->internalBytes()); + bb->putLong(machineid); +} + +int NewKey::getSize() { + return sizeof(int64_t) + sizeof(char) + sizeof(int32_t) + key->length(); +}