--- /dev/null
+#include "RejectedMessage.h"
+#include "ByteBuffer.h"
+
+/**
+ * Entry for tracking messages that the server rejected. We have to
+ * make sure that all clients know that this message was rejected to
+ * prevent the server from reusing these messages in an attack.
+ * @author Brian Demsky
+ * @version 1.0
+ */
+
+Entry *RejectedMessage_decode(Slot *slot, ByteBuffer *bb) {
+ int64_t sequencenum = bb->getLong();
+ int64_t machineid = bb->getLong();
+ int64_t oldseqnum = bb->getLong();
+ int64_t newseqnum = bb->getLong();
+ char equalto = bb->get();
+ return new RejectedMessage(slot,sequencenum, machineid, oldseqnum, newseqnum, equalto == 1);
+}
+
+RejectedMessage::~RejectedMessage() {
+ if (watchset != NULL)
+ delete watchset;
+}
+
+void RejectedMessage::removeWatcher(int64_t machineid) {
+ if (watchset->remove(machineid))
+ if (watchset->isEmpty())
+ setDead();
+}
+
+void RejectedMessage::encode(ByteBuffer *bb) {
+ bb->put(TypeRejectedMessage);
+ bb->putLong(sequencenum);
+ bb->putLong(machineid);
+ bb->putLong(oldseqnum);
+ bb->putLong(newseqnum);
+ bb->put(equalto ? (char)1 : (char)0);
+}