New JsonWriter for improved client performance (RIPD-439):

When JSON-RPC and Websocket responses are calculated, the result is stored
in intermediate Json::Value objects and later composed in a single linear
memory buffer before being sent to the socket.  These classes support a
new model for building responses that supports incremental construction
of JSON replies in constant time and removes the requirement that all
data returned be located in continuguous memory.
* New JsonWriter incrementally writes JSON with O(1) granularity and memory.
* Array, Object are RAII wrappers for the O(1) JsonWriter.
This commit is contained in:
Tom Ritchford
2014-10-01 18:16:36 -04:00
committed by Vinnie Falco
parent f5b39ee911
commit dbd75169e5
11 changed files with 1527 additions and 0 deletions

View File

@@ -3166,6 +3166,22 @@
</ClCompile>
<ClInclude Include="..\..\src\ripple\rpc\impl\Handler.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\rpc\impl\JsonObject.cpp">
<ExcludedFromBuild>True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\rpc\impl\JsonObject.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\rpc\impl\JsonObject_test.cpp">
<ExcludedFromBuild>True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple\rpc\impl\JsonWriter.cpp">
<ExcludedFromBuild>True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\rpc\impl\JsonWriter.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\rpc\impl\JsonWriter_test.cpp">
<ExcludedFromBuild>True</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple\rpc\impl\LegacyPathFind.cpp">
<ExcludedFromBuild>True</ExcludedFromBuild>
</ClCompile>
@@ -3196,6 +3212,8 @@
<ClCompile Include="..\..\src\ripple\rpc\impl\Status_test.cpp">
<ExcludedFromBuild>True</ExcludedFromBuild>
</ClCompile>
<ClInclude Include="..\..\src\ripple\rpc\impl\TestOutputSuite.h">
</ClInclude>
<ClCompile Include="..\..\src\ripple\rpc\impl\TransactionSign.cpp">
<ExcludedFromBuild>True</ExcludedFromBuild>
</ClCompile>
@@ -3207,6 +3225,8 @@
</ClInclude>
<ClInclude Include="..\..\src\ripple\rpc\Manager.h">
</ClInclude>
<ClInclude Include="..\..\src\ripple\rpc\Output.h">
</ClInclude>
<ClInclude Include="..\..\src\ripple\rpc\Request.h">
</ClInclude>
<ClInclude Include="..\..\src\ripple\rpc\RPCHandler.h">

View File

@@ -4350,6 +4350,24 @@
<ClInclude Include="..\..\src\ripple\rpc\impl\Handler.h">
<Filter>ripple\rpc\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\rpc\impl\JsonObject.cpp">
<Filter>ripple\rpc\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\rpc\impl\JsonObject.h">
<Filter>ripple\rpc\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\rpc\impl\JsonObject_test.cpp">
<Filter>ripple\rpc\impl</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple\rpc\impl\JsonWriter.cpp">
<Filter>ripple\rpc\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\rpc\impl\JsonWriter.h">
<Filter>ripple\rpc\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\rpc\impl\JsonWriter_test.cpp">
<Filter>ripple\rpc\impl</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple\rpc\impl\LegacyPathFind.cpp">
<Filter>ripple\rpc\impl</Filter>
</ClCompile>
@@ -4383,6 +4401,9 @@
<ClCompile Include="..\..\src\ripple\rpc\impl\Status_test.cpp">
<Filter>ripple\rpc\impl</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ripple\rpc\impl\TestOutputSuite.h">
<Filter>ripple\rpc\impl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ripple\rpc\impl\TransactionSign.cpp">
<Filter>ripple\rpc\impl</Filter>
</ClCompile>
@@ -4398,6 +4419,9 @@
<ClInclude Include="..\..\src\ripple\rpc\Manager.h">
<Filter>ripple\rpc</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple\rpc\Output.h">
<Filter>ripple\rpc</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple\rpc\Request.h">
<Filter>ripple\rpc</Filter>
</ClInclude>