From 12d18bd7c5139db4b8ee00d6c705dc0b1c02e2be Mon Sep 17 00:00:00 2001 From: Thulinma Date: Tue, 13 Mar 2018 22:39:54 +0100 Subject: [PATCH] RelAccX improvements --- lib/util.cpp | 41 +++++------------------------------------ lib/util.h | 6 ++---- 2 files changed, 7 insertions(+), 40 deletions(-) diff --git a/lib/util.cpp b/lib/util.cpp index 06f41db5..5e2106ab 100644 --- a/lib/util.cpp +++ b/lib/util.cpp @@ -411,13 +411,10 @@ namespace Util{ /// Gets the size in bytes of a single record in the structure. uint32_t RelAccX::getRSize() const{return RAXHDR_RECORDSIZE;} - /// Gets the position in the records where the entries start - uint32_t RelAccX::getStartPos() const{return RAXHDR_STARTPOS;} - /// Gets the number of deleted records uint64_t RelAccX::getDeleted() const{return RAXHDR_DELETED;} - //Gets the number of the last valid index + /// Gets the number of the last valid index uint64_t RelAccX::getEndPos() const{return RAXHDR_ENDPOS;} ///Gets the number of fields per recrd @@ -662,15 +659,11 @@ namespace Util{ /// Sets the record counter to the given value. void RelAccX::setRCount(uint32_t count){RAXHDR_RECORDCNT = count;} - /// Sets the position in the records where the entries start - void RelAccX::setStartPos(uint32_t n){RAXHDR_STARTPOS = n;} - /// Sets the number of deleted records void RelAccX::setDeleted(uint64_t n){RAXHDR_DELETED = n;} - /// Sets the number of records present - /// Defaults to the record count if set to zero. - void RelAccX::setPresent(uint32_t n){RAXHDR_PRESENT = n;} + /// Sets the number of the last valid index + void RelAccX::setEndPos(uint64_t n){RAXHDR_ENDPOS = n;} /// Sets the ready flag. /// After calling this function, addField() may no longer be called. @@ -757,38 +750,14 @@ namespace Util{ /// Updates the deleted record counter, the start position and the present record counter, /// shifting the ring buffer start position forward without moving the ring buffer end position. - /// If the records present counter would be pushed into the negative by this function, sets it to - /// zero, defaulting it to the record count for all relevant purposes. void RelAccX::deleteRecords(uint32_t amount){ - uint32_t &startPos = RAXHDR_STARTPOS; - uint64_t &deletedRecs = RAXHDR_DELETED; - uint32_t &recsPresent = RAXHDR_PRESENT; - startPos += amount; // update start position - deletedRecs += amount; // update deleted record counter - if (recsPresent >= amount){ - recsPresent -= amount; // decrease records present - }else{ - WARN_MSG("Depleting recordCount!"); - recsPresent = 0; - } + RAXHDR_DELETED += amount; // update deleted record counter } /// Updates the present record counter, shifting the ring buffer end position forward without /// moving the ring buffer start position. - /// If the records present counter would be pushed past the record counter by this function, sets - /// it to zero, defaulting it to the record count for all relevant purposes. void RelAccX::addRecords(uint32_t amount){ - uint32_t & recsPresent = RAXHDR_PRESENT; - uint32_t & recordsCount = RAXHDR_RECORDCNT; - uint64_t & recordEndPos = RAXHDR_ENDPOS; - if (recsPresent+amount > recordsCount){ - BACKTRACE - WARN_MSG("Exceeding recordCount (%d [%d + %d] > %d)", recsPresent + amount, recsPresent, amount, recordsCount); - recsPresent = 0; - }else{ - recsPresent += amount; - } - recordEndPos += amount; + RAXHDR_ENDPOS += amount; } FieldAccX RelAccX::getFieldAccX(const std::string & fName){ diff --git a/lib/util.h b/lib/util.h index 13bd6f9e..a3b9835d 100644 --- a/lib/util.h +++ b/lib/util.h @@ -70,6 +70,7 @@ namespace Util{ #define RAX_64STRING 0x32 #define RAX_128STRING 0x33 #define RAX_256STRING 0x34 + #define RAX_512STRING 0x35 #define RAX_RAW 0x40 #define RAX_256RAW 0x44 #define RAX_512RAW 0x45 @@ -115,10 +116,8 @@ namespace Util{ uint32_t getRCount() const; uint32_t getRSize() const; uint16_t getOffset() const; - uint32_t getStartPos() const; uint64_t getDeleted() const; uint64_t getEndPos() const; - size_t getPresent() const; uint32_t getFieldCount() const; bool isReady() const; bool isExit() const; @@ -138,9 +137,8 @@ namespace Util{ //Read-write functions: void addField(const std::string & name, uint8_t fType, uint32_t fLen=0); void setRCount(uint32_t count); - void setStartPos(uint32_t n); void setDeleted(uint64_t n); - void setPresent(uint32_t n); + void setEndPos(uint64_t n); void setReady(); void setExit(); void setReload();