edits
[iotcloud.git] / version2 / src / C / NewKey.cc
1 #include "NewKey.h"
2 #include "ByteBuffer.h"
3 #include "IoTString.h"
4
5 NewKey::NewKey(Slot *slot, IoTString *_key, int64_t _machineid) :
6         Entry(slot),
7         key(new IoTString(_key)),
8         machineid(_machineid) {
9 }
10
11 NewKey::~NewKey() {
12         delete key;
13 }
14
15 Entry *NewKey_decode(Slot *slot, ByteBuffer *bb) {
16         int keylength = bb->getInt();
17         Array<char> *key = new Array<char>(keylength);
18         bb->get(key);
19         int64_t machineid = bb->getLong();
20         IoTString *str = IoTString_shallow(key);
21         NewKey *newkey = new NewKey(slot, str, machineid);
22         delete str;
23         return newkey;
24 }
25
26 Entry *NewKey::getCopy(Slot *s) { return new NewKey(s, new IoTString(key), machineid); }
27
28 void NewKey::encode(ByteBuffer *bb) {
29         bb->put(TypeNewKey);
30         bb->putInt(key->length());
31         bb->put(key->internalBytes());
32         bb->putLong(machineid);
33 }
34
35 int NewKey::getSize() {
36         return sizeof(int64_t) + sizeof(char) + sizeof(int32_t) + key->length();
37 }