edits
[iotcloud.git] / version2 / src / C / RejectedMessage.h
index bf2c2c4115723051834f7b44ad3d7348270fe411..3816d193eab6c6f2f60118410256ad7c3146ba44 100644 (file)
@@ -1,4 +1,5 @@
-
+#ifndef REJECTEDMESSAGE_H
+#define REJECTEDMESSAGE_H
 /**
  * Entry for tracking messages that the server rejected.  We have to
  * make sure that all clients know that this message was rejected to
@@ -6,92 +7,48 @@
  * @author Brian Demsky
  * @version 1.0
  */
+#include "common.h"
+#include "Entry.h"
 
-
-class RejectedMessage extends Entry {
+class RejectedMessage : public Entry {
+private:
        /* Sequence number */
-       private int64_t sequencenum;
-       
-
+       int64_t sequencenum;
        /* Machine identifier */
-       private int64_t machineid;
+       int64_t machineid;
        /* Oldest sequence number in range */
-       private int64_t oldseqnum;
+       int64_t oldseqnum;
        /* Newest sequence number in range */
-       private int64_t newseqnum;
+       int64_t newseqnum;
        /* Is the machine identifier of the relevant slots equal to (or not
         * equal to) the specified machine identifier. */
-       private bool equalto;
+       bool equalto;
        /* Set of machines that have not received notification. */
-       private HashSet<Long> watchset;
-
-       RejectedMessage(Slot slot, int64_t _sequencenum, int64_t _machineid, int64_t _oldseqnum, int64_t _newseqnum, bool _equalto) {
-               super(slot);
-               sequencenum = _sequencenum;
-               machineid=_machineid;
-               oldseqnum=_oldseqnum;
-               newseqnum=_newseqnum;
-               equalto=_equalto;
-       }
-
-       int64_t getOldSeqNum() {
-               return oldseqnum;
-       }
-
-       int64_t getNewSeqNum() {
-               return newseqnum;
-       }
-
-       bool getEqual() {
-               return equalto;
-       }
-
-       int64_t getMachineID() {
-               return machineid;
-       }
-
-
-       int64_t getSequenceNumber() {
-               return sequencenum;
-       }
-
-       static Entry 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);
-       }
-
-       void setWatchSet(HashSet<Long> _watchset) {
-               watchset=_watchset;
-       }
-
-       void removeWatcher(int64_t machineid) {
-               if (watchset.remove(machineid))
-                       if (watchset.isEmpty())
-                               setDead();
-       }
-
-       void encode(ByteBuffer bb) {
-               bb.put(Entry.TypeRejectedMessage);
-               bb.putLong(sequencenum);
-               bb.putLong(machineid);
-               bb.putLong(oldseqnum);
-               bb.putLong(newseqnum);
-               bb.put(equalto?(char)1:(char)0);
-       }
-
-       int getSize() {
-               return 4*sizeof(int64_t) + 2*sizeof(char);
-       }
-
-       char getType() {
-               return Entry.TypeRejectedMessage;
-       }
-       
-       Entry getCopy(Slot s) {
+       Hashset<int64_t> *watchset;
+
+ public:
+ RejectedMessage(Slot *slot, int64_t _sequencenum, int64_t _machineid, int64_t _oldseqnum, int64_t _newseqnum, bool _equalto) : Entry(slot),
+               sequencenum(_sequencenum),
+               machineid(_machineid),
+               oldseqnum(_oldseqnum),
+               newseqnum(_newseqnum),
+               equalto(_equalto) {
+       }
+
+       int64_t getOldSeqNum() { return oldseqnum; }
+       int64_t getNewSeqNum() { return newseqnum; }
+       bool getEqual() { return equalto; }
+       int64_t getMachineID() { return machineid; }
+       int64_t getSequenceNumber() { return sequencenum; }
+       void setWatchSet(Hashset<int64_t> *_watchset) { watchset = _watchset;  }
+       void removeWatcher(int64_t machineid);
+       void encode(ByteBuffer *bb);
+       int getSize() { return 4 * sizeof(int64_t) + 2 * sizeof(char); }
+       char getType() { return TypeRejectedMessage; }
+       Entry *getCopy(Slot *s) {
                return new RejectedMessage(s,sequencenum, machineid, oldseqnum, newseqnum, equalto);
        }
-}
+};
+
+Entry *RejectedMessage_decode(Slot *slot, ByteBuffer *bb);
+#endif