aboutsummaryrefslogtreecommitdiff
path: root/zencore/include
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2022-02-16 12:32:27 +0100
committerPer Larsson <[email protected]>2022-02-16 12:32:27 +0100
commit87bb9700722e8319aa58484bba03e398dedede87 (patch)
tree1a82ce932f0a729f48bf8472d5f88fa897679a8f /zencore/include
parentRenamed asio web socket impl. (diff)
downloadzen-87bb9700722e8319aa58484bba03e398dedede87.tar.xz
zen-87bb9700722e8319aa58484bba03e398dedede87.zip
Added websocket message parser.
Diffstat (limited to 'zencore/include')
-rw-r--r--zencore/include/zencore/stream.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/zencore/include/zencore/stream.h b/zencore/include/zencore/stream.h
index 9d1a7628c..4c8047bb4 100644
--- a/zencore/include/zencore/stream.h
+++ b/zencore/include/zencore/stream.h
@@ -49,6 +49,36 @@ MakeMemoryView(const BinaryWriter& Stream)
}
/**
+ * Non thread-safe stream writer
+ */
+
+class SimpleBinaryWriter
+{
+ static constexpr size_t DefaultBlockSize = 64;
+
+public:
+ SimpleBinaryWriter(uint64_t BlockSize = DefaultBlockSize) : m_BlockSize(BlockSize), m_Offset{0} {}
+ ~SimpleBinaryWriter() = default;
+
+ void Write(const void* Data, size_t 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;
+ size_t m_BlockSize;
+ size_t m_Offset;
+};
+
+/**
* Binary stream reader
*/