Fixing initialization to just create a table on the cloud side.
[iotcloud.git] / version2 / src / C / RejectedMessage.cpp
1 #include "RejectedMessage.h"
2 #include "ByteBuffer.h"
3
4 /**
5  * Entry for tracking messages that the server rejected.  We have to
6  * make sure that all clients know that this message was rejected to
7  * prevent the server from reusing these messages in an attack.
8  * @author Brian Demsky
9  * @version 1.0
10  */
11
12 Entry *RejectedMessage_decode(Slot *slot, ByteBuffer *bb) {
13         int64_t sequencenum = bb->getLong();
14         int64_t machineid = bb->getLong();
15         int64_t oldseqnum = bb->getLong();
16         int64_t newseqnum = bb->getLong();
17         char equalto = bb->get();
18         return new RejectedMessage(slot,sequencenum, machineid, oldseqnum, newseqnum, equalto == 1);
19 }
20
21 RejectedMessage::~RejectedMessage() {
22         if (watchset != NULL)
23                 delete watchset;
24 }
25
26 void RejectedMessage::removeWatcher(int64_t machineid) {
27         if (watchset->remove(machineid))
28                 if (watchset->isEmpty())
29                         setDead();
30 }
31
32 void RejectedMessage::encode(ByteBuffer *bb) {
33         bb->put(TypeRejectedMessage);
34         bb->putLong(sequencenum);
35         bb->putLong(machineid);
36         bb->putLong(oldseqnum);
37         bb->putLong(newseqnum);
38         bb->put(equalto ? (char)1 : (char)0);
39 }