edits
[iotcloud.git] / version2 / src / C / RejectedMessage.cc
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 void RejectedMessage::removeWatcher(int64_t machineid) {
22         if (watchset->remove(machineid))
23                 if (watchset->isEmpty())
24                         setDead();
25 }
26
27 void RejectedMessage::encode(ByteBuffer *bb) {
28         bb->put(TypeRejectedMessage);
29         bb->putLong(sequencenum);
30         bb->putLong(machineid);
31         bb->putLong(oldseqnum);
32         bb->putLong(newseqnum);
33         bb->put(equalto ? (char)1 : (char)0);
34 }