X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=blobdiff_plain;f=src%2Fjava%2Fiotcloud%2FSlot.java;h=c114a8762c0eba7f83fdfe03178fc89000ffca5a;hp=1d84baad65331227ffaab78c1a89932f35658c53;hb=629534a1b8371f3db00aad1b1495a39711c1f955;hpb=545b7f8a87845edfec385dde0f14191875e4f466 diff --git a/src/java/iotcloud/Slot.java b/src/java/iotcloud/Slot.java index 1d84baa..c114a87 100644 --- a/src/java/iotcloud/Slot.java +++ b/src/java/iotcloud/Slot.java @@ -13,8 +13,6 @@ import java.util.Arrays; class Slot implements Liveness { /** Sets the slot size. */ static final int SLOT_SIZE=2048; - /** Sets how many bytes we reserve. */ - static final int RESERVED_SPACE=64; /** Sets the size for the HMAC. */ static final int HMAC_SIZE=32; @@ -35,8 +33,10 @@ class Slot implements Liveness { private boolean seqnumlive;// /** Number of bytes of free space. */ private int freespace; + /** Reference to Table */ + private Table table; - Slot(long _seqnum, long _machineid, byte[] _prevhmac, byte[] _hmac) { + Slot(Table _table, long _seqnum, long _machineid, byte[] _prevhmac, byte[] _hmac) { seqnum=_seqnum; machineid=_machineid; prevhmac=_prevhmac; @@ -45,14 +45,20 @@ class Slot implements Liveness { livecount=1; seqnumlive=true; freespace = SLOT_SIZE - getBaseSize(); + table=_table; } - Slot(long _seqnum, long _machineid, byte[] _prevhmac) { - this(_seqnum, _machineid, _prevhmac, null); + Slot(Table _table, long _seqnum, long _machineid, byte[] _prevhmac) { + this(_table, _seqnum, _machineid, _prevhmac, null); } +<<<<<<< HEAD Slot(long _seqnum, long _machineid) { this(_seqnum, _machineid, new byte[ HMAC_SIZE], null); +======= + Slot(Table _table, long _seqnum, long _machineid) { + this(_table, _seqnum, _machineid, new byte[HMAC_SIZE], null); +>>>>>>> f80cc30f294899f47cef3507334f8ca357862e5e } byte[] getHMAC() { @@ -81,15 +87,6 @@ class Slot implements Liveness { * using its reserved space. */ boolean hasSpace(Entry e) { - int newfreespace = freespace - e.getSize(); - return newfreespace > RESERVED_SPACE; - } - - /** - * Returns true if the slot can fit the entry potentially using the - * reserved space. */ - - boolean canFit(Entry e) { int newfreespace = freespace - e.getSize(); return newfreespace >= 0; } @@ -98,7 +95,7 @@ class Slot implements Liveness { return entries; } - static Slot decode(byte[] array, Mac mac) { + static Slot decode(Table table, byte[] array, Mac mac) { mac.update(array, HMAC_SIZE, array.length-HMAC_SIZE); byte[] realmac=mac.doFinal(); @@ -113,7 +110,7 @@ class Slot implements Liveness { long seqnum=bb.getLong(); long machineid=bb.getLong(); int numentries=bb.getInt(); - Slot slot=new Slot(seqnum, machineid, prevhmac, hmac); + Slot slot=new Slot(table, seqnum, machineid, prevhmac, hmac); for(int i=0; i getLiveEntries() { + Vector getLiveEntries(boolean resize) { Vector liveEntries=new Vector(); for(Entry entry: entries) { - if (entry.isLive()) - liveEntries.add(entry); + if (entry.isLive()) { + if (!resize || entry.getType() != Entry.TypeTableStatus) + liveEntries.add(entry); + } } - if (seqnumlive) + if (seqnumlive && !resize) liveEntries.add(new LastMessage(this, machineid, seqnum)); return liveEntries; @@ -202,7 +201,8 @@ class Slot implements Liveness { void decrementLiveCount() { livecount--; - Vector e=getLiveEntries(); + if (livecount==0) + table.decrementLiveCount(); } /**