aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-28 21:57:23 +0200
committerStefan Boberg <[email protected]>2021-09-28 21:57:23 +0200
commit3d414de23eadccdf85fd1455a0dfcbce10e07cdd (patch)
tree2ad07069a5d507017a423aa91b728655ca914389
parentRemoving a bunch of no-longer-useful code from stream.h/cpp in preparation fo... (diff)
downloadzen-3d414de23eadccdf85fd1455a0dfcbce10e07cdd.tar.xz
zen-3d414de23eadccdf85fd1455a0dfcbce10e07cdd.zip
Removed MemoryOutStream, MemoryInStream
BinaryWriter/BinaryReader now implements memory buffer functionality which previously needed two chained instances of a Buffer/Reader. This was originally expected to be an abstraction for file and other stream access but this is not going to be useful so may as well collapse the functionality. This also eliminates the need for stack-aware ref-counting which is the real reason for wanting to get rid of this code. This was a very old experimental feature which turned out to be a bad idea. This also removes the /cas/batch endpoint
-rw-r--r--zen/cmds/run.cpp5
-rw-r--r--zencore/compactbinarypackage.cpp47
-rw-r--r--zencore/include/zencore/stream.h149
-rw-r--r--zencore/include/zencore/streamutil.h69
-rw-r--r--zencore/stream.cpp36
-rw-r--r--zencore/zencore.vcxproj1
-rw-r--r--zencore/zencore.vcxproj.filters1
-rw-r--r--zenhttp/httpclient.cpp5
-rw-r--r--zenserver-test/zenserver-test.cpp37
-rw-r--r--zenserver/cache/structuredcache.cpp10
-rw-r--r--zenserver/casstore.cpp48
-rw-r--r--zenserver/projectstore.cpp10
-rw-r--r--zenserver/upstream/upstreamcache.cpp10
-rw-r--r--zenserver/upstream/zen.cpp5
-rw-r--r--zenserver/windows/service.cpp2
15 files changed, 87 insertions, 348 deletions
diff --git a/zen/cmds/run.cpp b/zen/cmds/run.cpp
index 4ffbf820c..94eb7ef6d 100644
--- a/zen/cmds/run.cpp
+++ b/zen/cmds/run.cpp
@@ -139,9 +139,8 @@ RunCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
}
PrepReq.EndArray();
- zen::MemoryOutStream MemOut;
- zen::BinaryWriter MemWriter(MemOut);
- PrepReq.Save(MemWriter);
+ zen::BinaryWriter MemOut;
+ PrepReq.Save(MemOut);
Zen1.WaitUntilReady();
diff --git a/zencore/compactbinarypackage.cpp b/zencore/compactbinarypackage.cpp
index fbdcd24e9..88757d47f 100644
--- a/zencore/compactbinarypackage.cpp
+++ b/zencore/compactbinarypackage.cpp
@@ -83,8 +83,7 @@ CbAttachment::CbAttachment(const CbObject& InValue, const IoHash* const InHash)
bool
CbAttachment::TryLoad(IoBuffer& InBuffer, BufferAllocator Allocator)
{
- MemoryInStream InStream(InBuffer.Data(), InBuffer.Size());
- BinaryReader Reader(InStream);
+ BinaryReader Reader(InBuffer.Data(), InBuffer.Size());
return TryLoad(Reader, Allocator);
}
@@ -427,8 +426,7 @@ CbPackage::GatherAttachments(const CbObject& Value, AttachmentResolver Resolver)
bool
CbPackage::TryLoad(IoBuffer InBuffer, BufferAllocator Allocator, AttachmentResolver* Mapper)
{
- MemoryInStream InStream(InBuffer.Data(), InBuffer.Size());
- BinaryReader Reader(InStream);
+ BinaryReader Reader(InBuffer.Data(), InBuffer.Size());
return TryLoad(Reader, Allocator, Mapper);
}
@@ -670,8 +668,7 @@ namespace legacy {
bool TryLoadCbPackage(CbPackage& Package, IoBuffer InBuffer, BufferAllocator Allocator, CbPackage::AttachmentResolver* Mapper)
{
- MemoryInStream InStream(InBuffer.Data(), InBuffer.Size());
- BinaryReader Reader(InStream);
+ BinaryReader Reader(InBuffer.Data(), InBuffer.Size());
return TryLoadCbPackage(Package, Reader, Allocator, Mapper);
}
@@ -764,24 +761,22 @@ TEST_CASE("usonpackage")
Attachment.Save(Writer);
CbFieldIterator Fields = Writer.Save();
- MemoryOutStream WriteStream;
- BinaryWriter StreamWriter{WriteStream};
+ BinaryWriter StreamWriter;
Attachment.Save(StreamWriter);
- CHECK(MakeMemoryView(WriteStream).EqualBytes(Fields.GetRangeBuffer().GetView()));
- CHECK(ValidateCompactBinaryRange(MakeMemoryView(WriteStream), CbValidateMode::All) == CbValidateError::None);
- CHECK(ValidateObjectAttachment(MakeMemoryView(WriteStream), CbValidateMode::All) == CbValidateError::None);
+ CHECK(MakeMemoryView(StreamWriter).EqualBytes(Fields.GetRangeBuffer().GetView()));
+ CHECK(ValidateCompactBinaryRange(MakeMemoryView(StreamWriter), CbValidateMode::All) == CbValidateError::None);
+ CHECK(ValidateObjectAttachment(MakeMemoryView(StreamWriter), CbValidateMode::All) == CbValidateError::None);
CbAttachment FromFields;
FromFields.TryLoad(Fields);
CHECK(!bool(Fields));
CHECK(FromFields == Attachment);
- CbAttachment FromArchive;
- MemoryInStream InStream(MakeMemoryView(WriteStream));
- BinaryReader Reader(InStream);
+ CbAttachment FromArchive;
+ BinaryReader Reader(MakeMemoryView(StreamWriter));
FromArchive.TryLoad(Reader);
- CHECK(Reader.CurrentOffset() == InStream.Size());
+ CHECK(Reader.CurrentOffset() == Reader.Size());
CHECK(FromArchive == Attachment);
};
@@ -956,9 +951,8 @@ TEST_CASE("usonpackage.serialization")
Package.Save(Writer);
CbFieldIterator Fields = Writer.Save();
- MemoryOutStream MemStream;
- BinaryWriter WriteAr(MemStream);
- Package.Save(WriteAr);
+ BinaryWriter MemStream;
+ Package.Save(MemStream);
CHECK(MakeMemoryView(MemStream).EqualBytes(Fields.GetRangeBuffer().GetView()));
CHECK(ValidateCompactBinaryRange(MakeMemoryView(MemStream), CbValidateMode::All) == CbValidateError::None);
@@ -969,11 +963,10 @@ TEST_CASE("usonpackage.serialization")
CHECK_FALSE(bool(Fields));
CHECK(FromFields == Package);
- CbPackage FromArchive;
- MemoryInStream ReadMemStream(MakeMemoryView(MemStream));
- BinaryReader ReadAr(ReadMemStream);
+ CbPackage FromArchive;
+ BinaryReader ReadAr(MakeMemoryView(MemStream));
FromArchive.TryLoad(ReadAr);
- CHECK(ReadAr.CurrentOffset() == ReadMemStream.Size());
+ CHECK(ReadAr.CurrentOffset() == ReadAr.Size());
CHECK(FromArchive == Package);
};
@@ -1195,12 +1188,10 @@ TEST_CASE("usonpackage.serialization")
CHECK(FieldsOuterBufferView.Contains(Level4Attachment->AsBinary().GetView()));
CHECK(Level4Attachment->GetHash() == Level4Hash);
- MemoryOutStream WriteStream;
- BinaryWriter WriteAr(WriteStream);
- Writer.Save(WriteAr);
- CbPackage FromArchive;
- MemoryInStream ReadStream(MakeMemoryView(WriteStream));
- BinaryReader ReadAr(ReadStream);
+ BinaryWriter WriteStream;
+ Writer.Save(WriteStream);
+ CbPackage FromArchive;
+ BinaryReader ReadAr(MakeMemoryView(WriteStream));
FromArchive.TryLoad(ReadAr);
Writer.Reset();
diff --git a/zencore/include/zencore/stream.h b/zencore/include/zencore/stream.h
index bab349068..9d1a7628c 100644
--- a/zencore/include/zencore/stream.h
+++ b/zencore/include/zencore/stream.h
@@ -5,85 +5,49 @@
#include "zencore.h"
#include <zencore/memory.h>
-#include <zencore/refcount.h>
#include <zencore/thread.h>
-#include <string_view>
#include <vector>
namespace zen {
/**
- * Stream which writes into a growing memory buffer
- */
-class MemoryOutStream : public RefCounted
-{
-public:
- MemoryOutStream() = default;
- ~MemoryOutStream() = default;
-
- void Write(const void* DataPtr, size_t ByteCount, uint64_t Offset);
- void Flush();
- 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(); }
-
-private:
- RwLock m_Lock;
- std::vector<uint8_t> m_Buffer;
-};
-
-inline MemoryView
-MakeMemoryView(const MemoryOutStream& Stream)
-{
- return MemoryView(Stream.Data(), Stream.Size());
-}
-
-/**
* Binary stream writer
*/
class BinaryWriter
{
public:
- inline BinaryWriter(MemoryOutStream& Stream) : m_Stream(&Stream) {}
- ~BinaryWriter() = default;
+ inline BinaryWriter() = default;
+ ~BinaryWriter() = default;
inline void Write(const void* DataPtr, size_t ByteCount)
{
- m_Stream->Write(DataPtr, ByteCount, m_Offset);
+ Write(DataPtr, ByteCount, m_Offset);
m_Offset += ByteCount;
}
inline uint64_t CurrentOffset() const { return m_Offset; }
-private:
- RefPtr<MemoryOutStream> m_Stream;
- uint64_t m_Offset = 0;
-};
-
-/**
- * Stream which reads from a memory buffer
- */
-class MemoryInStream : public RefCounted
-{
-public:
- MemoryInStream(const void* Buffer, size_t Size);
- MemoryInStream(MemoryView View) : MemoryInStream(View.GetData(), View.GetSize()) {}
- ~MemoryInStream() = default;
-
- void Read(void* DataPtr, size_t ByteCount, uint64_t ReadOffset);
- uint64_t Size() const { return m_Buffer.size(); }
- uint64_t GetSize() const { return Size(); }
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(); }
private:
RwLock m_Lock;
std::vector<uint8_t> m_Buffer;
+ uint64_t m_Offset = 0;
+
+ void Write(const void* DataPtr, size_t ByteCount, uint64_t Offset);
};
+inline MemoryView
+MakeMemoryView(const BinaryWriter& Stream)
+{
+ return MemoryView(Stream.Data(), Stream.Size());
+}
+
/**
* Binary stream reader
*/
@@ -91,90 +55,29 @@ private:
class BinaryReader
{
public:
- inline BinaryReader(MemoryInStream& Stream) : m_Stream(&Stream) {}
- ~BinaryReader() = default;
-
- inline void Read(void* DataPtr, size_t ByteCount)
- {
- m_Stream->Read(DataPtr, ByteCount, m_Offset);
- m_Offset += ByteCount;
- }
-
- void Seek(uint64_t Offset)
+ inline BinaryReader(const void* Buffer, uint64_t Size) : m_BufferBase(reinterpret_cast<const uint8_t*>(Buffer)), m_BufferSize(Size) {}
+ inline BinaryReader(MemoryView Buffer)
+ : m_BufferBase(reinterpret_cast<const uint8_t*>(Buffer.GetData()))
+ , m_BufferSize(Buffer.GetSize())
{
- ZEN_ASSERT(Offset <= m_Stream->Size());
- m_Offset = Offset;
}
- void Skip(uint64_t SkipOffset)
+ inline void Read(void* DataPtr, size_t ByteCount)
{
- ZEN_ASSERT((m_Offset + SkipOffset) <= m_Stream->Size());
- m_Offset += SkipOffset;
+ memcpy(DataPtr, m_BufferBase + m_Offset, ByteCount);
+ m_Offset += ByteCount;
}
+ inline uint64_t Size() const { return m_BufferSize; }
+ inline uint64_t GetSize() const { return Size(); }
inline uint64_t CurrentOffset() const { return m_Offset; }
- inline uint64_t AvailableBytes() const { return m_Stream->Size() - m_Offset; }
private:
- RefPtr<MemoryInStream> m_Stream;
- uint64_t m_Offset = 0;
+ const uint8_t* m_BufferBase;
+ uint64_t m_BufferSize;
+ uint64_t m_Offset = 0;
};
-inline BinaryReader&
-operator>>(BinaryReader& Reader, bool& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-inline BinaryReader&
-operator>>(BinaryReader& Reader, int8_t& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-inline BinaryReader&
-operator>>(BinaryReader& Reader, int16_t& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-inline BinaryReader&
-operator>>(BinaryReader& Reader, int32_t& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-inline BinaryReader&
-operator>>(BinaryReader& Reader, int64_t& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-inline BinaryReader&
-operator>>(BinaryReader& Reader, uint8_t& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-inline BinaryReader&
-operator>>(BinaryReader& Reader, uint16_t& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-inline BinaryReader&
-operator>>(BinaryReader& Reader, uint32_t& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-inline BinaryReader&
-operator>>(BinaryReader& Reader, uint64_t& Value)
-{
- Reader.Read(&Value, sizeof Value);
- return Reader;
-}
-
void stream_forcelink(); // internal
} // namespace zen
diff --git a/zencore/include/zencore/streamutil.h b/zencore/include/zencore/streamutil.h
deleted file mode 100644
index d9b6b5167..000000000
--- a/zencore/include/zencore/streamutil.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#pragma once
-
-#include <fmt/format.h>
-#include <zencore/string.h>
-#include <string>
-#include <string_view>
-
-#include "blake3.h"
-#include "iohash.h"
-#include "sha1.h"
-#include "stream.h"
-
-namespace zen {
-
-} // namespace zen
-
-//////////////////////////////////////////////////////////////////////////
-
-template<>
-struct fmt::formatter<zen::IoHash>
-{
- constexpr auto parse(format_parse_context& ctx)
- {
- // Parse the presentation format and store it in the formatter:
- auto it = ctx.begin(), end = ctx.end();
-
- // Check if reached the end of the range:
- if (it != end && *it != '}')
- throw format_error("invalid format");
-
- // Return an iterator past the end of the parsed range:
- return it;
- }
-
- template<typename FormatContext>
- auto format(const zen::IoHash& h, FormatContext& ctx)
- {
- zen::ExtendableStringBuilder<48> String;
- h.ToHexString(String);
- return format_to(ctx.out(), std::string_view(String));
- }
-};
-
-template<>
-struct fmt::formatter<zen::BLAKE3>
-{
- constexpr auto parse(format_parse_context& ctx)
- {
- // Parse the presentation format and store it in the formatter:
- auto it = ctx.begin(), end = ctx.end();
-
- // Check if reached the end of the range:
- if (it != end && *it != '}')
- throw format_error("invalid format");
-
- // Return an iterator past the end of the parsed range:
- return it;
- }
-
- template<typename FormatContext>
- auto format(const zen::BLAKE3& h, FormatContext& ctx)
- {
- zen::ExtendableStringBuilder<80> String;
- h.ToHexString(String);
- return format_to(ctx.out(), std::string_view(String));
- }
-};
diff --git a/zencore/stream.cpp b/zencore/stream.cpp
index b9a88de66..aa9705764 100644
--- a/zencore/stream.cpp
+++ b/zencore/stream.cpp
@@ -10,41 +10,19 @@
namespace zen {
-MemoryInStream::MemoryInStream(const void* buffer, size_t size)
-: m_Buffer(reinterpret_cast<const uint8_t*>(buffer), reinterpret_cast<const uint8_t*>(buffer) + size)
-{
-}
-
void
-MemoryInStream::Read(void* buffer, size_t byteCount, uint64_t offset)
+BinaryWriter::Write(const void* data, size_t ByteCount, uint64_t Offset)
{
RwLock::ExclusiveLockScope _(m_Lock);
- const size_t needEnd = offset + byteCount;
-
- if (needEnd > m_Buffer.size())
- throw std::runtime_error("read past end of file!"); // TODO: better exception
+ const size_t NeedEnd = Offset + ByteCount;
- memcpy(buffer, m_Buffer.data() + offset, byteCount);
-}
+ if (NeedEnd > m_Buffer.size())
+ {
+ m_Buffer.resize(NeedEnd);
+ }
-void
-MemoryOutStream::Write(const void* data, size_t byteCount, uint64_t offset)
-{
- RwLock::ExclusiveLockScope _(m_Lock);
-
- const size_t needEnd = offset + byteCount;
-
- if (needEnd > m_Buffer.size())
- m_Buffer.resize(needEnd);
-
- memcpy(m_Buffer.data() + offset, data, byteCount);
-}
-
-void
-MemoryOutStream::Flush()
-{
- // No-op
+ memcpy(m_Buffer.data() + Offset, data, ByteCount);
}
//////////////////////////////////////////////////////////////////////////
diff --git a/zencore/zencore.vcxproj b/zencore/zencore.vcxproj
index 947ae9f10..421802d3f 100644
--- a/zencore/zencore.vcxproj
+++ b/zencore/zencore.vcxproj
@@ -141,7 +141,6 @@
<ClInclude Include="include\zencore\sharedbuffer.h" />
<ClInclude Include="include\zencore\stats.h" />
<ClInclude Include="include\zencore\stream.h" />
- <ClInclude Include="include\zencore\streamutil.h" />
<ClInclude Include="include\zencore\string.h" />
<ClInclude Include="include\zencore\targetver.h" />
<ClInclude Include="include\zencore\testing.h" />
diff --git a/zencore/zencore.vcxproj.filters b/zencore/zencore.vcxproj.filters
index e3d1f6c67..e701e9354 100644
--- a/zencore/zencore.vcxproj.filters
+++ b/zencore/zencore.vcxproj.filters
@@ -12,7 +12,6 @@
<ClInclude Include="include\zencore\timer.h" />
<ClInclude Include="include\zencore\thread.h" />
<ClInclude Include="include\zencore\string.h" />
- <ClInclude Include="include\zencore\streamutil.h" />
<ClInclude Include="include\zencore\stream.h" />
<ClInclude Include="include\zencore\stats.h" />
<ClInclude Include="include\zencore\blake3.h" />
diff --git a/zenhttp/httpclient.cpp b/zenhttp/httpclient.cpp
index 20550b0c9..6e915e613 100644
--- a/zenhttp/httpclient.cpp
+++ b/zenhttp/httpclient.cpp
@@ -66,12 +66,11 @@ HttpClient::TransactPackage(std::string_view Url, CbPackage Package)
Writer.EndArray();
- MemoryOutStream MemOut;
- BinaryWriter MemWriter(MemOut);
+ BinaryWriter MemWriter;
Writer.Save(MemWriter);
Sess.SetHeader({{"Content-Type", "application/x-ue-offer"}, {"UE-Session", m_SessionId}, {"UE-Request", RequestIdString}});
- Sess.SetBody(cpr::Body{(const char*)MemOut.Data(), MemOut.Size()});
+ Sess.SetBody(cpr::Body{(const char*)MemWriter.Data(), MemWriter.Size()});
cpr::Response FilterResponse = Sess.Post();
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index 794a5fe94..9b5a48128 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -968,9 +968,8 @@ TEST_CASE("project.basic")
Body << "engine"
<< "/zooom";
- zen::MemoryOutStream MemOut;
- zen::BinaryWriter Writer{MemOut};
- Body.Save(Writer);
+ zen::BinaryWriter MemOut;
+ Body.Save(MemOut);
auto Response = cpr::Post(cpr::Url{BaseUri.c_str()}, cpr::Body{(const char*)MemOut.Data(), MemOut.Size()});
CHECK(Response.status_code == 201);
@@ -1035,11 +1034,10 @@ TEST_CASE("project.basic")
zen::CbObject Op = OpWriter.Save();
- zen::MemoryOutStream MemOut;
- zen::BinaryWriter Writer(MemOut);
- zen::CbPackage OpPackage(Op);
+ zen::BinaryWriter MemOut;
+ zen::CbPackage OpPackage(Op);
OpPackage.AddAttachment(Attach);
- OpPackage.Save(Writer);
+ OpPackage.Save(MemOut);
{
zen::StringBuilder<64> PostUri;
@@ -1130,9 +1128,8 @@ TEST_CASE("zcache.basic")
zen::CbObjectWriter Cbo;
Cbo << "index" << i;
- zen::MemoryOutStream MemOut;
- zen::BinaryWriter Writer{MemOut};
- Cbo.Save(Writer);
+ zen::BinaryWriter MemOut;
+ Cbo.Save(MemOut);
zen::IoHash Key = HashKey(i);
@@ -1160,9 +1157,8 @@ TEST_CASE("zcache.basic")
zen::CbObjectWriter Cbo;
Cbo << "index" << 42;
- zen::MemoryOutStream MemOut;
- zen::BinaryWriter Writer{MemOut};
- Cbo.Save(Writer);
+ zen::BinaryWriter MemOut;
+ Cbo.Save(MemOut);
zen::IoHash Key = HashKey(442);
@@ -1218,10 +1214,9 @@ TEST_CASE("zcache.cbpackage")
};
auto SerializeToBuffer = [](zen::CbPackage Package) -> zen::IoBuffer {
- zen::MemoryOutStream MemStream;
- zen::BinaryWriter Writer(MemStream);
+ zen::BinaryWriter MemStream;
- Package.Save(Writer);
+ Package.Save(MemStream);
return zen::IoBuffer(zen::IoBuffer::Clone, MemStream.Data(), MemStream.Size());
};
@@ -1469,9 +1464,8 @@ TEST_CASE("zcache.policy")
};
auto ToBuffer = [](zen::CbPackage Package) -> zen::IoBuffer {
- zen::MemoryOutStream MemStream;
- zen::BinaryWriter Writer(MemStream);
- Package.Save(Writer);
+ zen::BinaryWriter MemStream;
+ Package.Save(MemStream);
return zen::IoBuffer(zen::IoBuffer::Clone, MemStream.Data(), MemStream.Size());
};
@@ -1828,8 +1822,7 @@ struct RemoteExecutionRequest
}
PrepReq.EndArray();
- zen::BinaryWriter MemWriter(m_MemOut);
- PrepReq.Save(MemWriter);
+ PrepReq.Save(m_MemOut);
}
void Prep()
@@ -1931,7 +1924,7 @@ private:
const std::string m_BaseUri = "http://{}:{}/exec/jobs"_format(m_HostName, m_PortNumber);
const std::string m_CasUri = "http://{}:{}/cas"_format(m_HostName, m_PortNumber);
Visitor m_Visit{m_TreePath};
- zen::MemoryOutStream m_MemOut;
+ zen::BinaryWriter m_MemOut;
};
TEST_CASE("exec.basic")
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index 3ac1ec37f..e4af2a5b2 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -370,9 +370,8 @@ HttpStructuredCacheService::HandleGetCacheRecord(zen::HttpServerRequest& Request
CbPackage PackageWithoutAttachments;
PackageWithoutAttachments.SetObject(CacheRecord);
- MemoryOutStream MemStream;
- BinaryWriter Writer(MemStream);
- PackageWithoutAttachments.Save(Writer);
+ BinaryWriter MemStream;
+ PackageWithoutAttachments.Save(MemStream);
Value.Value = IoBuffer(IoBuffer::Clone, MemStream.Data(), MemStream.Size());
}
@@ -453,9 +452,8 @@ HttpStructuredCacheService::HandleGetCacheRecord(zen::HttpServerRequest& Request
NiceBytes(AttachmentBytes + Value.Value.Size()),
AttachmentCount);
- MemoryOutStream MemStream;
- BinaryWriter Writer(MemStream);
- Package.Save(Writer);
+ BinaryWriter MemStream;
+ Package.Save(MemStream);
IoBuffer Response(IoBuffer::Clone, MemStream.Data(), MemStream.Size());
diff --git a/zenserver/casstore.cpp b/zenserver/casstore.cpp
index b36dcc09f..88525bd36 100644
--- a/zenserver/casstore.cpp
+++ b/zenserver/casstore.cpp
@@ -2,8 +2,8 @@
#include "casstore.h"
+#include <zencore/fmtutils.h>
#include <zencore/logging.h>
-#include <zencore/streamutil.h>
#include <gsl/gsl-lite.hpp>
@@ -14,52 +14,6 @@ HttpCasService::HttpCasService(CasStore& Store) : m_CasStore(Store)
m_Router.AddPattern("cas", "([0-9A-Fa-f]{40})");
m_Router.RegisterRoute(
- "batch",
- [this](HttpRouterRequest& Req) {
- HttpServerRequest& ServerRequest = Req.ServerRequest();
-
- IoBuffer Payload = ServerRequest.ReadPayload();
- uint64_t EntryCount = Payload.Size() / sizeof(IoHash);
-
- if ((EntryCount * sizeof(IoHash)) != Payload.Size())
- {
- return ServerRequest.WriteResponse(HttpResponseCode::BadRequest);
- }
-
- const IoHash* Hashes = reinterpret_cast<const IoHash*>(Payload.Data());
- std::vector<IoBuffer> Values;
-
- MemoryOutStream HeaderStream;
- BinaryWriter HeaderWriter(HeaderStream);
-
- Values.emplace_back(); // Placeholder for header
-
- // Build response header
- HeaderWriter << uint32_t(0x12340000) << uint32_t(0);
-
- for (uint64_t i = 0; i < EntryCount; ++i)
- {
- IoHash ChunkHash = Hashes[i];
- IoBuffer Value = m_CasStore.FindChunk(ChunkHash);
-
- if (Value)
- {
- Values.emplace_back(std::move(Value));
- HeaderWriter << ChunkHash << uint64_t(Value.Size());
- }
- }
-
- // Make real header
-
- const_cast<uint32_t*>(reinterpret_cast<const uint32_t*>(HeaderStream.Data()))[1] = uint32_t(Values.size() - 1);
-
- Values[0] = IoBufferBuilder::MakeCloneFromMemory(HeaderStream.Data(), HeaderStream.Size());
-
- ServerRequest.WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Values);
- },
- HttpVerb::kPost);
-
- m_Router.RegisterRoute(
"{cas}",
[this](HttpRouterRequest& Req) {
IoHash Hash = IoHash::FromHexString(Req.GetCapture(1));
diff --git a/zenserver/projectstore.cpp b/zenserver/projectstore.cpp
index 1f4239b23..1a9eb2c67 100644
--- a/zenserver/projectstore.cpp
+++ b/zenserver/projectstore.cpp
@@ -635,8 +635,7 @@ ProjectStore::Project::Read()
void
ProjectStore::Project::Write()
{
- MemoryOutStream Mem;
- BinaryWriter Writer(Mem);
+ BinaryWriter Mem;
CbObjectWriter Cfg;
Cfg << "id" << Identifier;
@@ -644,7 +643,7 @@ ProjectStore::Project::Write()
Cfg << "project" << ProjectRootDir;
Cfg << "engine" << EngineRootDir;
- Cfg.Save(Writer);
+ Cfg.Save(Mem);
CreateDirectories(m_OplogStoragePath);
@@ -951,9 +950,8 @@ HttpProjectService::HttpProjectService(CasStore& Store, ProjectStore* Projects)
// Parse Request
- IoBuffer Payload = HttpReq.ReadPayload();
- MemoryInStream MemIn(Payload.Data(), Payload.Size());
- BinaryReader Reader(MemIn);
+ IoBuffer Payload = HttpReq.ReadPayload();
+ BinaryReader Reader(Payload);
struct RequestHeader
{
diff --git a/zenserver/upstream/upstreamcache.cpp b/zenserver/upstream/upstreamcache.cpp
index f056c1c76..0dd16cd06 100644
--- a/zenserver/upstream/upstreamcache.cpp
+++ b/zenserver/upstream/upstreamcache.cpp
@@ -172,9 +172,8 @@ namespace detail {
if (Result.Success)
{
- MemoryOutStream MemStream;
- BinaryWriter Writer(MemStream);
- Package.Save(Writer);
+ BinaryWriter MemStream;
+ Package.Save(MemStream);
Result.Response = IoBuffer(IoBuffer::Clone, MemStream.Data(), MemStream.Size());
}
@@ -420,9 +419,8 @@ namespace detail {
}
}
- MemoryOutStream MemStream;
- BinaryWriter Writer(MemStream);
- Package.Save(Writer);
+ BinaryWriter MemStream;
+ Package.Save(MemStream);
IoBuffer PackagePayload(IoBuffer::Wrap, MemStream.Data(), MemStream.Size());
for (int32_t Attempt = 0; Attempt < MaxAttempts && !Result.Success; Attempt++)
diff --git a/zenserver/upstream/zen.cpp b/zenserver/upstream/zen.cpp
index 530bed32a..c988a6b0b 100644
--- a/zenserver/upstream/zen.cpp
+++ b/zenserver/upstream/zen.cpp
@@ -181,10 +181,9 @@ Mesh::BroadcastPacket(CbObjectWriter& Obj)
detail::MessageHeader* Message = reinterpret_cast<detail::MessageHeader*>(MessageBuffer);
*Message = {};
- MemoryOutStream MemOut;
- BinaryWriter Writer(MemOut);
+ BinaryWriter MemOut;
- Obj.Save(Writer);
+ Obj.Save(MemOut);
// TODO: check that it fits in a packet!
diff --git a/zenserver/windows/service.cpp b/zenserver/windows/service.cpp
index b7b3b9bc1..23cefb7b5 100644
--- a/zenserver/windows/service.cpp
+++ b/zenserver/windows/service.cpp
@@ -2,8 +2,8 @@
#include "service.h"
-#include <zencore/zencore.h>
#include <zencore/except.h>
+#include <zencore/zencore.h>
#include <stdio.h>
#include <tchar.h>