add makefile
[iotcloud.git] / src / java / iotcloud / RejectedMessage.java
index 6a080b71a964c2de73df4ba9e81b729cae6112a1..44059bfec10175d7d8de7bd30fdcd9976427149c 100644 (file)
@@ -3,30 +3,55 @@ import java.nio.ByteBuffer;
 
 class RejectedMessage extends Entry {
        private long machineid;
-       private long seqnum;
-       private boolean equalto;
+       private long oldseqnum;//Oldest seqnum in range
+       private long newseqnum;//Newest seqnum in range (inclusive)
+       private boolean equalto;//Is message sent or not sent by machineid
 
-       RejectedMessage(long _machineid, long _seqnum, boolean _equalto) {
+       RejectedMessage(Slot slot, long _machineid, long _oldseqnum, long _newseqnum, boolean _equalto) {
+               super(slot);
                machineid=_machineid;
-               seqnum=_seqnum;
+               oldseqnum=_oldseqnum;
+               newseqnum=_newseqnum;
                equalto=_equalto;
        }
+
+       long getOldSeqNum() {
+               return oldseqnum;
+       }
+
+       long getNewSeqNum() {
+               return newseqnum;
+       }
+
+       boolean getEqual() {
+               return equalto;
+       }
+
+       long getMachineID() {
+               return machineid;
+       }
        
-       static Entry decode(ByteBuffer bb) {
+       static Entry decode(Slot slot, ByteBuffer bb) {
                long machineid=bb.getLong();
-               long seqnum=bb.getLong();
+               long oldseqnum=bb.getLong();
+               long newseqnum=bb.getLong();
                byte equalto=bb.get();
-               return new RejectedMessage(machineid, seqnum, equalto==1);
+               return new RejectedMessage(slot, machineid, oldseqnum, newseqnum, equalto==1);
        }
        
        void encode(ByteBuffer bb) {
                bb.put(Entry.TypeRejectedMessage);
                bb.putLong(machineid);
-               bb.putLong(seqnum);
+               bb.putLong(oldseqnum);
+               bb.putLong(newseqnum);
                bb.put(equalto?(byte)1:(byte)0);
        }
        
        int getSize() {
-               return 2*Long.BYTES + 2*Byte.BYTES;
+               return 3*Long.BYTES + 2*Byte.BYTES;
+       }
+
+       byte getType() {
+               return Entry.TypeRejectedMessage;
        }
 }