From 3d414de23eadccdf85fd1455a0dfcbce10e07cdd Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Tue, 28 Sep 2021 21:57:23 +0200 Subject: 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 --- zenserver/cache/structuredcache.cpp | 10 +++----- zenserver/casstore.cpp | 48 +----------------------------------- zenserver/projectstore.cpp | 10 +++----- zenserver/upstream/upstreamcache.cpp | 10 +++----- zenserver/upstream/zen.cpp | 5 ++-- zenserver/windows/service.cpp | 2 +- 6 files changed, 16 insertions(+), 69 deletions(-) (limited to 'zenserver') 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 #include -#include #include @@ -13,52 +13,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(Payload.Data()); - std::vector 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(reinterpret_cast(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) { 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(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 #include +#include #include #include -- cgit v1.2.3