X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=blobdiff_plain;f=version2%2Fsrc%2FC%2FSlot.h;h=b46e2ab822b298dd95bcc951f08ee4deeaa1868b;hp=f42aa689c5d3d0baf996fbc929317792429e5b42;hb=2d567b75be4055f6a40ffe1cedb5cdc9be262d86;hpb=f0a95f7a96e808259ced5e9f61e029773c7a85e6 diff --git a/version2/src/C/Slot.h b/version2/src/C/Slot.h index f42aa68..b46e2ab 100644 --- a/version2/src/C/Slot.h +++ b/version2/src/C/Slot.h @@ -1,55 +1,60 @@ #ifndef SLOT_H #define SLOT_H +#include "common.h" +#include "Liveness.h" + + #define SLOT_SIZE 2048 #define HMAC_SIZE 32 class Slot : public Liveness { - private: +private: /** Sequence number of the slot. */ int64_t seqnum; /** HMAC of previous slot. */ - char* prevhmac; + Array *prevhmac; /** HMAC of this slot. */ - char* hmac; + Array *hmac; /** Machine that sent this slot. */ - int64_t machineid; + int64_t machineid; /** Vector of entries in this slot. */ - Vector * entries; + Vector *entries; /** Pieces of information that are live. */ int livecount; /** Flag that indicates whether this slot is still live for * recording the machine that sent it. */ - bool seqnumlive; + bool seqnumlive; /** Number of chars of free space. */ int freespace; /** Reference to Table */ - Table * table; + Table *table; int64_t localSequenceNumber; - void addShallowEntry(Entry * e); - - public: - Slot(Table * _table, int64_t _seqnum, int64_t _machineid, char* _prevhmac, char* _hmac, int64_t _localSequenceNumber); - Slot(Table _table, int64_t _seqnum, int64_t _machineid, char* _prevhmac, int64_t _localSequenceNumber); - Slot(Table _table, int64_t _seqnum, int64_t _machineid, int64_t _localSequenceNumber); - - char* getHMAC() { return hmac; } - char* getPrevHMAC() { return prevhmac; } - Entry * addEntry(Entry * e); - void removeEntry(Entry * e); - bool hasSpace(Entry * e); - Vector * getEntries(); - char* encode(Mac * mac); + void addShallowEntry(Entry *e); + +public: + Slot(Table *_table, int64_t _seqnum, int64_t _machineid, Array *_prevhmac, Array *_hmac, int64_t _localSequenceNumber); + Slot(Table *_table, int64_t _seqnum, int64_t _machineid, Array *_prevhmac, int64_t _localSequenceNumber); + Slot(Table *_table, int64_t _seqnum, int64_t _machineid, int64_t _localSequenceNumber); + + Array *getHMAC() { return hmac; } + Array *getPrevHMAC() { return prevhmac; } + Entry *addEntry(Entry *e); + void removeEntry(Entry *e); + bool hasSpace(Entry *e); + Vector *getEntries(); + Array *encode(Mac *mac); int getBaseSize() { return 2 * HMAC_SIZE + 2 * sizeof(int64_t) + sizeof(int); } - Vector * getLiveEntries(bool resize); + Vector *getLiveEntries(bool resize); int64_t getSequenceNumber() { return seqnum; } int64_t getMachineID() { return machineid; } void setDead(); void decrementLiveCount(); bool isLive() { return livecount > 0; } - char* getSlotCryptIV(); + Array *getSlotCryptIV(); + friend Slot *Slotdecode(Table *table, Array *array, Mac *mac); }; -Slot * Slotdecode(Table * table, char* array, Mac *mac); +Slot *Slotdecode(Table *table, Array *array, Mac *mac); #endif