diff options
| -rw-r--r-- | zen/cmds/run.cpp | 5 | ||||
| -rw-r--r-- | zencore/compactbinarypackage.cpp | 47 | ||||
| -rw-r--r-- | zencore/include/zencore/stream.h | 149 | ||||
| -rw-r--r-- | zencore/include/zencore/streamutil.h | 69 | ||||
| -rw-r--r-- | zencore/stream.cpp | 36 | ||||
| -rw-r--r-- | zencore/zencore.vcxproj | 1 | ||||
| -rw-r--r-- | zencore/zencore.vcxproj.filters | 1 | ||||
| -rw-r--r-- | zenhttp/httpclient.cpp | 5 | ||||
| -rw-r--r-- | zenserver-test/zenserver-test.cpp | 37 | ||||
| -rw-r--r-- | zenserver/cache/structuredcache.cpp | 10 | ||||
| -rw-r--r-- | zenserver/casstore.cpp | 48 | ||||
| -rw-r--r-- | zenserver/projectstore.cpp | 10 | ||||
| -rw-r--r-- | zenserver/upstream/upstreamcache.cpp | 10 | ||||
| -rw-r--r-- | zenserver/upstream/zen.cpp | 5 | ||||
| -rw-r--r-- | zenserver/windows/service.cpp | 2 |
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> |