mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 19:15:54 +00:00
Levelize SHAMap:
The SHAMap class is refactored into a separate module where each translation unit compiles separate without errors. Dependencies on higher level business logic are removed. SHAMap now depends only on basics, crypto, nodestore, and protocol: * Inject NodeStore::Database& to SHAMap * Move sync filter instances to app/ledger/ * Move shamap to its own module * Move FullBelowCache to shamap/ * Move private code to shamap/impl/ * Refactor SHAMap treatment of missing node handler * Inject and use Journal for logging in SHAMap
This commit is contained in:
@@ -1689,11 +1689,21 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\ledger\AcceptedLedgerTx.h">
|
<ClInclude Include="..\..\src\ripple\app\ledger\AcceptedLedgerTx.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\app\ledger\AccountStateSF.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\app\ledger\AccountStateSF.h">
|
||||||
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\ledger\BookListeners.cpp">
|
<ClCompile Include="..\..\src\ripple\app\ledger\BookListeners.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\ledger\BookListeners.h">
|
<ClInclude Include="..\..\src\ripple\app\ledger\BookListeners.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\app\ledger\ConsensusTransSetSF.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\app\ledger\ConsensusTransSetSF.h">
|
||||||
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\ledger\DirectoryEntryIterator.cpp">
|
<ClCompile Include="..\..\src\ripple\app\ledger\DirectoryEntryIterator.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -1761,20 +1771,21 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\ledger\OrderBookIterator.h">
|
<ClInclude Include="..\..\src\ripple\app\ledger\OrderBookIterator.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\app\ledger\TransactionStateSF.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\app\ledger\TransactionStateSF.h">
|
||||||
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\main\Application.cpp">
|
<ClCompile Include="..\..\src\ripple\app\main\Application.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\main\Application.h">
|
<ClInclude Include="..\..\src\ripple\app\main\Application.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\ripple\app\main\BasicFullBelowCache.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\main\CollectorManager.cpp">
|
<ClCompile Include="..\..\src\ripple\app\main\CollectorManager.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\main\CollectorManager.h">
|
<ClInclude Include="..\..\src\ripple\app\main\CollectorManager.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\ripple\app\main\FullBelowCache.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\main\LoadManager.cpp">
|
<ClCompile Include="..\..\src\ripple\app\main\LoadManager.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -1815,6 +1826,11 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\misc\CanonicalTXSet.h">
|
<ClInclude Include="..\..\src\ripple\app\misc\CanonicalTXSet.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\app\misc\DefaultMissingNodeHandler.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\app\misc\DefaultMissingNodeHandler.h">
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\ripple\app\misc\FeeVote.h">
|
<ClInclude Include="..\..\src\ripple\app\misc\FeeVote.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\misc\FeeVoteImpl.cpp">
|
<ClCompile Include="..\..\src\ripple\app\misc\FeeVoteImpl.cpp">
|
||||||
@@ -1956,57 +1972,6 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\peers\UniqueNodeList.h">
|
<ClInclude Include="..\..\src\ripple\app\peers\UniqueNodeList.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMap.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMap.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapAddNode.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapDelta.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapItem.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapItem.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapMissingNode.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapMissingNode.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapNodeID.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapNodeID.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapSync.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapSyncFilter.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapSyncFilters.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapSyncFilters.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapTreeNode.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapTreeNode.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\tests\FetchPack.test.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\tests\SHAMap.test.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\tests\SHAMapSync.test.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\TreeNodeCache.h">
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\transactors\AddWallet.cpp">
|
<ClCompile Include="..\..\src\ripple\app\transactors\AddWallet.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -2426,17 +2391,11 @@
|
|||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\Factory.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\Factory.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Backend.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\BatchWriter.cpp">
|
<ClCompile Include="..\..\src\ripple\nodestore\impl\BatchWriter.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\impl\BatchWriter.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\impl\BatchWriter.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Database.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\impl\DatabaseImp.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\impl\DatabaseImp.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\DatabaseRotatingImp.cpp">
|
<ClCompile Include="..\..\src\ripple\nodestore\impl\DatabaseRotatingImp.cpp">
|
||||||
@@ -2457,9 +2416,6 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\impl\EncodedBlob.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\impl\EncodedBlob.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Factory.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\ManagerImp.cpp">
|
<ClCompile Include="..\..\src\ripple\nodestore\impl\ManagerImp.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -2468,12 +2424,6 @@
|
|||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\NodeObject.cpp">
|
<ClCompile Include="..\..\src\ripple\nodestore\impl\NodeObject.cpp">
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Scheduler.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Task.cpp">
|
|
||||||
<ExcludedFromBuild>True</ExcludedFromBuild>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\impl\Tuning.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\impl\Tuning.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\Manager.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\Manager.h">
|
||||||
@@ -3198,6 +3148,54 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\server\Writer.h">
|
<ClInclude Include="..\..\src\ripple\server\Writer.h">
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\FullBelowCache.h">
|
||||||
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMap.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapDelta.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapItem.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapMissingNode.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapNodeID.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapSync.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapTreeNode.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMap.h">
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapAddNode.h">
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapItem.h">
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapMissingNode.h">
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapNodeID.h">
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapSyncFilter.h">
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapTreeNode.h">
|
||||||
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\tests\FetchPack.test.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\tests\SHAMap.test.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\tests\SHAMapSync.test.cpp">
|
||||||
|
<ExcludedFromBuild>True</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\TreeNodeCache.h">
|
||||||
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\unity\app.cpp">
|
<ClCompile Include="..\..\src\ripple\unity\app.cpp">
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\unity\app.h">
|
<ClInclude Include="..\..\src\ripple\unity\app.h">
|
||||||
@@ -3272,6 +3270,8 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\ripple\unity\server.cpp">
|
<ClCompile Include="..\..\src\ripple\unity\server.cpp">
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\unity\shamap.cpp">
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\ripple\unity\snappy.cpp">
|
<ClCompile Include="..\..\src\ripple\unity\snappy.cpp">
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='debug|x64'">..\..\src\snappy\config;..\..\src\snappy\snappy;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='debug|x64'">..\..\src\snappy\config;..\..\src\snappy\snappy;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='release|x64'">..\..\src\snappy\config;..\..\src\snappy\snappy;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='release|x64'">..\..\src\snappy\config;..\..\src\snappy\snappy;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
|||||||
@@ -313,12 +313,6 @@
|
|||||||
<Filter Include="ripple\app\peers">
|
<Filter Include="ripple\app\peers">
|
||||||
<UniqueIdentifier>{07831F2A-6752-E81C-87AF-4D47D425BE8E}</UniqueIdentifier>
|
<UniqueIdentifier>{07831F2A-6752-E81C-87AF-4D47D425BE8E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter Include="ripple\app\shamap">
|
|
||||||
<UniqueIdentifier>{091DDFB4-76F4-04FB-2787-D51B4A44185E}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="ripple\app\shamap\tests">
|
|
||||||
<UniqueIdentifier>{A42D8FD4-E866-E1A8-9CBC-1C75906F16D2}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="ripple\app\transactors">
|
<Filter Include="ripple\app\transactors">
|
||||||
<UniqueIdentifier>{418BEF0D-AAAB-C368-7D9E-0A97636DE5A6}</UniqueIdentifier>
|
<UniqueIdentifier>{418BEF0D-AAAB-C368-7D9E-0A97636DE5A6}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
@@ -445,6 +439,15 @@
|
|||||||
<Filter Include="ripple\server\tests">
|
<Filter Include="ripple\server\tests">
|
||||||
<UniqueIdentifier>{9BA46DD5-4B0C-3C1D-6F16-93DE8A9B7313}</UniqueIdentifier>
|
<UniqueIdentifier>{9BA46DD5-4B0C-3C1D-6F16-93DE8A9B7313}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="ripple\shamap">
|
||||||
|
<UniqueIdentifier>{81841155-E173-EABC-D87B-5DDBE199F8E3}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="ripple\shamap\impl">
|
||||||
|
<UniqueIdentifier>{92AC870A-6B4B-9CD5-4F7F-648C72CFA0D3}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="ripple\shamap\tests">
|
||||||
|
<UniqueIdentifier>{F0AEA72D-7030-C8C7-1E34-1029BBD56886}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="ripple\unity">
|
<Filter Include="ripple\unity">
|
||||||
<UniqueIdentifier>{5DB3CD0B-B361-B301-9562-697CA8A52B68}</UniqueIdentifier>
|
<UniqueIdentifier>{5DB3CD0B-B361-B301-9562-697CA8A52B68}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
@@ -2544,12 +2547,24 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\app\ledger\AcceptedLedgerTx.h">
|
<ClInclude Include="..\..\src\ripple\app\ledger\AcceptedLedgerTx.h">
|
||||||
<Filter>ripple\app\ledger</Filter>
|
<Filter>ripple\app\ledger</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\app\ledger\AccountStateSF.cpp">
|
||||||
|
<Filter>ripple\app\ledger</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\app\ledger\AccountStateSF.h">
|
||||||
|
<Filter>ripple\app\ledger</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\ledger\BookListeners.cpp">
|
<ClCompile Include="..\..\src\ripple\app\ledger\BookListeners.cpp">
|
||||||
<Filter>ripple\app\ledger</Filter>
|
<Filter>ripple\app\ledger</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\ledger\BookListeners.h">
|
<ClInclude Include="..\..\src\ripple\app\ledger\BookListeners.h">
|
||||||
<Filter>ripple\app\ledger</Filter>
|
<Filter>ripple\app\ledger</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\app\ledger\ConsensusTransSetSF.cpp">
|
||||||
|
<Filter>ripple\app\ledger</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\app\ledger\ConsensusTransSetSF.h">
|
||||||
|
<Filter>ripple\app\ledger</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\ledger\DirectoryEntryIterator.cpp">
|
<ClCompile Include="..\..\src\ripple\app\ledger\DirectoryEntryIterator.cpp">
|
||||||
<Filter>ripple\app\ledger</Filter>
|
<Filter>ripple\app\ledger</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -2631,24 +2646,24 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\app\ledger\OrderBookIterator.h">
|
<ClInclude Include="..\..\src\ripple\app\ledger\OrderBookIterator.h">
|
||||||
<Filter>ripple\app\ledger</Filter>
|
<Filter>ripple\app\ledger</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\app\ledger\TransactionStateSF.cpp">
|
||||||
|
<Filter>ripple\app\ledger</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\app\ledger\TransactionStateSF.h">
|
||||||
|
<Filter>ripple\app\ledger</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\main\Application.cpp">
|
<ClCompile Include="..\..\src\ripple\app\main\Application.cpp">
|
||||||
<Filter>ripple\app\main</Filter>
|
<Filter>ripple\app\main</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\main\Application.h">
|
<ClInclude Include="..\..\src\ripple\app\main\Application.h">
|
||||||
<Filter>ripple\app\main</Filter>
|
<Filter>ripple\app\main</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\ripple\app\main\BasicFullBelowCache.h">
|
|
||||||
<Filter>ripple\app\main</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\main\CollectorManager.cpp">
|
<ClCompile Include="..\..\src\ripple\app\main\CollectorManager.cpp">
|
||||||
<Filter>ripple\app\main</Filter>
|
<Filter>ripple\app\main</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\app\main\CollectorManager.h">
|
<ClInclude Include="..\..\src\ripple\app\main\CollectorManager.h">
|
||||||
<Filter>ripple\app\main</Filter>
|
<Filter>ripple\app\main</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\ripple\app\main\FullBelowCache.h">
|
|
||||||
<Filter>ripple\app\main</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\main\LoadManager.cpp">
|
<ClCompile Include="..\..\src\ripple\app\main\LoadManager.cpp">
|
||||||
<Filter>ripple\app\main</Filter>
|
<Filter>ripple\app\main</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -2697,6 +2712,12 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\app\misc\CanonicalTXSet.h">
|
<ClInclude Include="..\..\src\ripple\app\misc\CanonicalTXSet.h">
|
||||||
<Filter>ripple\app\misc</Filter>
|
<Filter>ripple\app\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\app\misc\DefaultMissingNodeHandler.cpp">
|
||||||
|
<Filter>ripple\app\misc</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\app\misc\DefaultMissingNodeHandler.h">
|
||||||
|
<Filter>ripple\app\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\ripple\app\misc\FeeVote.h">
|
<ClInclude Include="..\..\src\ripple\app\misc\FeeVote.h">
|
||||||
<Filter>ripple\app\misc</Filter>
|
<Filter>ripple\app\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -2865,66 +2886,6 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\app\peers\UniqueNodeList.h">
|
<ClInclude Include="..\..\src\ripple\app\peers\UniqueNodeList.h">
|
||||||
<Filter>ripple\app\peers</Filter>
|
<Filter>ripple\app\peers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMap.cpp">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMap.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapAddNode.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapDelta.cpp">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapItem.cpp">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapItem.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapMissingNode.cpp">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapMissingNode.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapNodeID.cpp">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapNodeID.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapSync.cpp">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapSyncFilter.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapSyncFilters.cpp">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapSyncFilters.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\SHAMapTreeNode.cpp">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\SHAMapTreeNode.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\tests\FetchPack.test.cpp">
|
|
||||||
<Filter>ripple\app\shamap\tests</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\tests\SHAMap.test.cpp">
|
|
||||||
<Filter>ripple\app\shamap\tests</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\shamap\tests\SHAMapSync.test.cpp">
|
|
||||||
<Filter>ripple\app\shamap\tests</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\app\shamap\TreeNodeCache.h">
|
|
||||||
<Filter>ripple\app\shamap</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClCompile Include="..\..\src\ripple\app\transactors\AddWallet.cpp">
|
<ClCompile Include="..\..\src\ripple\app\transactors\AddWallet.cpp">
|
||||||
<Filter>ripple\app\transactors</Filter>
|
<Filter>ripple\app\transactors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -3432,18 +3393,12 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\nodestore\Factory.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\Factory.h">
|
||||||
<Filter>ripple\nodestore</Filter>
|
<Filter>ripple\nodestore</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Backend.cpp">
|
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\BatchWriter.cpp">
|
<ClCompile Include="..\..\src\ripple\nodestore\impl\BatchWriter.cpp">
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
<Filter>ripple\nodestore\impl</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\impl\BatchWriter.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\impl\BatchWriter.h">
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
<Filter>ripple\nodestore\impl</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Database.cpp">
|
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\impl\DatabaseImp.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\impl\DatabaseImp.h">
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
<Filter>ripple\nodestore\impl</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -3468,9 +3423,6 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\nodestore\impl\EncodedBlob.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\impl\EncodedBlob.h">
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
<Filter>ripple\nodestore\impl</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Factory.cpp">
|
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\ManagerImp.cpp">
|
<ClCompile Include="..\..\src\ripple\nodestore\impl\ManagerImp.cpp">
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
<Filter>ripple\nodestore\impl</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -3480,12 +3432,6 @@
|
|||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\NodeObject.cpp">
|
<ClCompile Include="..\..\src\ripple\nodestore\impl\NodeObject.cpp">
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
<Filter>ripple\nodestore\impl</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Scheduler.cpp">
|
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\ripple\nodestore\impl\Task.cpp">
|
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClInclude Include="..\..\src\ripple\nodestore\impl\Tuning.h">
|
<ClInclude Include="..\..\src\ripple\nodestore\impl\Tuning.h">
|
||||||
<Filter>ripple\nodestore\impl</Filter>
|
<Filter>ripple\nodestore\impl</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -4341,6 +4287,63 @@
|
|||||||
<ClInclude Include="..\..\src\ripple\server\Writer.h">
|
<ClInclude Include="..\..\src\ripple\server\Writer.h">
|
||||||
<Filter>ripple\server</Filter>
|
<Filter>ripple\server</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\FullBelowCache.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMap.cpp">
|
||||||
|
<Filter>ripple\shamap\impl</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapDelta.cpp">
|
||||||
|
<Filter>ripple\shamap\impl</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapItem.cpp">
|
||||||
|
<Filter>ripple\shamap\impl</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapMissingNode.cpp">
|
||||||
|
<Filter>ripple\shamap\impl</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapNodeID.cpp">
|
||||||
|
<Filter>ripple\shamap\impl</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapSync.cpp">
|
||||||
|
<Filter>ripple\shamap\impl</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\impl\SHAMapTreeNode.cpp">
|
||||||
|
<Filter>ripple\shamap\impl</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMap.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapAddNode.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapItem.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapMissingNode.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapNodeID.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapSyncFilter.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\SHAMapTreeNode.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\tests\FetchPack.test.cpp">
|
||||||
|
<Filter>ripple\shamap\tests</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\tests\SHAMap.test.cpp">
|
||||||
|
<Filter>ripple\shamap\tests</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\shamap\tests\SHAMapSync.test.cpp">
|
||||||
|
<Filter>ripple\shamap\tests</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClInclude Include="..\..\src\ripple\shamap\TreeNodeCache.h">
|
||||||
|
<Filter>ripple\shamap</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClCompile Include="..\..\src\ripple\unity\app.cpp">
|
<ClCompile Include="..\..\src\ripple\unity\app.cpp">
|
||||||
<Filter>ripple\unity</Filter>
|
<Filter>ripple\unity</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -4440,6 +4443,9 @@
|
|||||||
<ClCompile Include="..\..\src\ripple\unity\server.cpp">
|
<ClCompile Include="..\..\src\ripple\unity\server.cpp">
|
||||||
<Filter>ripple\unity</Filter>
|
<Filter>ripple\unity</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\ripple\unity\shamap.cpp">
|
||||||
|
<Filter>ripple\unity</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\ripple\unity\snappy.cpp">
|
<ClCompile Include="..\..\src\ripple\unity\snappy.cpp">
|
||||||
<Filter>ripple\unity</Filter>
|
<Filter>ripple\unity</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|||||||
@@ -580,6 +580,8 @@ for tu_style in ['classic', 'unity']:
|
|||||||
*list_sources('src/ripple/basics', '.cpp'))
|
*list_sources('src/ripple/basics', '.cpp'))
|
||||||
object_builder.add_source_files(
|
object_builder.add_source_files(
|
||||||
*list_sources('src/ripple/protocol', '.cpp'))
|
*list_sources('src/ripple/protocol', '.cpp'))
|
||||||
|
object_builder.add_source_files(
|
||||||
|
*list_sources('src/ripple/shamap', '.cpp'))
|
||||||
object_builder.add_source_files(
|
object_builder.add_source_files(
|
||||||
*list_sources('src/ripple/nodestore', '.cpp'),
|
*list_sources('src/ripple/nodestore', '.cpp'),
|
||||||
CPPPATH=[
|
CPPPATH=[
|
||||||
@@ -591,6 +593,7 @@ for tu_style in ['classic', 'unity']:
|
|||||||
object_builder.add_source_files(
|
object_builder.add_source_files(
|
||||||
'src/ripple/unity/basics.cpp',
|
'src/ripple/unity/basics.cpp',
|
||||||
'src/ripple/unity/protocol.cpp',
|
'src/ripple/unity/protocol.cpp',
|
||||||
|
'src/ripple/unity/shamap.cpp',
|
||||||
)
|
)
|
||||||
object_builder.add_source_files(
|
object_builder.add_source_files(
|
||||||
'src/ripple/unity/nodestore.cpp',
|
'src/ripple/unity/nodestore.cpp',
|
||||||
|
|||||||
@@ -24,8 +24,10 @@
|
|||||||
#ifndef BEAST_RANDOM_H_INCLUDED
|
#ifndef BEAST_RANDOM_H_INCLUDED
|
||||||
#define BEAST_RANDOM_H_INCLUDED
|
#define BEAST_RANDOM_H_INCLUDED
|
||||||
|
|
||||||
namespace beast
|
#include <cstddef>
|
||||||
{
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace beast {
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include <ripple/app/consensus/DisputedTx.h>
|
#include <ripple/app/consensus/DisputedTx.h>
|
||||||
#include <ripple/app/consensus/LedgerConsensus.h>
|
#include <ripple/app/consensus/LedgerConsensus.h>
|
||||||
#include <ripple/json/to_string.h>
|
#include <ripple/app/misc/DefaultMissingNodeHandler.h> // VFALCO bad dependency
|
||||||
#include <ripple/app/ledger/InboundLedgers.h>
|
#include <ripple/app/ledger/InboundLedgers.h>
|
||||||
#include <ripple/app/ledger/LedgerMaster.h>
|
#include <ripple/app/ledger/LedgerMaster.h>
|
||||||
#include <ripple/app/ledger/LedgerTiming.h>
|
#include <ripple/app/ledger/LedgerTiming.h>
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
#include <ripple/core/Config.h>
|
#include <ripple/core/Config.h>
|
||||||
#include <ripple/core/JobQueue.h>
|
#include <ripple/core/JobQueue.h>
|
||||||
#include <ripple/core/LoadFeeTrack.h>
|
#include <ripple/core/LoadFeeTrack.h>
|
||||||
|
#include <ripple/json/to_string.h>
|
||||||
#include <ripple/overlay/Overlay.h>
|
#include <ripple/overlay/Overlay.h>
|
||||||
#include <ripple/overlay/predicates.h>
|
#include <ripple/overlay/predicates.h>
|
||||||
#include <ripple/protocol/STValidation.h>
|
#include <ripple/protocol/STValidation.h>
|
||||||
@@ -351,9 +352,9 @@ public:
|
|||||||
{
|
{
|
||||||
Application& app = getApp();
|
Application& app = getApp();
|
||||||
SHAMap::pointer empty = std::make_shared<SHAMap> (
|
SHAMap::pointer empty = std::make_shared<SHAMap> (
|
||||||
smtTRANSACTION,
|
smtTRANSACTION, app.getFullBelowCache(),
|
||||||
app.getFullBelowCache(),
|
app.getTreeNodeCache(), getApp().getNodeStore(),
|
||||||
app.getTreeNodeCache());
|
DefaultMissingNodeHandler(), deprecatedLogs().journal("SHAMap"));
|
||||||
mapCompleteInternal (hash, empty, false);
|
mapCompleteInternal (hash, empty, false);
|
||||||
return empty;
|
return empty;
|
||||||
}
|
}
|
||||||
|
|||||||
48
src/ripple/app/ledger/AccountStateSF.cpp
Normal file
48
src/ripple/app/ledger/AccountStateSF.cpp
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
This file is part of rippled: https://github.com/ripple/rippled
|
||||||
|
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/app/ledger/AccountStateSF.h>
|
||||||
|
#include <ripple/app/tx/TransactionMaster.h>
|
||||||
|
#include <ripple/nodestore/Database.h>
|
||||||
|
#include <ripple/protocol/HashPrefix.h>
|
||||||
|
|
||||||
|
namespace ripple {
|
||||||
|
|
||||||
|
AccountStateSF::AccountStateSF (std::uint32_t ledgerSeq)
|
||||||
|
: mLedgerSeq (ledgerSeq)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void AccountStateSF::gotNode (bool fromFilter,
|
||||||
|
SHAMapNodeID const& id,
|
||||||
|
uint256 const& nodeHash,
|
||||||
|
Blob& nodeData,
|
||||||
|
SHAMapTreeNode::TNType)
|
||||||
|
{
|
||||||
|
getApp().getNodeStore ().store (hotACCOUNT_NODE, mLedgerSeq, std::move (nodeData), nodeHash);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AccountStateSF::haveNode (SHAMapNodeID const& id,
|
||||||
|
uint256 const& nodeHash,
|
||||||
|
Blob& nodeData)
|
||||||
|
{
|
||||||
|
return getApp().getOPs ().getFetchPack (nodeHash, nodeData);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ripple
|
||||||
51
src/ripple/app/ledger/AccountStateSF.h
Normal file
51
src/ripple/app/ledger/AccountStateSF.h
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
This file is part of rippled: https://github.com/ripple/rippled
|
||||||
|
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
#ifndef RIPPLE_LEDGER_ACCOUNTSTATESF_H_INCLUDED
|
||||||
|
#define RIPPLE_LEDGER_ACCOUNTSTATESF_H_INCLUDED
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMapSyncFilter.h>
|
||||||
|
|
||||||
|
namespace ripple {
|
||||||
|
|
||||||
|
// This class is only needed on add functions
|
||||||
|
// sync filter for account state nodes during ledger sync
|
||||||
|
class AccountStateSF : public SHAMapSyncFilter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit AccountStateSF (std::uint32_t ledgerSeq);
|
||||||
|
|
||||||
|
// Note that the nodeData is overwritten by this call
|
||||||
|
void gotNode (bool fromFilter,
|
||||||
|
SHAMapNodeID const& id,
|
||||||
|
uint256 const& nodeHash,
|
||||||
|
Blob& nodeData,
|
||||||
|
SHAMapTreeNode::TNType);
|
||||||
|
|
||||||
|
bool haveNode (SHAMapNodeID const& id,
|
||||||
|
uint256 const& nodeHash,
|
||||||
|
Blob& nodeData);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::uint32_t mLedgerSeq;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // ripple
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#include <ripple/app/shamap/SHAMapSyncFilters.h>
|
#include <ripple/app/ledger/ConsensusTransSetSF.h>
|
||||||
#include <ripple/app/tx/TransactionMaster.h>
|
#include <ripple/app/tx/TransactionMaster.h>
|
||||||
#include <ripple/nodestore/Database.h>
|
#include <ripple/nodestore/Database.h>
|
||||||
#include <ripple/protocol/HashPrefix.h>
|
#include <ripple/protocol/HashPrefix.h>
|
||||||
@@ -85,54 +85,4 @@ bool ConsensusTransSetSF::haveNode (const SHAMapNodeID& id, uint256 const& nodeH
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
AccountStateSF::AccountStateSF (std::uint32_t ledgerSeq)
|
|
||||||
: mLedgerSeq (ledgerSeq)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccountStateSF::gotNode (bool fromFilter,
|
|
||||||
SHAMapNodeID const& id,
|
|
||||||
uint256 const& nodeHash,
|
|
||||||
Blob& nodeData,
|
|
||||||
SHAMapTreeNode::TNType)
|
|
||||||
{
|
|
||||||
getApp().getNodeStore ().store (hotACCOUNT_NODE, mLedgerSeq, std::move (nodeData), nodeHash);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool AccountStateSF::haveNode (SHAMapNodeID const& id,
|
|
||||||
uint256 const& nodeHash,
|
|
||||||
Blob& nodeData)
|
|
||||||
{
|
|
||||||
return getApp().getOPs ().getFetchPack (nodeHash, nodeData);
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
TransactionStateSF::TransactionStateSF (std::uint32_t ledgerSeq)
|
|
||||||
: mLedgerSeq (ledgerSeq)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void TransactionStateSF::gotNode (bool fromFilter,
|
|
||||||
SHAMapNodeID const& id,
|
|
||||||
uint256 const& nodeHash,
|
|
||||||
Blob& nodeData,
|
|
||||||
SHAMapTreeNode::TNType type)
|
|
||||||
{
|
|
||||||
getApp().getNodeStore ().store (
|
|
||||||
(type == SHAMapTreeNode::tnTRANSACTION_NM) ? hotTRANSACTION : hotTRANSACTION_NODE,
|
|
||||||
mLedgerSeq,
|
|
||||||
std::move (nodeData),
|
|
||||||
nodeHash);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TransactionStateSF::haveNode (SHAMapNodeID const& id,
|
|
||||||
uint256 const& nodeHash,
|
|
||||||
Blob& nodeData)
|
|
||||||
{
|
|
||||||
return getApp().getOPs ().getFetchPack (nodeHash, nodeData);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // ripple
|
} // ripple
|
||||||
@@ -17,8 +17,11 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#ifndef RIPPLE_SHAMAPSYNCFILTERS_H
|
#ifndef RIPPLE_LEDGER_CONSENSUSTRANSSETSF_H_INCLUDED
|
||||||
#define RIPPLE_SHAMAPSYNCFILTERS_H
|
#define RIPPLE_LEDGER_CONSENSUSTRANSSETSF_H_INCLUDED
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMapSyncFilter.h>
|
||||||
|
#include <ripple/basics/TaggedCache.h>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
@@ -50,50 +53,6 @@ private:
|
|||||||
NodeCache& m_nodeCache;
|
NodeCache& m_nodeCache;
|
||||||
};
|
};
|
||||||
|
|
||||||
// This class is only needed on add functions
|
|
||||||
// sync filter for account state nodes during ledger sync
|
|
||||||
class AccountStateSF : public SHAMapSyncFilter
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit AccountStateSF (std::uint32_t ledgerSeq);
|
|
||||||
|
|
||||||
// Note that the nodeData is overwritten by this call
|
|
||||||
void gotNode (bool fromFilter,
|
|
||||||
SHAMapNodeID const& id,
|
|
||||||
uint256 const& nodeHash,
|
|
||||||
Blob& nodeData,
|
|
||||||
SHAMapTreeNode::TNType);
|
|
||||||
|
|
||||||
bool haveNode (SHAMapNodeID const& id,
|
|
||||||
uint256 const& nodeHash,
|
|
||||||
Blob& nodeData);
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::uint32_t mLedgerSeq;
|
|
||||||
};
|
|
||||||
|
|
||||||
// This class is only needed on add functions
|
|
||||||
// sync filter for transactions tree during ledger sync
|
|
||||||
class TransactionStateSF : public SHAMapSyncFilter
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit TransactionStateSF (std::uint32_t ledgerSeq);
|
|
||||||
|
|
||||||
// Note that the nodeData is overwritten by this call
|
|
||||||
void gotNode (bool fromFilter,
|
|
||||||
SHAMapNodeID const& id,
|
|
||||||
uint256 const& nodeHash,
|
|
||||||
Blob& nodeData,
|
|
||||||
SHAMapTreeNode::TNType);
|
|
||||||
|
|
||||||
bool haveNode (SHAMapNodeID const& id,
|
|
||||||
uint256 const& nodeHash,
|
|
||||||
Blob& nodeData);
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::uint32_t mLedgerSeq;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // ripple
|
} // ripple
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -17,7 +17,9 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#include <ripple/app/shamap/SHAMapNodeID.h>
|
#include <ripple/shamap/SHAMapNodeID.h>
|
||||||
|
#include <ripple/app/ledger/AccountStateSF.h>
|
||||||
|
#include <ripple/app/ledger/TransactionStateSF.h>
|
||||||
#include <ripple/basics/Log.h>
|
#include <ripple/basics/Log.h>
|
||||||
#include <ripple/core/JobQueue.h>
|
#include <ripple/core/JobQueue.h>
|
||||||
#include <ripple/overlay/Overlay.h>
|
#include <ripple/overlay/Overlay.h>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#include <ripple/app/ledger/LedgerToJson.h>
|
#include <ripple/app/ledger/LedgerToJson.h>
|
||||||
|
#include <ripple/app/misc/DefaultMissingNodeHandler.h>
|
||||||
#include <ripple/basics/Log.h>
|
#include <ripple/basics/Log.h>
|
||||||
#include <ripple/basics/LoggedTimings.h>
|
#include <ripple/basics/LoggedTimings.h>
|
||||||
#include <ripple/basics/StringUtilities.h>
|
#include <ripple/basics/StringUtilities.h>
|
||||||
@@ -45,11 +46,13 @@ Ledger::Ledger (RippleAddress const& masterID, std::uint64_t startAmount)
|
|||||||
, mAccepted (false)
|
, mAccepted (false)
|
||||||
, mImmutable (false)
|
, mImmutable (false)
|
||||||
, mTransactionMap (std::make_shared <SHAMap> (smtTRANSACTION,
|
, mTransactionMap (std::make_shared <SHAMap> (smtTRANSACTION,
|
||||||
getApp().getFullBelowCache(),
|
getApp().getFullBelowCache(), getApp().getTreeNodeCache(),
|
||||||
getApp().getTreeNodeCache()))
|
getApp().getNodeStore(), DefaultMissingNodeHandler(),
|
||||||
|
deprecatedLogs().journal("SHAMap")))
|
||||||
, mAccountStateMap (std::make_shared <SHAMap> (smtSTATE,
|
, mAccountStateMap (std::make_shared <SHAMap> (smtSTATE,
|
||||||
getApp().getFullBelowCache(),
|
getApp().getFullBelowCache(), getApp().getTreeNodeCache(),
|
||||||
getApp().getTreeNodeCache()))
|
getApp().getNodeStore(), DefaultMissingNodeHandler(),
|
||||||
|
deprecatedLogs().journal("SHAMap")))
|
||||||
{
|
{
|
||||||
// special case: put coins in root account
|
// special case: put coins in root account
|
||||||
auto startAccount = std::make_shared<AccountState> (masterID);
|
auto startAccount = std::make_shared<AccountState> (masterID);
|
||||||
@@ -92,12 +95,13 @@ Ledger::Ledger (uint256 const& parentHash,
|
|||||||
, mAccepted (false)
|
, mAccepted (false)
|
||||||
, mImmutable (true)
|
, mImmutable (true)
|
||||||
, mTransactionMap (std::make_shared <SHAMap> (
|
, mTransactionMap (std::make_shared <SHAMap> (
|
||||||
smtTRANSACTION, transHash,
|
smtTRANSACTION, transHash, getApp().getFullBelowCache(),
|
||||||
getApp().getFullBelowCache(),
|
getApp().getTreeNodeCache(), getApp().getNodeStore(),
|
||||||
getApp().getTreeNodeCache()))
|
DefaultMissingNodeHandler(), deprecatedLogs().journal("SHAMap")))
|
||||||
, mAccountStateMap (std::make_shared <SHAMap> (smtSTATE, accountHash,
|
, mAccountStateMap (std::make_shared <SHAMap> (smtSTATE, accountHash,
|
||||||
getApp().getFullBelowCache(),
|
getApp().getFullBelowCache(), getApp().getTreeNodeCache(),
|
||||||
getApp().getTreeNodeCache()))
|
getApp().getNodeStore(), DefaultMissingNodeHandler(),
|
||||||
|
deprecatedLogs().journal("SHAMap")))
|
||||||
{
|
{
|
||||||
updateHash ();
|
updateHash ();
|
||||||
loaded = true;
|
loaded = true;
|
||||||
@@ -158,8 +162,9 @@ Ledger::Ledger (bool /* dummy */,
|
|||||||
, mAccepted (false)
|
, mAccepted (false)
|
||||||
, mImmutable (false)
|
, mImmutable (false)
|
||||||
, mTransactionMap (std::make_shared <SHAMap> (smtTRANSACTION,
|
, mTransactionMap (std::make_shared <SHAMap> (smtTRANSACTION,
|
||||||
getApp().getFullBelowCache(),
|
getApp().getFullBelowCache(), getApp().getTreeNodeCache(),
|
||||||
getApp().getTreeNodeCache()))
|
getApp().getNodeStore(), DefaultMissingNodeHandler(),
|
||||||
|
deprecatedLogs().journal("SHAMap")))
|
||||||
, mAccountStateMap (prevLedger.mAccountStateMap->snapShot (true))
|
, mAccountStateMap (prevLedger.mAccountStateMap->snapShot (true))
|
||||||
{
|
{
|
||||||
prevLedger.updateHash ();
|
prevLedger.updateHash ();
|
||||||
@@ -228,10 +233,12 @@ Ledger::Ledger (std::uint32_t ledgerSeq, std::uint32_t closeTime)
|
|||||||
mImmutable (false),
|
mImmutable (false),
|
||||||
mTransactionMap (std::make_shared <SHAMap> (
|
mTransactionMap (std::make_shared <SHAMap> (
|
||||||
smtTRANSACTION, getApp().getFullBelowCache(),
|
smtTRANSACTION, getApp().getFullBelowCache(),
|
||||||
getApp().getTreeNodeCache())),
|
getApp().getTreeNodeCache(), getApp().getNodeStore(),
|
||||||
|
DefaultMissingNodeHandler(), deprecatedLogs().journal("SHAMap"))),
|
||||||
mAccountStateMap (std::make_shared <SHAMap> (
|
mAccountStateMap (std::make_shared <SHAMap> (
|
||||||
smtSTATE, getApp().getFullBelowCache(),
|
smtSTATE, getApp().getFullBelowCache(),
|
||||||
getApp().getTreeNodeCache()))
|
getApp().getTreeNodeCache(), getApp().getNodeStore(),
|
||||||
|
DefaultMissingNodeHandler(), deprecatedLogs().journal("SHAMap")))
|
||||||
{
|
{
|
||||||
initializeFees ();
|
initializeFees ();
|
||||||
}
|
}
|
||||||
@@ -333,11 +340,13 @@ void Ledger::setRaw (Serializer& s, bool hasPrefix)
|
|||||||
{
|
{
|
||||||
Application& app = getApp();
|
Application& app = getApp();
|
||||||
mTransactionMap = std::make_shared<SHAMap> (smtTRANSACTION, mTransHash,
|
mTransactionMap = std::make_shared<SHAMap> (smtTRANSACTION, mTransHash,
|
||||||
app.getFullBelowCache(),
|
app.getFullBelowCache(), app.getTreeNodeCache(),
|
||||||
app.getTreeNodeCache());
|
getApp().getNodeStore(), DefaultMissingNodeHandler(),
|
||||||
|
deprecatedLogs().journal("SHAMap"));
|
||||||
mAccountStateMap = std::make_shared<SHAMap> (smtSTATE, mAccountHash,
|
mAccountStateMap = std::make_shared<SHAMap> (smtSTATE, mAccountHash,
|
||||||
app.getFullBelowCache(),
|
app.getFullBelowCache(), app.getTreeNodeCache(),
|
||||||
app.getTreeNodeCache());
|
getApp().getNodeStore(), DefaultMissingNodeHandler(),
|
||||||
|
deprecatedLogs().journal("SHAMap"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#ifndef RIPPLE_LEDGER_H
|
#ifndef RIPPLE_LEDGER_H
|
||||||
#define RIPPLE_LEDGER_H
|
#define RIPPLE_LEDGER_H
|
||||||
|
|
||||||
#include <ripple/app/shamap/SHAMap.h>
|
#include <ripple/shamap/SHAMap.h>
|
||||||
#include <ripple/app/tx/Transaction.h>
|
#include <ripple/app/tx/Transaction.h>
|
||||||
#include <ripple/app/tx/TransactionMeta.h>
|
#include <ripple/app/tx/TransactionMeta.h>
|
||||||
#include <ripple/app/misc/AccountState.h>
|
#include <ripple/app/misc/AccountState.h>
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
# ripple_app
|
|
||||||
|
|
||||||
## Ledger.cpp
|
|
||||||
|
|
||||||
- Move all inlines into the .cpp, make the interface abstract
|
|
||||||
|
|
||||||
- Move static database functions into a real class, perhaps LedgerMaster
|
|
||||||
|
|
||||||
## LedgerMaster.cpp
|
|
||||||
|
|
||||||
- Change getLedgerByHash() to not use "all bits zero" to mean
|
|
||||||
"return the current ledger"
|
|
||||||
|
|
||||||
- replace uint32 with LedgerIndex and choose appropriate names
|
|
||||||
|
|
||||||
## Beast
|
|
||||||
|
|
||||||
- Change Stoppable to not require a constructor with parameters
|
|
||||||
52
src/ripple/app/ledger/TransactionStateSF.cpp
Normal file
52
src/ripple/app/ledger/TransactionStateSF.cpp
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
This file is part of rippled: https://github.com/ripple/rippled
|
||||||
|
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/app/ledger/TransactionStateSF.h>
|
||||||
|
#include <ripple/app/tx/TransactionMaster.h>
|
||||||
|
#include <ripple/nodestore/Database.h>
|
||||||
|
#include <ripple/protocol/HashPrefix.h>
|
||||||
|
|
||||||
|
namespace ripple {
|
||||||
|
|
||||||
|
TransactionStateSF::TransactionStateSF (std::uint32_t ledgerSeq)
|
||||||
|
: mLedgerSeq (ledgerSeq)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransactionStateSF::gotNode (bool fromFilter,
|
||||||
|
SHAMapNodeID const& id,
|
||||||
|
uint256 const& nodeHash,
|
||||||
|
Blob& nodeData,
|
||||||
|
SHAMapTreeNode::TNType type)
|
||||||
|
{
|
||||||
|
getApp().getNodeStore ().store (
|
||||||
|
(type == SHAMapTreeNode::tnTRANSACTION_NM) ? hotTRANSACTION : hotTRANSACTION_NODE,
|
||||||
|
mLedgerSeq,
|
||||||
|
std::move (nodeData),
|
||||||
|
nodeHash);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TransactionStateSF::haveNode (SHAMapNodeID const& id,
|
||||||
|
uint256 const& nodeHash,
|
||||||
|
Blob& nodeData)
|
||||||
|
{
|
||||||
|
return getApp().getOPs ().getFetchPack (nodeHash, nodeData);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ripple
|
||||||
52
src/ripple/app/ledger/TransactionStateSF.h
Normal file
52
src/ripple/app/ledger/TransactionStateSF.h
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
This file is part of rippled: https://github.com/ripple/rippled
|
||||||
|
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
#ifndef RIPPLE_LEDGER_TRANSACTIONSTATESF_H_INCLUDED
|
||||||
|
#define RIPPLE_LEDGER_TRANSACTIONSTATESF_H_INCLUDED
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMapSyncFilter.h>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace ripple {
|
||||||
|
|
||||||
|
// This class is only needed on add functions
|
||||||
|
// sync filter for transactions tree during ledger sync
|
||||||
|
class TransactionStateSF : public SHAMapSyncFilter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit TransactionStateSF (std::uint32_t ledgerSeq);
|
||||||
|
|
||||||
|
// Note that the nodeData is overwritten by this call
|
||||||
|
void gotNode (bool fromFilter,
|
||||||
|
SHAMapNodeID const& id,
|
||||||
|
uint256 const& nodeHash,
|
||||||
|
Blob& nodeData,
|
||||||
|
SHAMapTreeNode::TNType);
|
||||||
|
|
||||||
|
bool haveNode (SHAMapNodeID const& id,
|
||||||
|
uint256 const& nodeHash,
|
||||||
|
Blob& nodeData);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::uint32_t mLedgerSeq;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // ripple
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -20,12 +20,13 @@
|
|||||||
#ifndef RIPPLE_APP_APPLICATION_H_INCLUDED
|
#ifndef RIPPLE_APP_APPLICATION_H_INCLUDED
|
||||||
#define RIPPLE_APP_APPLICATION_H_INCLUDED
|
#define RIPPLE_APP_APPLICATION_H_INCLUDED
|
||||||
|
|
||||||
#include <ripple/app/main/FullBelowCache.h>
|
#include <ripple/shamap/FullBelowCache.h>
|
||||||
#include <ripple/app/shamap/TreeNodeCache.h>
|
#include <ripple/shamap/TreeNodeCache.h>
|
||||||
#include <ripple/basics/TaggedCache.h>
|
#include <ripple/basics/TaggedCache.h>
|
||||||
#include <beast/utility/PropertyStream.h>
|
#include <beast/utility/PropertyStream.h>
|
||||||
|
#include <beast/cxx14/memory.h> // <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
||||||
namespace boost { namespace asio { class io_service; } }
|
namespace boost { namespace asio { class io_service; } }
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|||||||
@@ -24,13 +24,8 @@ namespace ripple {
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
fullBelowTargetSize = 524288
|
fullBelowTargetSize = 524288
|
||||||
|
|
||||||
,fullBelowExpirationSeconds = 600
|
,fullBelowExpirationSeconds = 600
|
||||||
|
|
||||||
,defaultCacheTargetSize = 0
|
|
||||||
|
|
||||||
,defaultCacheExpirationSeconds = 120
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,11 +17,15 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/app/misc/DefaultMissingNodeHandler.h>
|
||||||
|
#include <ripple/app/misc/NetworkOPs.h>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
namespace RadMap {
|
|
||||||
|
|
||||||
// Unit test to go here if the class becomes
|
void
|
||||||
// a non-trivial wrapper for KeyCache.
|
DefaultMissingNodeHandler::operator() (std::uint32_t refNUm)
|
||||||
|
{
|
||||||
|
getApp().getOPs ().missingNodeInLedger (refNUm);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
} // ripple
|
||||||
}
|
|
||||||
@@ -17,15 +17,18 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#ifndef RIPPLE_FULLBELOWCACHE_H_INCLUDED
|
#ifndef RIPPLE_APP_DEFAULTMISSINGNODEHANDLER_H_INCLUDED
|
||||||
#define RIPPLE_FULLBELOWCACHE_H_INCLUDED
|
#define RIPPLE_APP_DEFAULTMISSINGNODEHANDLER_H_INCLUDED
|
||||||
|
|
||||||
#include <ripple/basics/base_uint.h>
|
#include <cstdint>
|
||||||
#include <ripple/app/main/BasicFullBelowCache.h>
|
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
typedef BasicFullBelowCache <uint256> FullBelowCache;
|
/** Default handler which calls NetworkOPs. */
|
||||||
|
struct DefaultMissingNodeHandler
|
||||||
|
{
|
||||||
|
void operator()(std::uint32_t refNum);
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,11 +21,16 @@
|
|||||||
#define RIPPLE_NETWORKOPS_H
|
#define RIPPLE_NETWORKOPS_H
|
||||||
|
|
||||||
#include <ripple/protocol/STValidation.h>
|
#include <ripple/protocol/STValidation.h>
|
||||||
|
#include <ripple/app/ledger/Ledger.h>
|
||||||
|
#include <ripple/app/ledger/LedgerProposal.h>
|
||||||
#include <ripple/net/InfoSub.h>
|
#include <ripple/net/InfoSub.h>
|
||||||
#include <beast/cxx14/memory.h> // <memory>
|
#include <beast/cxx14/memory.h> // <memory>
|
||||||
#include <beast/threads/Stoppable.h>
|
#include <beast/threads/Stoppable.h>
|
||||||
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
|
#include "ripple.pb.h"
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
// Operations that clients may wish to perform against the network
|
// Operations that clients may wish to perform against the network
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/app/ledger/ConsensusTransSetSF.h>
|
||||||
|
#include <ripple/app/misc/DefaultMissingNodeHandler.h>
|
||||||
#include <ripple/overlay/Overlay.h>
|
#include <ripple/overlay/Overlay.h>
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
@@ -36,7 +38,8 @@ TransactionAcquire::TransactionAcquire (uint256 const& hash, clock_type& clock)
|
|||||||
{
|
{
|
||||||
Application& app = getApp();
|
Application& app = getApp();
|
||||||
mMap = std::make_shared<SHAMap> (smtTRANSACTION, hash,
|
mMap = std::make_shared<SHAMap> (smtTRANSACTION, hash,
|
||||||
app.getFullBelowCache (), app.getTreeNodeCache());
|
app.getFullBelowCache (), app.getTreeNodeCache(), app.getNodeStore(),
|
||||||
|
DefaultMissingNodeHandler(), deprecatedLogs().journal("SHAMap"));
|
||||||
mMap->setUnbacked ();
|
mMap->setUnbacked ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include <beast/utility/LeakChecked.h>
|
#include <beast/utility/LeakChecked.h>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|||||||
@@ -17,15 +17,19 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#ifndef RIPPLE_RADMAP_BASICFULLBELOWCACHE_H_INCLUDED
|
#ifndef RIPPLE_SHAMAP_FULLBELOWCACHE_H_INCLUDED
|
||||||
#define RIPPLE_RADMAP_BASICFULLBELOWCACHE_H_INCLUDED
|
#define RIPPLE_SHAMAP_FULLBELOWCACHE_H_INCLUDED
|
||||||
|
|
||||||
|
#include <ripple/basics/base_uint.h>
|
||||||
#include <ripple/basics/KeyCache.h>
|
#include <ripple/basics/KeyCache.h>
|
||||||
#include <ripple/app/main/Tuning.h>
|
|
||||||
#include <beast/insight/Collector.h>
|
#include <beast/insight/Collector.h>
|
||||||
|
#include <atomic>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
|
namespace detail {
|
||||||
|
|
||||||
/** Remembers which tree keys have all descendants resident.
|
/** Remembers which tree keys have all descendants resident.
|
||||||
This optimizes the process of acquiring a complete tree.
|
This optimizes the process of acquiring a complete tree.
|
||||||
*/
|
*/
|
||||||
@@ -36,6 +40,12 @@ private:
|
|||||||
typedef KeyCache <Key> CacheType;
|
typedef KeyCache <Key> CacheType;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
defaultCacheTargetSize = 0
|
||||||
|
,defaultCacheExpirationSeconds = 120
|
||||||
|
};
|
||||||
|
|
||||||
typedef Key key_type;
|
typedef Key key_type;
|
||||||
typedef typename CacheType::size_type size_type;
|
typedef typename CacheType::size_type size_type;
|
||||||
typedef typename CacheType::clock_type clock_type;
|
typedef typename CacheType::clock_type clock_type;
|
||||||
@@ -122,6 +132,10 @@ private:
|
|||||||
std::atomic <std::uint32_t> m_gen;
|
std::atomic <std::uint32_t> m_gen;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // detail
|
||||||
|
|
||||||
|
using FullBelowCache = detail::BasicFullBelowCache <uint256>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -112,7 +112,7 @@ The `fetchNodeExternalNT()` method goes through three phases:
|
|||||||
|
|
||||||
2. If the node is not in the TreeNodeCache, we attempt to locate the node
|
2. If the node is not in the TreeNodeCache, we attempt to locate the node
|
||||||
in the historic data stored by the data base. The call to
|
in the historic data stored by the data base. The call to
|
||||||
to `getApp().getNodeStore().fetch(hash)` does that work for us.
|
to `fetch(hash)` does that work for us.
|
||||||
|
|
||||||
3. Finally, if mLedgerSeq is non-zero and we did't locate the node in the
|
3. Finally, if mLedgerSeq is non-zero and we did't locate the node in the
|
||||||
historic data, then we call a MissingNodeHandler.
|
historic data, then we call a MissingNodeHandler.
|
||||||
@@ -17,22 +17,24 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#ifndef RIPPLE_SHAMAP_H
|
#ifndef RIPPLE_SHAMAP_SHAMAP_H_INCLUDED
|
||||||
#define RIPPLE_SHAMAP_H
|
#define RIPPLE_SHAMAP_SHAMAP_H_INCLUDED
|
||||||
|
|
||||||
#include <ripple/app/shamap/SHAMapAddNode.h>
|
#include <ripple/shamap/FullBelowCache.h>
|
||||||
#include <ripple/app/shamap/SHAMapItem.h>
|
#include <ripple/shamap/SHAMapAddNode.h>
|
||||||
#include <ripple/app/shamap/SHAMapMissingNode.h>
|
#include <ripple/shamap/SHAMapItem.h>
|
||||||
#include <ripple/app/shamap/SHAMapNodeID.h>
|
#include <ripple/shamap/SHAMapMissingNode.h>
|
||||||
#include <ripple/app/shamap/SHAMapSyncFilter.h>
|
#include <ripple/shamap/SHAMapNodeID.h>
|
||||||
#include <ripple/app/shamap/SHAMapTreeNode.h>
|
#include <ripple/shamap/SHAMapSyncFilter.h>
|
||||||
#include <ripple/basics/LoggedTimings.h>
|
#include <ripple/shamap/SHAMapTreeNode.h>
|
||||||
#include <ripple/basics/UnorderedContainers.h>
|
#include <ripple/basics/UnorderedContainers.h>
|
||||||
#include <ripple/app/main/FullBelowCache.h>
|
#include <ripple/nodestore/Database.h>
|
||||||
#include <ripple/nodestore/NodeObject.h>
|
#include <ripple/nodestore/NodeObject.h>
|
||||||
|
#include <beast/utility/Journal.h>
|
||||||
#include <boost/thread/mutex.hpp>
|
#include <boost/thread/mutex.hpp>
|
||||||
#include <boost/thread/shared_lock_guard.hpp>
|
#include <boost/thread/shared_lock_guard.hpp>
|
||||||
#include <boost/thread/shared_mutex.hpp>
|
#include <boost/thread/shared_mutex.hpp>
|
||||||
|
#include <stack>
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
|
|
||||||
@@ -71,6 +73,9 @@ enum SHAMapState
|
|||||||
smsInvalid = 4, // Map is known not to be valid (usually synching a corrupt ledger)
|
smsInvalid = 4, // Map is known not to be valid (usually synching a corrupt ledger)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Function object which handles missing nodes. */
|
||||||
|
using MissingNodeHandler = std::function <void (std::uint32_t refNum)>;
|
||||||
|
|
||||||
/** A SHAMap is both a radix tree with a fan-out of 16 and a Merkle tree.
|
/** A SHAMap is both a radix tree with a fan-out of 16 and a Merkle tree.
|
||||||
|
|
||||||
A radix tree is a tree with two properties:
|
A radix tree is a tree with two properties:
|
||||||
@@ -95,16 +100,6 @@ enum SHAMapState
|
|||||||
*/
|
*/
|
||||||
class SHAMap
|
class SHAMap
|
||||||
{
|
{
|
||||||
private:
|
|
||||||
/** Function object which handles missing nodes. */
|
|
||||||
typedef std::function <void (std::uint32_t refNum)> MissingNodeHandler;
|
|
||||||
|
|
||||||
/** Default handler which calls NetworkOPs. */
|
|
||||||
struct DefaultMissingNodeHandler
|
|
||||||
{
|
|
||||||
void operator() (std::uint32_t refNUm);
|
|
||||||
};
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@@ -129,15 +124,20 @@ public:
|
|||||||
SHAMapType t,
|
SHAMapType t,
|
||||||
FullBelowCache& fullBelowCache,
|
FullBelowCache& fullBelowCache,
|
||||||
TreeNodeCache& treeNodeCache,
|
TreeNodeCache& treeNodeCache,
|
||||||
std::uint32_t seq = 1,
|
NodeStore::Database& db,
|
||||||
MissingNodeHandler missing_node_handler = DefaultMissingNodeHandler());
|
MissingNodeHandler missing_node_handler,
|
||||||
|
beast::Journal journal,
|
||||||
|
std::uint32_t seq = 1
|
||||||
|
);
|
||||||
|
|
||||||
SHAMap (
|
SHAMap (
|
||||||
SHAMapType t,
|
SHAMapType t,
|
||||||
uint256 const& hash,
|
uint256 const& hash,
|
||||||
FullBelowCache& fullBelowCache,
|
FullBelowCache& fullBelowCache,
|
||||||
TreeNodeCache& treeNodeCache,
|
TreeNodeCache& treeNodeCache,
|
||||||
MissingNodeHandler missing_node_handler = DefaultMissingNodeHandler());
|
NodeStore::Database& db,
|
||||||
|
MissingNodeHandler missing_node_handler,
|
||||||
|
beast::Journal journal);
|
||||||
|
|
||||||
~SHAMap ();
|
~SHAMap ();
|
||||||
|
|
||||||
@@ -324,7 +324,8 @@ private:
|
|||||||
int walkSubTree (bool doWrite, NodeObjectType t, std::uint32_t seq);
|
int walkSubTree (bool doWrite, NodeObjectType t, std::uint32_t seq);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
beast::Journal journal_;
|
||||||
|
NodeStore::Database& db_;
|
||||||
FullBelowCache& m_fullBelowCache;
|
FullBelowCache& m_fullBelowCache;
|
||||||
std::uint32_t mSeq;
|
std::uint32_t mSeq;
|
||||||
std::uint32_t mLedgerSeq; // sequence number of ledger this is part of
|
std::uint32_t mLedgerSeq; // sequence number of ledger this is part of
|
||||||
@@ -332,7 +333,7 @@ private:
|
|||||||
SHAMapTreeNode::pointer root;
|
SHAMapTreeNode::pointer root;
|
||||||
SHAMapState mState;
|
SHAMapState mState;
|
||||||
SHAMapType mType;
|
SHAMapType mType;
|
||||||
bool mBacked; // Map is backed by the database
|
bool mBacked = true; // Map is backed by the database
|
||||||
MissingNodeHandler m_missing_node_handler;
|
MissingNodeHandler m_missing_node_handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <ripple/basics/CountedObject.h>
|
#include <ripple/basics/CountedObject.h>
|
||||||
#include <ripple/protocol/Serializer.h>
|
#include <ripple/protocol/Serializer.h>
|
||||||
#include <ripple/basics/base_uint.h>
|
#include <ripple/basics/base_uint.h>
|
||||||
|
#include <beast/utility/Journal.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
@@ -122,7 +123,8 @@ public:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
virtual void dump ();
|
// VFALCO Why is this virtual?
|
||||||
|
virtual void dump (beast::Journal journal);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint256 mTag;
|
uint256 mTag;
|
||||||
@@ -20,6 +20,8 @@
|
|||||||
#ifndef RIPPLE_SHAMAPMISSINGNODE_H
|
#ifndef RIPPLE_SHAMAPMISSINGNODE_H
|
||||||
#define RIPPLE_SHAMAPMISSINGNODE_H
|
#define RIPPLE_SHAMAPMISSINGNODE_H
|
||||||
|
|
||||||
|
#include <ripple/basics/base_uint.h>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
enum SHAMapType
|
enum SHAMapType
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include <ripple/protocol/Serializer.h>
|
#include <ripple/protocol/Serializer.h>
|
||||||
#include <ripple/basics/base_uint.h>
|
#include <ripple/basics/base_uint.h>
|
||||||
|
#include <beast/utility/Journal.h>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
@@ -78,11 +79,6 @@ public:
|
|||||||
return mHash;
|
return mHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool isPopulated () const
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
SHAMapNodeID getParentNodeID () const
|
SHAMapNodeID getParentNodeID () const
|
||||||
{
|
{
|
||||||
assert (mDepth);
|
assert (mDepth);
|
||||||
@@ -113,7 +109,7 @@ public:
|
|||||||
bool operator!= (uint256 const& n) const {return !(*this == n);}
|
bool operator!= (uint256 const& n) const {return !(*this == n);}
|
||||||
|
|
||||||
virtual std::string getString () const;
|
virtual std::string getString () const;
|
||||||
void dump () const;
|
void dump (beast::Journal journal) const;
|
||||||
|
|
||||||
static uint256 getNodeID (int depth, uint256 const& hash);
|
static uint256 getNodeID (int depth, uint256 const& hash);
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
#ifndef RIPPLE_SHAMAPSYNCFILTER_H
|
#ifndef RIPPLE_SHAMAPSYNCFILTER_H
|
||||||
#define RIPPLE_SHAMAPSYNCFILTER_H
|
#define RIPPLE_SHAMAPSYNCFILTER_H
|
||||||
|
|
||||||
#include <ripple/app/shamap/SHAMapTreeNode.h>
|
#include <ripple/shamap/SHAMapTreeNode.h>
|
||||||
|
|
||||||
/** Callback for filtering SHAMap during sync. */
|
/** Callback for filtering SHAMap during sync. */
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
@@ -17,13 +17,15 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#ifndef RIPPLE_SHAMAPTREENODE_H
|
#ifndef RIPPLE_SHAMAP_SHAMAPTREENODE_H
|
||||||
#define RIPPLE_SHAMAPTREENODE_H
|
#define RIPPLE_SHAMAP_SHAMAPTREENODE_H
|
||||||
|
|
||||||
#include <ripple/app/shamap/SHAMapNodeID.h>
|
#include <ripple/shamap/SHAMapItem.h>
|
||||||
#include <ripple/app/shamap/TreeNodeCache.h>
|
#include <ripple/shamap/SHAMapNodeID.h>
|
||||||
|
#include <ripple/shamap/TreeNodeCache.h>
|
||||||
#include <ripple/basics/CountedObject.h>
|
#include <ripple/basics/CountedObject.h>
|
||||||
#include <ripple/basics/TaggedCache.h>
|
#include <ripple/basics/TaggedCache.h>
|
||||||
|
#include <beast/utility/Journal.h>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
@@ -67,11 +69,6 @@ public:
|
|||||||
SHANodeFormat format, uint256 const& hash, bool hashValid);
|
SHANodeFormat format, uint256 const& hash, bool hashValid);
|
||||||
void addRaw (Serializer&, SHANodeFormat format);
|
void addRaw (Serializer&, SHANodeFormat format);
|
||||||
|
|
||||||
virtual bool isPopulated () const
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// node functions
|
// node functions
|
||||||
std::uint32_t getSeq () const
|
std::uint32_t getSeq () const
|
||||||
{
|
{
|
||||||
@@ -178,7 +175,8 @@ public:
|
|||||||
mFullBelowGen = gen;
|
mFullBelowGen = gen;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void dump (SHAMapNodeID const&);
|
// VFALCO Why is this virtual?
|
||||||
|
virtual void dump (SHAMapNodeID const&, beast::Journal journal);
|
||||||
virtual std::string getString (SHAMapNodeID const&) const;
|
virtual std::string getString (SHAMapNodeID const&) const;
|
||||||
|
|
||||||
SHAMapTreeNode* getChildPointer (int branch);
|
SHAMapTreeNode* getChildPointer (int branch);
|
||||||
@@ -17,33 +17,28 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#include <ripple/basics/Log.h>
|
#include <ripple/shamap/SHAMap.h>
|
||||||
#include <ripple/nodestore/Database.h>
|
|
||||||
#include <beast/unit_test/suite.h>
|
#include <beast/unit_test/suite.h>
|
||||||
#include <beast/chrono/manual_clock.h>
|
#include <beast/chrono/manual_clock.h>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
void SHAMap::DefaultMissingNodeHandler::operator() (std::uint32_t refNUm)
|
|
||||||
{
|
|
||||||
getApp().getOPs ().missingNodeInLedger (refNUm);
|
|
||||||
};
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
SHAMap::SHAMap (
|
SHAMap::SHAMap (
|
||||||
SHAMapType t,
|
SHAMapType t,
|
||||||
FullBelowCache& fullBelowCache,
|
FullBelowCache& fullBelowCache,
|
||||||
TreeNodeCache& treeNodeCache,
|
TreeNodeCache& treeNodeCache,
|
||||||
std::uint32_t seq,
|
NodeStore::Database& db,
|
||||||
MissingNodeHandler missing_node_handler)
|
MissingNodeHandler missing_node_handler,
|
||||||
: m_fullBelowCache (fullBelowCache)
|
beast::Journal journal,
|
||||||
|
std::uint32_t seq)
|
||||||
|
: journal_(journal)
|
||||||
|
, db_(db)
|
||||||
|
, m_fullBelowCache (fullBelowCache)
|
||||||
, mSeq (seq)
|
, mSeq (seq)
|
||||||
, mLedgerSeq (0)
|
, mLedgerSeq (0)
|
||||||
, mTreeNodeCache (treeNodeCache)
|
, mTreeNodeCache (treeNodeCache)
|
||||||
, mState (smsModifying)
|
, mState (smsModifying)
|
||||||
, mType (t)
|
, mType (t)
|
||||||
, mBacked (true)
|
|
||||||
, m_missing_node_handler (missing_node_handler)
|
, m_missing_node_handler (missing_node_handler)
|
||||||
{
|
{
|
||||||
assert (mSeq != 0);
|
assert (mSeq != 0);
|
||||||
@@ -57,14 +52,17 @@ SHAMap::SHAMap (
|
|||||||
uint256 const& hash,
|
uint256 const& hash,
|
||||||
FullBelowCache& fullBelowCache,
|
FullBelowCache& fullBelowCache,
|
||||||
TreeNodeCache& treeNodeCache,
|
TreeNodeCache& treeNodeCache,
|
||||||
MissingNodeHandler missing_node_handler)
|
NodeStore::Database& db,
|
||||||
: m_fullBelowCache (fullBelowCache)
|
MissingNodeHandler missing_node_handler,
|
||||||
|
beast::Journal journal)
|
||||||
|
: journal_(journal)
|
||||||
|
, db_(db)
|
||||||
|
, m_fullBelowCache (fullBelowCache)
|
||||||
, mSeq (1)
|
, mSeq (1)
|
||||||
, mLedgerSeq (0)
|
, mLedgerSeq (0)
|
||||||
, mTreeNodeCache (treeNodeCache)
|
, mTreeNodeCache (treeNodeCache)
|
||||||
, mState (smsSynching)
|
, mState (smsSynching)
|
||||||
, mType (t)
|
, mType (t)
|
||||||
, mBacked (true)
|
|
||||||
, m_missing_node_handler (missing_node_handler)
|
, m_missing_node_handler (missing_node_handler)
|
||||||
{
|
{
|
||||||
root = std::make_shared<SHAMapTreeNode> (mSeq);
|
root = std::make_shared<SHAMapTreeNode> (mSeq);
|
||||||
@@ -74,15 +72,13 @@ SHAMap::SHAMap (
|
|||||||
SHAMap::~SHAMap ()
|
SHAMap::~SHAMap ()
|
||||||
{
|
{
|
||||||
mState = smsInvalid;
|
mState = smsInvalid;
|
||||||
|
|
||||||
if (root)
|
|
||||||
logTimedDestroy <SHAMap> (root, "root node");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SHAMap::pointer SHAMap::snapShot (bool isMutable)
|
SHAMap::pointer SHAMap::snapShot (bool isMutable)
|
||||||
{
|
{
|
||||||
SHAMap::pointer ret = std::make_shared<SHAMap> (mType,
|
SHAMap::pointer ret = std::make_shared<SHAMap> (mType,
|
||||||
m_fullBelowCache, mTreeNodeCache);
|
m_fullBelowCache, mTreeNodeCache, db_, m_missing_node_handler,
|
||||||
|
journal_);
|
||||||
SHAMap& newMap = *ret;
|
SHAMap& newMap = *ret;
|
||||||
|
|
||||||
if (!isMutable)
|
if (!isMutable)
|
||||||
@@ -156,14 +152,16 @@ SHAMap::dirtyUp (SharedPtrNodeStack& stack,
|
|||||||
|
|
||||||
if (! node->setChild (branch, child->getNodeHash(), child))
|
if (! node->setChild (branch, child->getNodeHash(), child))
|
||||||
{
|
{
|
||||||
WriteLog (lsFATAL, SHAMap) << "dirtyUp terminates early";
|
journal_.fatal <<
|
||||||
|
"dirtyUp terminates early";
|
||||||
assert (false);
|
assert (false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ST_DEBUG
|
#ifdef ST_DEBUG
|
||||||
WriteLog (lsTRACE, SHAMap) << "dirtyUp sets branch " << branch << " to " << prevHash;
|
if (journal_.trace) journal_.trace <<
|
||||||
#endif
|
"dirtyUp sets branch " << branch << " to " << prevHash;
|
||||||
|
#endif
|
||||||
child = std::move (node);
|
child = std::move (node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -192,9 +190,9 @@ SHAMapTreeNode::pointer SHAMap::fetchNodeFromDB (uint256 const& hash)
|
|||||||
{
|
{
|
||||||
SHAMapTreeNode::pointer node;
|
SHAMapTreeNode::pointer node;
|
||||||
|
|
||||||
if (mBacked && getApp().running ())
|
if (mBacked)
|
||||||
{
|
{
|
||||||
NodeObject::pointer obj = getApp().getNodeStore().fetch (hash);
|
NodeObject::pointer obj = db_.fetch (hash);
|
||||||
if (obj)
|
if (obj)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -205,7 +203,8 @@ SHAMapTreeNode::pointer SHAMap::fetchNodeFromDB (uint256 const& hash)
|
|||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "Invalid DB node " << hash;
|
if (journal_.warning) journal_.warning <<
|
||||||
|
"Invalid DB node " << hash;
|
||||||
return SHAMapTreeNode::pointer ();
|
return SHAMapTreeNode::pointer ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -394,7 +393,7 @@ SHAMapTreeNode* SHAMap::descendAsync (SHAMapTreeNode* parent, int branch,
|
|||||||
if (!ptr && mBacked)
|
if (!ptr && mBacked)
|
||||||
{
|
{
|
||||||
NodeObject::pointer obj;
|
NodeObject::pointer obj;
|
||||||
if (!getApp().getNodeStore().asyncFetch (hash, obj))
|
if (! db_.asyncFetch (hash, obj))
|
||||||
{
|
{
|
||||||
pending = true;
|
pending = true;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@@ -877,7 +876,8 @@ bool SHAMap::updateGiveItem (SHAMapItem::ref item, bool isTransaction, bool hasM
|
|||||||
if (!node->setItem (item, !isTransaction ? SHAMapTreeNode::tnACCOUNT_STATE :
|
if (!node->setItem (item, !isTransaction ? SHAMapTreeNode::tnACCOUNT_STATE :
|
||||||
(hasMeta ? SHAMapTreeNode::tnTRANSACTION_MD : SHAMapTreeNode::tnTRANSACTION_NM)))
|
(hasMeta ? SHAMapTreeNode::tnTRANSACTION_MD : SHAMapTreeNode::tnTRANSACTION_NM)))
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "SHAMap setItem, no change";
|
if (journal_.warning) journal_.warning <<
|
||||||
|
"SHAMap setItem, no change";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -885,24 +885,28 @@ bool SHAMap::updateGiveItem (SHAMapItem::ref item, bool isTransaction, bool hasM
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHAMapItem::dump ()
|
|
||||||
{
|
|
||||||
WriteLog (lsINFO, SHAMap) << "SHAMapItem(" << mTag << ") " << mData.size () << "bytes";
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SHAMap::fetchRoot (uint256 const& hash, SHAMapSyncFilter* filter)
|
bool SHAMap::fetchRoot (uint256 const& hash, SHAMapSyncFilter* filter)
|
||||||
{
|
{
|
||||||
if (hash == root->getNodeHash ())
|
if (hash == root->getNodeHash ())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (ShouldLog (lsTRACE, SHAMap))
|
if (journal_.trace)
|
||||||
{
|
{
|
||||||
if (mType == smtTRANSACTION)
|
if (mType == smtTRANSACTION)
|
||||||
WriteLog (lsTRACE, SHAMap) << "Fetch root TXN node " << hash;
|
{
|
||||||
|
journal_.trace
|
||||||
|
<< "Fetch root TXN node " << hash;
|
||||||
|
}
|
||||||
else if (mType == smtSTATE)
|
else if (mType == smtSTATE)
|
||||||
WriteLog (lsTRACE, SHAMap) << "Fetch root STATE node " << hash;
|
{
|
||||||
|
journal_.trace <<
|
||||||
|
"Fetch root STATE node " << hash;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
WriteLog (lsTRACE, SHAMap) << "Fetch root SHAMap node " << hash;
|
{
|
||||||
|
journal_.trace <<
|
||||||
|
"Fetch root SHAMap node " << hash;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SHAMapTreeNode::pointer newRoot = fetchNodeNT (SHAMapNodeID(), hash, filter);
|
SHAMapTreeNode::pointer newRoot = fetchNodeNT (SHAMapNodeID(), hash, filter);
|
||||||
@@ -938,7 +942,7 @@ void SHAMap::writeNode (
|
|||||||
|
|
||||||
Serializer s;
|
Serializer s;
|
||||||
node->addRaw (s, snfPREFIX);
|
node->addRaw (s, snfPREFIX);
|
||||||
getApp().getNodeStore().store (t, seq,
|
db_.store (t, seq,
|
||||||
std::move (s.modData ()), node->getNodeHash ());
|
std::move (s.modData ()), node->getNodeHash ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1108,7 +1112,8 @@ bool SHAMap::getPath (uint256 const& index, std::vector< Blob >& nodes, SHANodeF
|
|||||||
void SHAMap::dump (bool hash)
|
void SHAMap::dump (bool hash)
|
||||||
{
|
{
|
||||||
int leafCount = 0;
|
int leafCount = 0;
|
||||||
WriteLog (lsINFO, SHAMap) << " MAP Contains";
|
if (journal_.info) journal_.info <<
|
||||||
|
" MAP Contains";
|
||||||
|
|
||||||
std::stack <std::pair <SHAMapTreeNode*, SHAMapNodeID> > stack;
|
std::stack <std::pair <SHAMapTreeNode*, SHAMapNodeID> > stack;
|
||||||
stack.push ({root.get (), SHAMapNodeID ()});
|
stack.push ({root.get (), SHAMapNodeID ()});
|
||||||
@@ -1119,11 +1124,11 @@ void SHAMap::dump (bool hash)
|
|||||||
SHAMapNodeID nodeID = stack.top().second;
|
SHAMapNodeID nodeID = stack.top().second;
|
||||||
stack.pop();
|
stack.pop();
|
||||||
|
|
||||||
WriteLog (lsINFO, SHAMap) << node->getString (nodeID);
|
if (journal_.info) journal_.info <<
|
||||||
|
node->getString (nodeID);
|
||||||
if (hash)
|
if (hash)
|
||||||
{
|
if (journal_.info) journal_.info <<
|
||||||
WriteLog (lsINFO, SHAMap) << "Hash: " << node->getNodeHash();
|
"Hash: " << node->getNodeHash();
|
||||||
}
|
|
||||||
|
|
||||||
if (node->isInner ())
|
if (node->isInner ())
|
||||||
{
|
{
|
||||||
@@ -1145,7 +1150,8 @@ void SHAMap::dump (bool hash)
|
|||||||
}
|
}
|
||||||
while (!stack.empty ());
|
while (!stack.empty ());
|
||||||
|
|
||||||
WriteLog (lsINFO, SHAMap) << leafCount << " resident leaves";
|
if (journal_.info) journal_.info <<
|
||||||
|
leafCount << " resident leaves";
|
||||||
}
|
}
|
||||||
|
|
||||||
SHAMapTreeNode::pointer SHAMap::getCache (uint256 const& hash)
|
SHAMapTreeNode::pointer SHAMap::getCache (uint256 const& hash)
|
||||||
@@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMap.h>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
// This code is used to compare another node's transaction tree
|
// This code is used to compare another node's transaction tree
|
||||||
@@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMapItem.h>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
class SHAMap;
|
class SHAMap;
|
||||||
@@ -33,4 +35,11 @@ SHAMapItem::SHAMapItem (uint256 const& tag, const Serializer& data)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// VFALCO This function appears not to be called
|
||||||
|
void SHAMapItem::dump (beast::Journal journal)
|
||||||
|
{
|
||||||
|
if (journal.info) journal.info <<
|
||||||
|
"SHAMapItem(" << mTag << ") " << mData.size () << "bytes";
|
||||||
|
}
|
||||||
|
|
||||||
} // ripple
|
} // ripple
|
||||||
@@ -17,9 +17,13 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMapMissingNode.h>
|
||||||
|
#include <ostream>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
std::ostream& operator<< (std::ostream& out, const SHAMapMissingNode& mn)
|
std::ostream&
|
||||||
|
operator<< (std::ostream& out, const SHAMapMissingNode& mn)
|
||||||
{
|
{
|
||||||
switch (mn.getMapType ())
|
switch (mn.getMapType ())
|
||||||
{
|
{
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#include <ripple/app/shamap/SHAMapNodeID.h>
|
#include <ripple/shamap/SHAMapNodeID.h>
|
||||||
#include <ripple/crypto/RandomNumbers.h>
|
#include <ripple/crypto/RandomNumbers.h>
|
||||||
#include <beast/module/core/text/LexicalCast.h>
|
#include <beast/module/core/text/LexicalCast.h>
|
||||||
#include <beast/utility/static_initializer.h>
|
#include <beast/utility/static_initializer.h>
|
||||||
@@ -176,9 +176,10 @@ int SHAMapNodeID::selectBranch (uint256 const& hash) const
|
|||||||
return branch;
|
return branch;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHAMapNodeID::dump () const
|
void SHAMapNodeID::dump (beast::Journal journal) const
|
||||||
{
|
{
|
||||||
WriteLog (lsDEBUG, SHAMapNodeID) << getString ();
|
if (journal.debug) journal.debug <<
|
||||||
|
getString ();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // ripple
|
} // ripple
|
||||||
@@ -17,9 +17,9 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMap.h>
|
||||||
#include <ripple/nodestore/Database.h>
|
#include <ripple/nodestore/Database.h>
|
||||||
#include <beast/unit_test/suite.h>
|
#include <beast/unit_test/suite.h>
|
||||||
#include <openssl/rand.h> // DEPRECATED
|
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
@@ -126,11 +126,12 @@ void SHAMap::getMissingNodes (std::vector<SHAMapNodeID>& nodeIDs, std::vector<ui
|
|||||||
|
|
||||||
if (!root->isInner ())
|
if (!root->isInner ())
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "synching empty tree";
|
if (journal_.warning) journal_.warning <<
|
||||||
|
"synching empty tree";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int const maxDefer = getApp().getNodeStore().getDesiredAsyncReadCount ();
|
int const maxDefer = db_.getDesiredAsyncReadCount ();
|
||||||
|
|
||||||
// Track the missing hashes we have found so far
|
// Track the missing hashes we have found so far
|
||||||
std::set <uint256> missingHashes;
|
std::set <uint256> missingHashes;
|
||||||
@@ -236,7 +237,7 @@ void SHAMap::getMissingNodes (std::vector<SHAMapNodeID>& nodeIDs, std::vector<ui
|
|||||||
if (deferredReads.empty ())
|
if (deferredReads.empty ())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
getApp().getNodeStore().waitReads();
|
db_.waitReads();
|
||||||
|
|
||||||
// Process all deferred reads
|
// Process all deferred reads
|
||||||
for (auto const& node : deferredReads)
|
for (auto const& node : deferredReads)
|
||||||
@@ -299,13 +300,15 @@ bool SHAMap::getNodeFat (SHAMapNodeID wanted, std::vector<SHAMapNodeID>& nodeIDs
|
|||||||
|
|
||||||
if (!node || (nodeID != wanted))
|
if (!node || (nodeID != wanted))
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "peer requested node that is not in the map: " << wanted;
|
if (journal_.warning) journal_.warning <<
|
||||||
|
"peer requested node that is not in the map: " << wanted;
|
||||||
throw std::runtime_error ("Peer requested node not in map");
|
throw std::runtime_error ("Peer requested node not in map");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node->isInner () && node->isEmpty ())
|
if (node->isInner () && node->isEmpty ())
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "peer requests empty node";
|
if (journal_.warning) journal_.warning <<
|
||||||
|
"peer requests empty node";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,13 +367,14 @@ bool SHAMap::getRootNode (Serializer& s, SHANodeFormat format)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SHAMapAddNode SHAMap::addRootNode (Blob const& rootNode, SHANodeFormat format,
|
SHAMapAddNode SHAMap::addRootNode (Blob const& rootNode,
|
||||||
SHAMapSyncFilter* filter)
|
SHANodeFormat format, SHAMapSyncFilter* filter)
|
||||||
{
|
{
|
||||||
// we already have a root node
|
// we already have a root node
|
||||||
if (root->getNodeHash ().isNonZero ())
|
if (root->getNodeHash ().isNonZero ())
|
||||||
{
|
{
|
||||||
WriteLog (lsTRACE, SHAMap) << "got root node, already have one";
|
if (journal_.trace) journal_.trace <<
|
||||||
|
"got root node, already have one";
|
||||||
return SHAMapAddNode::duplicate ();
|
return SHAMapAddNode::duplicate ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,7 +387,7 @@ SHAMapAddNode SHAMap::addRootNode (Blob const& rootNode, SHANodeFormat format,
|
|||||||
return SHAMapAddNode::invalid ();
|
return SHAMapAddNode::invalid ();
|
||||||
|
|
||||||
#ifdef BEAST_DEBUG
|
#ifdef BEAST_DEBUG
|
||||||
node->dump (SHAMapNodeID ());
|
node->dump (SHAMapNodeID (), journal_);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (mBacked)
|
if (mBacked)
|
||||||
@@ -411,7 +415,8 @@ SHAMapAddNode SHAMap::addRootNode (uint256 const& hash, Blob const& rootNode, SH
|
|||||||
// we already have a root node
|
// we already have a root node
|
||||||
if (root->getNodeHash ().isNonZero ())
|
if (root->getNodeHash ().isNonZero ())
|
||||||
{
|
{
|
||||||
WriteLog (lsTRACE, SHAMap) << "got root node, already have one";
|
if (journal_.trace) journal_.trace <<
|
||||||
|
"got root node, already have one";
|
||||||
assert (root->getNodeHash () == hash);
|
assert (root->getNodeHash () == hash);
|
||||||
return SHAMapAddNode::duplicate ();
|
return SHAMapAddNode::duplicate ();
|
||||||
}
|
}
|
||||||
@@ -452,7 +457,8 @@ SHAMap::addKnownNode (const SHAMapNodeID& node, Blob const& rawNode,
|
|||||||
|
|
||||||
if (!isSynching ())
|
if (!isSynching ())
|
||||||
{
|
{
|
||||||
WriteLog (lsTRACE, SHAMap) << "AddKnownNode while not synching";
|
if (journal_.trace) journal_.trace <<
|
||||||
|
"AddKnownNode while not synching";
|
||||||
return SHAMapAddNode::duplicate ();
|
return SHAMapAddNode::duplicate ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -468,8 +474,8 @@ SHAMap::addKnownNode (const SHAMapNodeID& node, Blob const& rawNode,
|
|||||||
|
|
||||||
if (iNode->isEmptyBranch (branch))
|
if (iNode->isEmptyBranch (branch))
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "Add known node for empty branch"
|
if (journal_.warning) journal_.warning <<
|
||||||
<< node;
|
"Add known node for empty branch" << node;
|
||||||
return SHAMapAddNode::invalid ();
|
return SHAMapAddNode::invalid ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -485,11 +491,13 @@ SHAMap::addKnownNode (const SHAMapNodeID& node, Blob const& rawNode,
|
|||||||
if (iNodeID != node)
|
if (iNodeID != node)
|
||||||
{
|
{
|
||||||
// Either this node is broken or we didn't request it (yet)
|
// Either this node is broken or we didn't request it (yet)
|
||||||
WriteLog (lsWARNING, SHAMap) << "unable to hook node " << node;
|
if (journal_.warning) journal_.warning <<
|
||||||
WriteLog (lsINFO, SHAMap) << " stuck at " << iNodeID;
|
"unable to hook node " << node;
|
||||||
WriteLog (lsINFO, SHAMap) << "got depth=" << node.getDepth ()
|
if (journal_.info) journal_.info <<
|
||||||
<< ", walked to= "
|
" stuck at " << iNodeID;
|
||||||
<< iNodeID.getDepth ();
|
if (journal_.info) journal_.info <<
|
||||||
|
"got depth=" << node.getDepth () <<
|
||||||
|
", walked to= " << iNodeID.getDepth ();
|
||||||
return SHAMapAddNode::invalid ();
|
return SHAMapAddNode::invalid ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -506,7 +514,8 @@ SHAMap::addKnownNode (const SHAMapNodeID& node, Blob const& rawNode,
|
|||||||
|
|
||||||
if (childHash != newNode->getNodeHash ())
|
if (childHash != newNode->getNodeHash ())
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "Corrupt node received";
|
if (journal_.warning) journal_.warning <<
|
||||||
|
"Corrupt node received";
|
||||||
return SHAMapAddNode::invalid ();
|
return SHAMapAddNode::invalid ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -527,7 +536,8 @@ SHAMap::addKnownNode (const SHAMapNodeID& node, Blob const& rawNode,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteLog (lsTRACE, SHAMap) << "got node, already had it (late)";
|
if (journal_.trace) journal_.trace <<
|
||||||
|
"got node, already had it (late)";
|
||||||
return SHAMapAddNode::duplicate ();
|
return SHAMapAddNode::duplicate ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -546,17 +556,17 @@ bool SHAMap::deepCompare (SHAMap& other)
|
|||||||
|
|
||||||
if (!node || !otherNode)
|
if (!node || !otherNode)
|
||||||
{
|
{
|
||||||
WriteLog (lsINFO, SHAMap) << "unable to fetch node";
|
if (journal_.info) journal_.info <<
|
||||||
|
"unable to fetch node";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (otherNode->getNodeHash () != node->getNodeHash ())
|
else if (otherNode->getNodeHash () != node->getNodeHash ())
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "node hash mismatch";
|
if (journal_.warning) journal_.warning <<
|
||||||
|
"node hash mismatch";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteLog (lsTRACE) << "Comparing inner nodes " << *node;
|
|
||||||
|
|
||||||
if (node->isLeaf ())
|
if (node->isLeaf ())
|
||||||
{
|
{
|
||||||
if (!otherNode->isLeaf ())
|
if (!otherNode->isLeaf ())
|
||||||
@@ -589,7 +599,8 @@ bool SHAMap::deepCompare (SHAMap& other)
|
|||||||
SHAMapTreeNode *otherNext = other.descend (otherNode, i);
|
SHAMapTreeNode *otherNext = other.descend (otherNode, i);
|
||||||
if (!next || !otherNext)
|
if (!next || !otherNext)
|
||||||
{
|
{
|
||||||
WriteLog (lsWARNING, SHAMap) << "unable to fetch inner node";
|
if (journal_.warning) journal_.warning <<
|
||||||
|
"unable to fetch inner node";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
stack.push ({next, otherNext});
|
stack.push ({next, otherNext});
|
||||||
@@ -17,7 +17,12 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMapTreeNode.h>
|
||||||
|
#include <ripple/basics/Log.h>
|
||||||
#include <ripple/basics/StringUtilities.h>
|
#include <ripple/basics/StringUtilities.h>
|
||||||
|
#include <ripple/protocol/HashPrefix.h>
|
||||||
|
#include <beast/module/core/text/LexicalCast.h>
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
@@ -431,9 +436,10 @@ void SHAMapTreeNode::makeInner ()
|
|||||||
mHash.zero ();
|
mHash.zero ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHAMapTreeNode::dump (const SHAMapNodeID & id)
|
void SHAMapTreeNode::dump (const SHAMapNodeID & id, beast::Journal journal)
|
||||||
{
|
{
|
||||||
WriteLog (lsDEBUG, SHAMapNodeID) << "SHAMapTreeNode(" << id.getNodeID () << ")";
|
if (journal.debug) journal.debug <<
|
||||||
|
"SHAMapTreeNode(" << id.getNodeID () << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string SHAMapTreeNode::getString (const SHAMapNodeID & id) const
|
std::string SHAMapTreeNode::getString (const SHAMapNodeID & id) const
|
||||||
@@ -17,9 +17,17 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMap.h>
|
||||||
|
#include <ripple/basics/StringUtilities.h>
|
||||||
|
#include <ripple/basics/UnorderedContainers.h>
|
||||||
|
#include <ripple/nodestore/DummyScheduler.h>
|
||||||
|
#include <ripple/nodestore/Manager.h>
|
||||||
|
#include <ripple/protocol/UInt160.h>
|
||||||
|
#include <beast/chrono/manual_clock.h>
|
||||||
#include <beast/module/core/maths/Random.h>
|
#include <beast/module/core/maths/Random.h>
|
||||||
#include <beast/unit_test/suite.h>
|
#include <beast/unit_test/suite.h>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
|
|
||||||
@@ -36,6 +44,14 @@ public:
|
|||||||
using Table = SHAMap;
|
using Table = SHAMap;
|
||||||
using Item = SHAMapItem;
|
using Item = SHAMapItem;
|
||||||
|
|
||||||
|
struct Handler
|
||||||
|
{
|
||||||
|
void operator()(std::uint32_t refNum) const
|
||||||
|
{
|
||||||
|
throw std::runtime_error("missing node");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct TestFilter : SHAMapSyncFilter
|
struct TestFilter : SHAMapSyncFilter
|
||||||
{
|
{
|
||||||
TestFilter (Map& map, beast::Journal journal) : mMap (map), mJournal (journal)
|
TestFilter (Map& map, beast::Journal journal) : mMap (map), mJournal (journal)
|
||||||
@@ -102,9 +118,12 @@ public:
|
|||||||
|
|
||||||
FullBelowCache fullBelowCache ("test.full_below", clock);
|
FullBelowCache fullBelowCache ("test.full_below", clock);
|
||||||
TreeNodeCache treeNodeCache ("test.tree_node_cache", 65536, 60, clock, j);
|
TreeNodeCache treeNodeCache ("test.tree_node_cache", 65536, 60, clock, j);
|
||||||
|
NodeStore::DummyScheduler scheduler;
|
||||||
|
auto db = NodeStore::Manager::instance().make_Database (
|
||||||
|
"test", scheduler, j, 0, parseDelimitedKeyValueString("type=memory"));
|
||||||
|
|
||||||
std::shared_ptr <Table> t1 (std::make_shared <Table> (
|
std::shared_ptr <Table> t1 (std::make_shared <Table> (
|
||||||
smtFREE, fullBelowCache, treeNodeCache));
|
smtFREE, fullBelowCache, treeNodeCache, *db, Handler(), beast::Journal()));
|
||||||
|
|
||||||
pass ();
|
pass ();
|
||||||
|
|
||||||
@@ -17,7 +17,14 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/shamap/FullBelowCache.h>
|
||||||
|
#include <ripple/shamap/SHAMap.h>
|
||||||
|
#include <ripple/basics/Blob.h>
|
||||||
|
#include <ripple/basics/StringUtilities.h>
|
||||||
|
#include <ripple/nodestore/DummyScheduler.h>
|
||||||
|
#include <ripple/nodestore/Manager.h>
|
||||||
#include <beast/unit_test/suite.h>
|
#include <beast/unit_test/suite.h>
|
||||||
|
#include <beast/utility/Journal.h>
|
||||||
#include <beast/chrono/manual_clock.h>
|
#include <beast/chrono/manual_clock.h>
|
||||||
|
|
||||||
namespace ripple {
|
namespace ripple {
|
||||||
@@ -25,8 +32,14 @@ namespace ripple {
|
|||||||
class SHAMap_test : public beast::unit_test::suite
|
class SHAMap_test : public beast::unit_test::suite
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// VFALCO TODO Rename this to createFilledVector and pass an unsigned char, tidy up
|
struct Handler
|
||||||
//
|
{
|
||||||
|
void operator()(std::uint32_t refNum) const
|
||||||
|
{
|
||||||
|
throw std::runtime_error("missing node");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
static Blob IntToVUC (int v)
|
static Blob IntToVUC (int v)
|
||||||
{
|
{
|
||||||
Blob vuc;
|
Blob vuc;
|
||||||
@@ -43,9 +56,12 @@ public:
|
|||||||
|
|
||||||
beast::manual_clock <std::chrono::steady_clock> clock; // manual advance clock
|
beast::manual_clock <std::chrono::steady_clock> clock; // manual advance clock
|
||||||
beast::Journal const j; // debug journal
|
beast::Journal const j; // debug journal
|
||||||
|
|
||||||
FullBelowCache fullBelowCache ("test.full_below", clock);
|
FullBelowCache fullBelowCache ("test.full_below", clock);
|
||||||
TreeNodeCache treeNodeCache ("test.tree_node_cache", 65536, 60, clock, j);
|
TreeNodeCache treeNodeCache ("test.tree_node_cache", 65536, 60, clock, j);
|
||||||
|
NodeStore::DummyScheduler scheduler;
|
||||||
|
auto db = NodeStore::Manager::instance().make_Database (
|
||||||
|
"test", scheduler, j, 0, parseDelimitedKeyValueString("type=memory"));
|
||||||
|
|
||||||
// h3 and h4 differ only in the leaf, same terminal node (level 19)
|
// h3 and h4 differ only in the leaf, same terminal node (level 19)
|
||||||
uint256 h1, h2, h3, h4, h5;
|
uint256 h1, h2, h3, h4, h5;
|
||||||
@@ -55,7 +71,8 @@ public:
|
|||||||
h4.SetHex ("b92891fe4ef6cee585fdc6fda2e09eb4d386363158ec3321b8123e5a772c6ca8");
|
h4.SetHex ("b92891fe4ef6cee585fdc6fda2e09eb4d386363158ec3321b8123e5a772c6ca8");
|
||||||
h5.SetHex ("a92891fe4ef6cee585fdc6fda0e09eb4d386363158ec3321b8123e5a772c6ca7");
|
h5.SetHex ("a92891fe4ef6cee585fdc6fda0e09eb4d386363158ec3321b8123e5a772c6ca7");
|
||||||
|
|
||||||
SHAMap sMap (smtFREE, fullBelowCache, treeNodeCache);
|
SHAMap sMap (smtFREE, fullBelowCache, treeNodeCache,
|
||||||
|
*db, Handler(), beast::Journal());
|
||||||
SHAMapItem i1 (h1, IntToVUC (1)), i2 (h2, IntToVUC (2)), i3 (h3, IntToVUC (3)), i4 (h4, IntToVUC (4)), i5 (h5, IntToVUC (5));
|
SHAMapItem i1 (h1, IntToVUC (1)), i2 (h2, IntToVUC (2)), i3 (h3, IntToVUC (3)), i4 (h4, IntToVUC (4)), i5 (h5, IntToVUC (5));
|
||||||
unexpected (!sMap.addItem (i2, true, false), "no add");
|
unexpected (!sMap.addItem (i2, true, false), "no add");
|
||||||
unexpected (!sMap.addItem (i1, true, false), "no add");
|
unexpected (!sMap.addItem (i1, true, false), "no add");
|
||||||
@@ -17,7 +17,14 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <ripple/shamap/SHAMap.h>
|
||||||
|
#include <ripple/shamap/SHAMapItem.h>
|
||||||
|
#include <ripple/basics/StringUtilities.h>
|
||||||
#include <ripple/nodestore/Database.h>
|
#include <ripple/nodestore/Database.h>
|
||||||
|
#include <ripple/nodestore/DummyScheduler.h>
|
||||||
|
#include <ripple/nodestore/Manager.h>
|
||||||
|
#include <ripple/protocol/UInt160.h>
|
||||||
|
#include <beast/chrono/manual_clock.h>
|
||||||
#include <beast/unit_test/suite.h>
|
#include <beast/unit_test/suite.h>
|
||||||
#include <openssl/rand.h> // DEPRECATED
|
#include <openssl/rand.h> // DEPRECATED
|
||||||
|
|
||||||
@@ -30,6 +37,14 @@ namespace ripple {
|
|||||||
class SHAMapSync_test : public beast::unit_test::suite
|
class SHAMapSync_test : public beast::unit_test::suite
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
struct Handler
|
||||||
|
{
|
||||||
|
void operator()(std::uint32_t refNum) const
|
||||||
|
{
|
||||||
|
throw std::runtime_error("missing node");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
static SHAMapItem::pointer makeRandomAS ()
|
static SHAMapItem::pointer makeRandomAS ()
|
||||||
{
|
{
|
||||||
Serializer s;
|
Serializer s;
|
||||||
@@ -96,9 +111,14 @@ public:
|
|||||||
|
|
||||||
FullBelowCache fullBelowCache ("test.full_below", clock);
|
FullBelowCache fullBelowCache ("test.full_below", clock);
|
||||||
TreeNodeCache treeNodeCache ("test.tree_node_cache", 65536, 60, clock, j);
|
TreeNodeCache treeNodeCache ("test.tree_node_cache", 65536, 60, clock, j);
|
||||||
|
NodeStore::DummyScheduler scheduler;
|
||||||
|
auto db = NodeStore::Manager::instance().make_Database (
|
||||||
|
"test", scheduler, j, 1, parseDelimitedKeyValueString("type=memory"));
|
||||||
|
|
||||||
SHAMap source (smtFREE, fullBelowCache, treeNodeCache);
|
SHAMap source (smtFREE, fullBelowCache, treeNodeCache,
|
||||||
SHAMap destination (smtFREE, fullBelowCache, treeNodeCache);
|
*db, Handler(), beast::Journal());
|
||||||
|
SHAMap destination (smtFREE, fullBelowCache, treeNodeCache,
|
||||||
|
*db, Handler(), beast::Journal());
|
||||||
|
|
||||||
int items = 10000;
|
int items = 10000;
|
||||||
for (int i = 0; i < items; ++i)
|
for (int i = 0; i < items; ++i)
|
||||||
@@ -150,7 +170,6 @@ public:
|
|||||||
{
|
{
|
||||||
if (!source.getNodeFat (*nodeIDIterator, gotNodeIDs, gotNodes, (rand () % 2) == 0, (rand () % 2) == 0))
|
if (!source.getNodeFat (*nodeIDIterator, gotNodeIDs, gotNodes, (rand () % 2) == 0, (rand () % 2) == 0))
|
||||||
{
|
{
|
||||||
WriteLog (lsFATAL, SHAMap) << "GetNodeFat fails";
|
|
||||||
fail ("GetNodeFat");
|
fail ("GetNodeFat");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -182,7 +201,6 @@ public:
|
|||||||
|
|
||||||
if (!destination.addKnownNode (*nodeIDIterator, *rawNodeIterator, nullptr).isGood ())
|
if (!destination.addKnownNode (*nodeIDIterator, *rawNodeIterator, nullptr).isGood ())
|
||||||
{
|
{
|
||||||
WriteLog (lsTRACE, SHAMap) << "AddKnownNode fails";
|
|
||||||
fail ("AddKnownNode");
|
fail ("AddKnownNode");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -199,7 +217,7 @@ public:
|
|||||||
destination.clearSynching ();
|
destination.clearSynching ();
|
||||||
|
|
||||||
#ifdef SMS_DEBUG
|
#ifdef SMS_DEBUG
|
||||||
WriteLog (lsINFO, SHAMap) << "SYNCHING COMPLETE " << items << " items, " << nodes << " nodes, " <<
|
log << "SYNCHING COMPLETE " << items << " items, " << nodes << " nodes, " <<
|
||||||
bytes / 1024 << " KB";
|
bytes / 1024 << " KB";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -213,8 +231,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SMS_DEBUG
|
#ifdef SMS_DEBUG
|
||||||
WriteLog (lsINFO, SHAMap) << "SHAMapSync test passed: " << items << " items, " <<
|
log << "SHAMapSync test passed: " << items << " items, " <<
|
||||||
passes << " passes, " << nodes << " nodes";
|
passes << " passes, " << nodes << " nodes";
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -49,7 +49,6 @@
|
|||||||
#include <ripple/app/ledger/Ledger.h>
|
#include <ripple/app/ledger/Ledger.h>
|
||||||
#include <ripple/app/main/LoadManager.h>
|
#include <ripple/app/main/LoadManager.h>
|
||||||
#include <ripple/app/misc/OrderBook.h>
|
#include <ripple/app/misc/OrderBook.h>
|
||||||
#include <ripple/app/shamap/SHAMapSyncFilters.h>
|
|
||||||
#include <ripple/app/misc/AmendmentTable.h>
|
#include <ripple/app/misc/AmendmentTable.h>
|
||||||
#include <ripple/app/misc/FeeVote.h>
|
#include <ripple/app/misc/FeeVote.h>
|
||||||
#include <ripple/app/misc/IHashRouter.h>
|
#include <ripple/app/misc/IHashRouter.h>
|
||||||
|
|||||||
@@ -21,6 +21,5 @@
|
|||||||
|
|
||||||
#include <ripple/app/consensus/LedgerConsensus.cpp>
|
#include <ripple/app/consensus/LedgerConsensus.cpp>
|
||||||
#include <ripple/app/peers/PeerSet.cpp>
|
#include <ripple/app/peers/PeerSet.cpp>
|
||||||
#include <ripple/app/shamap/SHAMapSyncFilters.cpp>
|
|
||||||
#include <ripple/app/ledger/LedgerCleaner.cpp>
|
#include <ripple/app/ledger/LedgerCleaner.cpp>
|
||||||
#include <ripple/app/ledger/LedgerMaster.cpp>
|
#include <ripple/app/ledger/LedgerMaster.cpp>
|
||||||
|
|||||||
@@ -25,18 +25,12 @@
|
|||||||
#include <ripple/app/data/DatabaseCon.cpp>
|
#include <ripple/app/data/DatabaseCon.cpp>
|
||||||
#include <ripple/app/data/SqliteDatabase.cpp>
|
#include <ripple/app/data/SqliteDatabase.cpp>
|
||||||
#include <ripple/app/data/DBInit.cpp>
|
#include <ripple/app/data/DBInit.cpp>
|
||||||
|
#include <ripple/app/ledger/AccountStateSF.cpp>
|
||||||
#include <ripple/app/ledger/BookListeners.cpp>
|
#include <ripple/app/ledger/BookListeners.cpp>
|
||||||
|
#include <ripple/app/ledger/ConsensusTransSetSF.cpp>
|
||||||
#include <ripple/app/ledger/LedgerProposal.cpp>
|
#include <ripple/app/ledger/LedgerProposal.cpp>
|
||||||
#include <ripple/app/ledger/OrderBookDB.cpp>
|
#include <ripple/app/ledger/OrderBookDB.cpp>
|
||||||
|
#include <ripple/app/ledger/TransactionStateSF.cpp>
|
||||||
#include <ripple/app/main/LoadManager.cpp>
|
#include <ripple/app/main/LoadManager.cpp>
|
||||||
#include <ripple/app/misc/CanonicalTXSet.cpp>
|
#include <ripple/app/misc/CanonicalTXSet.cpp>
|
||||||
#include <ripple/app/misc/SHAMapStoreImp.cpp>
|
#include <ripple/app/misc/SHAMapStoreImp.cpp>
|
||||||
|
|
||||||
#include <ripple/app/shamap/SHAMap.cpp>
|
|
||||||
#include <ripple/app/shamap/SHAMapItem.cpp>
|
|
||||||
#include <ripple/app/shamap/SHAMapSync.cpp>
|
|
||||||
#include <ripple/app/shamap/SHAMapMissingNode.cpp>
|
|
||||||
|
|
||||||
#include <ripple/app/shamap/tests/FetchPack.test.cpp>
|
|
||||||
#include <ripple/app/shamap/tests/SHAMap.test.cpp>
|
|
||||||
#include <ripple/app/shamap/tests/SHAMapSync.test.cpp>
|
|
||||||
|
|||||||
@@ -23,7 +23,4 @@
|
|||||||
|
|
||||||
#include <ripple/app/ledger/Ledger.cpp>
|
#include <ripple/app/ledger/Ledger.cpp>
|
||||||
#include <ripple/app/ledger/Ledger.test.cpp>
|
#include <ripple/app/ledger/Ledger.test.cpp>
|
||||||
#include <ripple/app/shamap/SHAMapDelta.cpp>
|
|
||||||
#include <ripple/app/shamap/SHAMapNodeID.cpp>
|
|
||||||
#include <ripple/app/shamap/SHAMapTreeNode.cpp>
|
|
||||||
#include <ripple/app/misc/AccountState.cpp>
|
#include <ripple/app/misc/AccountState.cpp>
|
||||||
|
|||||||
@@ -25,4 +25,5 @@
|
|||||||
#include <ripple/app/ledger/LedgerHistory.cpp>
|
#include <ripple/app/ledger/LedgerHistory.cpp>
|
||||||
#include <ripple/app/tx/TransactionAcquire.cpp>
|
#include <ripple/app/tx/TransactionAcquire.cpp>
|
||||||
#include <ripple/app/tx/LocalTxs.cpp>
|
#include <ripple/app/tx/LocalTxs.cpp>
|
||||||
|
#include <ripple/app/misc/DefaultMissingNodeHandler.cpp>
|
||||||
#include <ripple/app/misc/NetworkOPs.cpp>
|
#include <ripple/app/misc/NetworkOPs.cpp>
|
||||||
|
|||||||
32
src/ripple/unity/shamap.cpp
Normal file
32
src/ripple/unity/shamap.cpp
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
This file is part of rippled: https://github.com/ripple/rippled
|
||||||
|
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
#include <BeastConfig.h>
|
||||||
|
|
||||||
|
#include <ripple/shamap/impl/SHAMap.cpp>
|
||||||
|
#include <ripple/shamap/impl/SHAMapDelta.cpp>
|
||||||
|
#include <ripple/shamap/impl/SHAMapItem.cpp>
|
||||||
|
#include <ripple/shamap/impl/SHAMapMissingNode.cpp>
|
||||||
|
#include <ripple/shamap/impl/SHAMapNodeID.cpp>
|
||||||
|
#include <ripple/shamap/impl/SHAMapSync.cpp>
|
||||||
|
#include <ripple/shamap/impl/SHAMapTreeNode.cpp>
|
||||||
|
|
||||||
|
#include <ripple/shamap/tests/FetchPack.test.cpp>
|
||||||
|
#include <ripple/shamap/tests/SHAMap.test.cpp>
|
||||||
|
#include <ripple/shamap/tests/SHAMapSync.test.cpp>
|
||||||
Reference in New Issue
Block a user