rename files
[iotcloud.git] / version2 / src / C / NewKey.cpp
diff --git a/version2/src/C/NewKey.cpp b/version2/src/C/NewKey.cpp
new file mode 100644 (file)
index 0000000..0b35933
--- /dev/null
@@ -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<char> *key = new Array<char>(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();
+}