aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-02-08 11:44:52 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2024-02-08 19:20:14 +0000
commit357004d36d0e59e052bcea888b9d192286bad5b2 (patch)
tree8ff8b14159faa4c0e31b0cef77922af5d39918ce /vespalib
parent5a56bcab6c0cce43912acc173fb8c755e037e635 (diff)
Modernize code and use smaller buffers.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/data/fileheader.cpp288
-rw-r--r--vespalib/src/vespa/vespalib/data/fileheader.h37
2 files changed, 133 insertions, 192 deletions
diff --git a/vespalib/src/vespa/vespalib/data/fileheader.cpp b/vespalib/src/vespa/vespalib/data/fileheader.cpp
index dbcee1e1ae5..a989264868c 100644
--- a/vespalib/src/vespa/vespalib/data/fileheader.cpp
+++ b/vespalib/src/vespa/vespalib/data/fileheader.cpp
@@ -16,129 +16,105 @@ const uint32_t GenericHeader::VERSION(1);
const GenericHeader::Tag GenericHeader::EMPTY;
const size_t ALIGNMENT=0x1000;
-GenericHeader::Tag::~Tag() = default;
+GenericHeader::Tag::~Tag() = default;
GenericHeader::Tag::Tag(const Tag &) = default;
GenericHeader::Tag & GenericHeader::Tag::operator=(const Tag &) = default;
-GenericHeader::Tag::Tag() :
- _type(TYPE_EMPTY),
- _name(""),
- _fVal(0),
- _iVal(0),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag()
+ : _type(TYPE_EMPTY),
+ _name(),
+ _fVal(0),
+ _iVal(0),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, float val) :
- _type(TYPE_FLOAT),
- _name(name),
- _fVal(val),
- _iVal(0),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, float val)
+ : _type(TYPE_FLOAT),
+ _name(name),
+ _fVal(val),
+ _iVal(0),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, double val) :
- _type(TYPE_FLOAT),
- _name(name),
- _fVal(val),
- _iVal(0),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, double val)
+ : _type(TYPE_FLOAT),
+ _name(name),
+ _fVal(val),
+ _iVal(0),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, int8_t val) :
- _type(TYPE_INTEGER),
- _name(name),
- _fVal(0),
- _iVal(val),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, int8_t val)
+ : _type(TYPE_INTEGER),
+ _name(name),
+ _fVal(0),
+ _iVal(val),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, uint8_t val) :
- _type(TYPE_INTEGER),
- _name(name),
- _fVal(0),
- _iVal(val),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, uint8_t val)
+ : _type(TYPE_INTEGER),
+ _name(name),
+ _fVal(0),
+ _iVal(val),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, int16_t val) :
- _type(TYPE_INTEGER),
- _name(name),
- _fVal(0),
- _iVal(val),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, int16_t val)
+ : _type(TYPE_INTEGER),
+ _name(name),
+ _fVal(0),
+ _iVal(val),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, uint16_t val) :
- _type(TYPE_INTEGER),
- _name(name),
- _fVal(0),
- _iVal(val),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, uint16_t val)
+ : _type(TYPE_INTEGER),
+ _name(name),
+ _fVal(0),
+ _iVal(val),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, int32_t val) :
- _type(TYPE_INTEGER),
- _name(name),
- _fVal(0),
- _iVal(val),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, int32_t val)
+ : _type(TYPE_INTEGER),
+ _name(name),
+ _fVal(0),
+ _iVal(val),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, uint32_t val) :
- _type(TYPE_INTEGER),
- _name(name),
- _fVal(0),
- _iVal(val),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, uint32_t val)
+ : _type(TYPE_INTEGER),
+ _name(name),
+ _fVal(0),
+ _iVal(val),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, int64_t val) :
- _type(TYPE_INTEGER),
- _name(name),
- _fVal(0),
- _iVal(val),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, int64_t val)
+ : _type(TYPE_INTEGER),
+ _name(name),
+ _fVal(0),
+ _iVal(val),
+ _sVal()
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, uint64_t val) :
- _type(TYPE_INTEGER),
- _name(name),
- _fVal(0),
- _iVal(val),
- _sVal("")
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, uint64_t val)
+ : _type(TYPE_INTEGER),
+ _name(name),
+ _fVal(0),
+ _iVal(val),
+ _sVal()
+{ }
GenericHeader::Tag::Tag(const vespalib::string &name, bool val)
: _type(TYPE_INTEGER),
_name(name),
_fVal(0),
_iVal(val ? 1 : 0),
- _sVal("")
-{
- // empty
-}
+ _sVal()
+{ }
GenericHeader::Tag::Tag(const vespalib::string &name, const char *val)
: _type(TYPE_STRING),
@@ -146,19 +122,15 @@ GenericHeader::Tag::Tag(const vespalib::string &name, const char *val)
_fVal(0),
_iVal(0),
_sVal(val)
-{
- // empty
-}
+{ }
-GenericHeader::Tag::Tag(const vespalib::string &name, const vespalib::string &val) :
- _type(TYPE_STRING),
- _name(name),
- _fVal(0),
- _iVal(0),
- _sVal(val)
-{
- // empty
-}
+GenericHeader::Tag::Tag(const vespalib::string &name, const vespalib::string &val)
+ : _type(TYPE_STRING),
+ _name(name),
+ _fVal(0),
+ _iVal(0),
+ _sVal(val)
+{ }
size_t
GenericHeader::Tag::getSize() const
@@ -226,11 +198,9 @@ GenericHeader::Tag::write(DataBuffer &buf) const
return buf.getDataLen() - pos;
}
-GenericHeader::BufferReader::BufferReader(DataBuffer &buf) :
- _buf(buf)
-{
- // empty
-}
+GenericHeader::BufferReader::BufferReader(DataBuffer &buf)
+ : _buf(buf)
+{ }
size_t
GenericHeader::BufferReader::getData(char *buf, size_t len)
@@ -242,11 +212,9 @@ GenericHeader::BufferReader::getData(char *buf, size_t len)
return len;
}
-GenericHeader::BufferWriter::BufferWriter(DataBuffer &buf) :
- _buf(buf)
-{
- // empty
-}
+GenericHeader::BufferWriter::BufferWriter(DataBuffer &buf)
+ : _buf(buf)
+{ }
size_t
GenericHeader::BufferWriter::putData(const char *buf, size_t len)
@@ -258,13 +226,10 @@ GenericHeader::BufferWriter::putData(const char *buf, size_t len)
return len;
}
-
GenericHeader::MMapReader::MMapReader(const char *buf, size_t sz)
: _buf(buf),
_sz(sz)
-{
-}
-
+{ }
size_t
GenericHeader::MMapReader::getData(char *buf, size_t len)
@@ -276,14 +241,8 @@ GenericHeader::MMapReader::getData(char *buf, size_t len)
return clen;
}
-
-GenericHeader::GenericHeader() :
- _tags()
-{
- // empty
-}
-
-GenericHeader::~GenericHeader() { }
+GenericHeader::GenericHeader() noexcept = default;
+GenericHeader::~GenericHeader() = default;
const GenericHeader::Tag &
GenericHeader::getTag(size_t idx) const
@@ -291,7 +250,7 @@ GenericHeader::getTag(size_t idx) const
if (idx >= _tags.size()) {
return EMPTY;
}
- TagMap::const_iterator it = _tags.begin();
+ auto it = _tags.begin();
std::advance(it, idx);
return it->second;
}
@@ -299,7 +258,7 @@ GenericHeader::getTag(size_t idx) const
const GenericHeader::Tag &
GenericHeader::getTag(const vespalib::string &key) const
{
- TagMap::const_iterator it = _tags.find(key);
+ auto it = _tags.find(key);
if (it == _tags.end()) {
return EMPTY;
}
@@ -316,7 +275,7 @@ bool
GenericHeader::putTag(const GenericHeader::Tag &tag)
{
const vespalib::string &key = tag.getName();
- TagMap::iterator it = _tags.find(key);
+ auto it = _tags.find(key);
if (it != _tags.end()) {
it->second = tag;
return false;
@@ -327,7 +286,7 @@ GenericHeader::putTag(const GenericHeader::Tag &tag)
bool
GenericHeader::removeTag(const vespalib::string &key)
{
- TagMap::iterator it = _tags.find(key);
+ auto it = _tags.find(key);
if (it == _tags.end()) {
return false;
}
@@ -337,7 +296,7 @@ GenericHeader::removeTag(const vespalib::string &key)
size_t
-GenericHeader::getMinSize(void)
+GenericHeader::getMinSize()
{
return 4 /* magic */ + 4 /* size */ + 4 /* version */ + 4 /* num tags */;
}
@@ -347,10 +306,8 @@ size_t
GenericHeader::getSize() const
{
size_t ret = getMinSize();
- for (TagMap::const_iterator it = _tags.begin();
- it != _tags.end(); ++it)
- {
- ret += it->second.getSize();
+ for (const auto & tag : _tags) {
+ ret += tag.second.getSize();
}
return ret;
}
@@ -389,7 +346,7 @@ GenericHeader::readSize(IDataReader &reader)
size_t
GenericHeader::read(IDataReader &reader)
{
- size_t bufLen = 1024 * 32;
+ size_t bufLen = 4_Ki;
DataBuffer buf(bufLen, ALIGNMENT);
size_t numBytesRead = reader.getData(buf.getFree(), bufLen);
buf.moveFreeToData(numBytesRead);
@@ -448,10 +405,8 @@ GenericHeader::write(IDataWriter &writer) const
buf.writeInt32(VERSION);
buf.writeInt32((uint32_t)_tags.size());
uint32_t numBytesInBuf = 16;
- for (TagMap::const_iterator it = _tags.begin();
- it != _tags.end(); ++it)
- {
- numBytesInBuf += it->second.write(buf);
+ for (const auto & tag : _tags) {
+ numBytesInBuf += tag.second.write(buf);
}
if (numBytesInBuf < numBytesTotal) {
buf.zeroFill(numBytesTotal - numBytesInBuf);
@@ -463,11 +418,9 @@ GenericHeader::write(IDataWriter &writer) const
return numBytesWritten;
}
-FileHeader::FileReader::FileReader(FastOS_FileInterface &file) :
- _file(file)
-{
- // empty
-}
+FileHeader::FileReader::FileReader(FastOS_FileInterface &file)
+ : _file(file)
+{ }
size_t
FileHeader::FileReader::getData(char *buf, size_t len)
@@ -478,11 +431,9 @@ FileHeader::FileReader::getData(char *buf, size_t len)
return _file.Read(buf, len);
}
-FileHeader::FileWriter::FileWriter(FastOS_FileInterface &file) :
- _file(file)
-{
- // empty
-}
+FileHeader::FileWriter::FileWriter(FastOS_FileInterface &file)
+ : _file(file)
+{ }
size_t
FileHeader::FileWriter::putData(const char *buf, size_t len)
@@ -493,13 +444,12 @@ FileHeader::FileWriter::putData(const char *buf, size_t len)
return _file.Write2(buf, len);
}
-FileHeader::FileHeader(size_t alignTo, size_t minSize) :
- _alignTo(alignTo),
- _minSize(minSize),
- _fileSize(0)
-{
- // empty
-}
+FileHeader::FileHeader(size_t alignTo, size_t minSize) noexcept
+ : GenericHeader(),
+ _alignTo(alignTo),
+ _minSize(minSize),
+ _fileSize(0)
+{ }
size_t
FileHeader::getSize() const
diff --git a/vespalib/src/vespa/vespalib/data/fileheader.h b/vespalib/src/vespa/vespalib/data/fileheader.h
index 80fe6820b43..2f2e69f5fae 100644
--- a/vespalib/src/vespa/vespalib/data/fileheader.h
+++ b/vespalib/src/vespa/vespalib/data/fileheader.h
@@ -87,7 +87,7 @@ public:
*/
class IDataReader {
public:
- virtual ~IDataReader() { /* empty */ }
+ virtual ~IDataReader() = default;
virtual size_t getData(char *buf, size_t len) = 0;
};
@@ -98,7 +98,7 @@ public:
*/
class IDataWriter {
public:
- virtual ~IDataWriter() { /* empty */ }
+ virtual ~IDataWriter() = default;
virtual size_t putData(const char *buf, size_t len) = 0;
};
@@ -111,7 +111,7 @@ public:
DataBuffer &_buf;
public:
- BufferReader(DataBuffer &buf);
+ explicit BufferReader(DataBuffer &buf);
size_t getData(char *buf, size_t len) override;
};
@@ -124,18 +124,16 @@ public:
DataBuffer &_buf;
public:
- BufferWriter(DataBuffer &buf);
+ explicit BufferWriter(DataBuffer &buf);
size_t putData(const char *buf, size_t len) override;
};
class MMapReader : public IDataReader
{
const char *_buf;
- size_t _sz;
-
+ size_t _sz;
public:
MMapReader(const char *buf, size_t sz);
-
size_t getData(char *buf, size_t len) override;
};
@@ -146,14 +144,7 @@ private:
TagMap _tags;
public:
- /**
- * Constructs a new instance of this class.
- */
- GenericHeader();
-
- /**
- * Virtual destructor required for inheritance.
- */
+ GenericHeader() noexcept;
virtual ~GenericHeader();
/**
@@ -213,10 +204,9 @@ public:
*
* @return True if this header has no data.
*/
- bool isEmpty() const { return _tags.empty(); }
+ bool isEmpty() const noexcept { return _tags.empty(); }
- static size_t
- getMinSize(void);
+ static size_t getMinSize();
/**
* Returns the number of bytes required to hold the content of this when calling write().
@@ -225,8 +215,7 @@ public:
*/
virtual size_t getSize() const;
- static size_t
- readSize(IDataReader &reader);
+ static size_t readSize(IDataReader &reader);
/**
* Deserializes header content from the given provider into this.
@@ -260,7 +249,7 @@ public:
FastOS_FileInterface &_file;
public:
- FileReader(FastOS_FileInterface &file);
+ explicit FileReader(FastOS_FileInterface &file);
size_t getData(char *buf, size_t len) override;
};
@@ -273,7 +262,7 @@ public:
FastOS_FileInterface &_file;
public:
- FileWriter(FastOS_FileInterface &file);
+ explicit FileWriter(FastOS_FileInterface &file);
size_t putData(const char *buf, size_t len) override;
};
@@ -289,7 +278,9 @@ public:
* @param alignTo The number of bytes to which the serialized size must be aligned to.
* @param minSize The minimum number of bytes of the serialized size.
*/
- FileHeader(size_t alignTo = 8u, size_t minSize = 0u);
+ FileHeader(size_t alignTo, size_t minSize) noexcept;
+ explicit FileHeader(size_t alignTo) noexcept : FileHeader(alignTo, 0) {}
+ FileHeader() noexcept : FileHeader(8u) {}
/**
* This function overrides GenericHeader::getSize() to align header size to the number of bytes supplied