diff options
Diffstat (limited to 'zencore')
| -rw-r--r-- | zencore/include/zencore/stream.h | 48 | ||||
| -rw-r--r-- | zencore/stream.cpp | 19 |
2 files changed, 19 insertions, 48 deletions
diff --git a/zencore/include/zencore/stream.h b/zencore/include/zencore/stream.h index 6d7e7d19f..54d7e1014 100644 --- a/zencore/include/zencore/stream.h +++ b/zencore/include/zencore/stream.h @@ -27,12 +27,29 @@ public: m_Offset += ByteCount; } + inline void Write(MemoryView Memory) { Write(Memory.GetData(), Memory.GetSize()); } + inline uint64_t CurrentOffset() const { return m_Offset; } inline const uint8_t* Data() const { return m_Buffer.data(); } inline const uint8_t* GetData() const { return m_Buffer.data(); } inline uint64_t Size() const { return m_Buffer.size(); } inline uint64_t GetSize() const { return m_Buffer.size(); } + void Reset(); + + inline MemoryView GetView(uint64_t Offset = 0) const + { + MemoryView View(m_Buffer.data(), m_Offset); + View.RightChopInline(Offset); + return View; + } + + inline MutableMemoryView GetMutableView(uint64_t Offset = 0) + { + MutableMemoryView View(m_Buffer.data(), m_Offset); + View.RightChopInline(Offset); + return View; + } private: RwLock m_Lock; @@ -49,37 +66,6 @@ MakeMemoryView(const BinaryWriter& Stream) } /** - * Non thread-safe stream writer - */ - -class SimpleBinaryWriter -{ - static constexpr uint32_t DefaultBlockSize = 64; - -public: - SimpleBinaryWriter(uint32_t BlockSize = DefaultBlockSize) : m_BlockSize(BlockSize), m_Offset{0} {} - ~SimpleBinaryWriter() = default; - - void Write(MemoryView Memory); - void Write(const void* Data, size_t Size) { Write(MemoryView(Data, Size)); } - void Clear(); - - inline uint64_t CurrentOffset() const { return m_Offset; } - - inline const uint8_t* Data() const { return m_Buffer.data(); } - inline const uint8_t* GetData() const { return m_Buffer.data(); } - inline uint64_t Size() const { return m_Buffer.size(); } - inline uint64_t GetSize() const { return m_Buffer.size(); } - - MemoryView GetView() const { return MemoryView(m_Buffer.data(), m_Offset); } - -private: - std::vector<uint8_t> m_Buffer; - uint64_t m_Offset; - uint32_t m_BlockSize; -}; - -/** * Binary stream reader */ diff --git a/zencore/stream.cpp b/zencore/stream.cpp index 36953363f..8faf90af2 100644 --- a/zencore/stream.cpp +++ b/zencore/stream.cpp @@ -26,25 +26,10 @@ BinaryWriter::Write(const void* data, size_t ByteCount, uint64_t Offset) } void -SimpleBinaryWriter::Write(MemoryView Memory) +BinaryWriter::Reset() { - const uint64_t NeededSize = m_Offset + Memory.GetSize(); - - if (NeededSize > m_Buffer.size()) - { - const size_t NewCapacity = RoundUp(NeededSize, m_BlockSize); - - m_Buffer.resize(NewCapacity); - } - - memcpy(m_Buffer.data() + m_Offset, Memory.GetData(), Memory.GetSize()); - - m_Offset += Memory.GetSize(); -} + RwLock::ExclusiveLockScope _(m_Lock); -void -SimpleBinaryWriter::Clear() -{ m_Buffer.clear(); m_Offset = 0; } |