Transactor refactoring:

- Reorganize transactor source files and VS project
- Don't expose Transactor interfaces to anyone but the TransactionEngine
- Improve compile times
- Begin using Journal
This commit is contained in:
Nik Bougalis
2014-03-03 22:25:39 -08:00
parent 5324a6d59d
commit e8d7d339ef
28 changed files with 432 additions and 340 deletions

View File

@@ -1223,6 +1223,7 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\ripple_app_pt9.cpp" />
<ClCompile Include="..\..\src\ripple_app\rpc\RPCServerHandler.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
@@ -1295,43 +1296,55 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\AccountSetTransactor.cpp">
<ClCompile Include="..\..\src\ripple_app\transactors\AccountSetTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\ChangeTransactor.cpp">
<ClCompile Include="..\..\src\ripple_app\transactors\ChangeTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\OfferCancelTransactor.cpp">
<ClCompile Include="..\..\src\ripple_app\transactors\OfferCancelTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\OfferCreateTransactor.cpp">
<ClCompile Include="..\..\src\ripple_app\transactors\OfferCreateTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\PaymentTransactor.cpp">
<ClCompile Include="..\..\src\ripple_app\transactors\PaymentTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\RegularKeySetTransactor.cpp">
<ClCompile Include="..\..\src\ripple_app\transactors\RegularKeySetTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionAcquire.cpp">
<ClCompile Include="..\..\src\ripple_app\transactors\Transactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\TrustSetTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\WalletAddTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@@ -1343,6 +1356,12 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionAcquire.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionCheck.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
@@ -1373,30 +1392,12 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\Transactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TrustSetTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TxQueueEntry.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\WalletAddTransactor.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\websocket\WSConnection.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
@@ -2540,22 +2541,22 @@
<ClInclude Include="..\..\src\ripple_app\shamap\SHAMapSyncFilters.h" />
<ClInclude Include="..\..\src\ripple_app\shamap\RadixMapTest.h" />
<ClInclude Include="..\..\src\ripple_app\shamap\SHAMapTreeNode.h" />
<ClInclude Include="..\..\src\ripple_app\tx\AccountSetTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\ChangeTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\OfferCancelTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\OfferCreateTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\PaymentTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\RegularKeySetTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\TransactionAcquire.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\AccountSetTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\ChangeTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\OfferCancelTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\OfferCreateTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\PaymentTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\RegularKeySetTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\Transactor.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\TrustSetTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\transactors\WalletAddTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\Transaction.h" />
<ClInclude Include="..\..\src\ripple_app\tx\TransactionAcquire.h" />
<ClInclude Include="..\..\src\ripple_app\tx\TransactionEngine.h" />
<ClInclude Include="..\..\src\ripple_app\tx\TransactionMaster.h" />
<ClInclude Include="..\..\src\ripple_app\tx\TransactionMeta.h" />
<ClInclude Include="..\..\src\ripple_app\tx\TxQueue.h" />
<ClInclude Include="..\..\src\ripple_app\tx\Transactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\TrustSetTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\tx\TxQueueEntry.h" />
<ClInclude Include="..\..\src\ripple_app\tx\WalletAddTransactor.h" />
<ClInclude Include="..\..\src\ripple_app\websocket\WSConnection.h" />
<ClInclude Include="..\..\src\ripple_app\websocket\WSDoor.h" />
<ClInclude Include="..\..\src\ripple_app\websocket\WSServerHandler.h" />

View File

@@ -316,6 +316,9 @@
<Filter Include="[2] Old Ripple\ripple_overlay\impl">
<UniqueIdentifier>{0ff855ac-5038-4b16-a324-ba85d782c0e2}</UniqueIdentifier>
</Filter>
<Filter Include="[2] Old Ripple\ripple_app\transactors">
<UniqueIdentifier>{dcb7c75c-4f1d-486c-8079-52dc43644ae6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\ripple_basics\containers\RangeSet.cpp">
@@ -747,51 +750,6 @@
<ClCompile Include="..\..\src\ripple_app\consensus\DisputedTx.cpp">
<Filter>[2] Old Ripple\ripple_app\consensus</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\AccountSetTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\ChangeTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\OfferCancelTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\OfferCreateTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\PaymentTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\RegularKeySetTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionAcquire.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\Transaction.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionCheck.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionEngine.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionMaster.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionMeta.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\Transactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TrustSetTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\WalletAddTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\main\RippleMain.cpp">
<Filter>[2] Old Ripple\ripple_app\main</Filter>
</ClCompile>
@@ -849,12 +807,6 @@
<ClCompile Include="..\..\src\ripple_app\misc\ProofOfWork.cpp">
<Filter>[2] Old Ripple\ripple_app\misc</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TxQueue.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TxQueueEntry.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\protobuf_core.cpp">
<Filter>[0] Libraries\protobuf</Filter>
</ClCompile>
@@ -1488,6 +1440,60 @@
<ClCompile Include="..\..\src\ripple\peerfinder\impl\SlotImp.cpp">
<Filter>[1] Ripple\peerfinder\impl</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\ripple_app_pt9.cpp">
<Filter>[2] Old Ripple\ripple_app</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\Transaction.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionAcquire.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionCheck.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionEngine.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionMaster.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TransactionMeta.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TxQueue.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\tx\TxQueueEntry.cpp">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\AccountSetTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\ChangeTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\OfferCancelTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\OfferCreateTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\PaymentTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\RegularKeySetTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\Transactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\TrustSetTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ripple_app\transactors\WalletAddTransactor.cpp">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\ripple_basics\containers\RangeSet.h">
@@ -1973,48 +1979,6 @@
<ClInclude Include="..\..\src\ripple_app\consensus\LedgerConsensus.h">
<Filter>[2] Old Ripple\ripple_app\consensus</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\AccountSetTransactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\ChangeTransactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\OfferCancelTransactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\OfferCreateTransactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\PaymentTransactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\RegularKeySetTransactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TransactionAcquire.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\Transaction.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TransactionEngine.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TransactionMaster.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TransactionMeta.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\Transactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TrustSetTransactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\WalletAddTransactor.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\main\RippleMain.h">
<Filter>[2] Old Ripple\ripple_app\main</Filter>
</ClInclude>
@@ -2063,27 +2027,18 @@
<ClInclude Include="..\..\src\ripple_data\protocol\BuildInfo.h">
<Filter>[1] Ripple\ripple_data\protocol</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_net\basics\RippleSSLContext.h">
<Filter>[1] Ripple\ripple_net\basics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_net\basics\HTTPRequest.h">
<Filter>[1] Ripple\ripple_net\basics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_net\basics\HTTPClient.h">
<Filter>[1] Ripple\ripple_net\basics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_net\basics\MultiSocket.h">
<Filter>[1] Ripple\ripple_net\basics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_net\basics\RPCServer.h">
<Filter>[1] Ripple\ripple_net\basics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_net\basics\SNTPClient.h">
<Filter>[1] Ripple\ripple_net\basics</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_net\basics\impl\MultiSocketType.h">
<Filter>[1] Ripple\ripple_net\basics\impl</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_net\basics\RPCDoor.h">
<Filter>[1] Ripple\ripple_net\basics</Filter>
</ClInclude>
@@ -2120,12 +2075,6 @@
<ClInclude Include="..\..\src\ripple_app\misc\ProofOfWorkFactory.h">
<Filter>[2] Old Ripple\ripple_app\misc</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TxQueue.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TxQueueEntry.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\misc\Validations.h">
<Filter>[2] Old Ripple\ripple_app\misc</Filter>
</ClInclude>
@@ -3051,6 +3000,54 @@
<ClInclude Include="..\..\src\ripple\peerfinder\impl\StoreSqdb.h">
<Filter>[1] Ripple\peerfinder\impl</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\Transaction.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TransactionAcquire.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TransactionEngine.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TransactionMaster.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TransactionMeta.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TxQueue.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\tx\TxQueueEntry.h">
<Filter>[2] Old Ripple\ripple_app\tx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\AccountSetTransactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\ChangeTransactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\OfferCancelTransactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\OfferCreateTransactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\PaymentTransactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\RegularKeySetTransactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\Transactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\TrustSetTransactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ripple_app\transactors\WalletAddTransactor.h">
<Filter>[2] Old Ripple\ripple_app\transactors</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\src\ripple_data\protocol\ripple.proto">

View File

@@ -207,6 +207,7 @@ COMPILED_FILES.extend([
'src/ripple_app/ripple_app_pt6.cpp',
'src/ripple_app/ripple_app_pt7.cpp',
'src/ripple_app/ripple_app_pt8.cpp',
'src/ripple_app/ripple_app_pt9.cpp',
'src/ripple_basics/ripple_basics.cpp',
'src/ripple_core/ripple_core.cpp',
'src/ripple_data/ripple_data.cpp',

View File

@@ -126,15 +126,11 @@ namespace ripple {
#include "main/Application.h"
namespace ripple {
#include "ledger/OrderBookDB.h"
#include "tx/Transactor.h"
#include "tx/ChangeTransactor.h"
#include "tx/TransactionAcquire.h"
#include "consensus/DisputedTx.h"
#include "consensus/LedgerConsensus.h"
#include "ledger/LedgerTiming.h"
#include "misc/Offer.h"
#include "tx/OfferCancelTransactor.h"
#include "tx/OfferCreateTransactor.h"
#include "paths/RippleLineCache.h"
#include "paths/PathRequest.h"
#include "paths/PathRequests.h"
@@ -143,12 +139,7 @@ namespace ripple {
#include "paths/PathState.h"
#include "paths/RippleCalc.h"
#include "paths/Pathfinder.h"
#include "tx/PaymentTransactor.h"
#include "tx/RegularKeySetTransactor.h"
#include "paths/RippleState.h"
#include "tx/AccountSetTransactor.h"
#include "tx/TrustSetTransactor.h"
#include "tx/WalletAddTransactor.h"
// VFALCO NOTE These contracts files are bunk
#include "contracts/ScriptData.h"
#include "contracts/Contract.h"

View File

@@ -31,12 +31,10 @@ namespace ripple {
#include "shamap/SHAMapMissingNode.cpp"
#include "misc/AccountItem.cpp"
#include "tx/AccountSetTransactor.cpp"
#include "misc/CanonicalTXSet.cpp"
#include "ledger/LedgerProposal.cpp"
#include "main/LoadManager.cpp"
#include "misc/NicknameState.cpp"
#include "tx/OfferCancelTransactor.cpp"
#include "ledger/OrderBookDB.cpp"
#include "data/Database.cpp"

View File

@@ -30,7 +30,6 @@ namespace ripple
#include "shamap/SHAMapTreeNode.cpp"
#include "misc/AccountItems.cpp"
#include "misc/AccountState.cpp"
#include "tx/ChangeTransactor.cpp"
#include "contracts/Contract.cpp"
#include "contracts/Operation.cpp"
#include "contracts/ScriptData.cpp"

View File

@@ -27,8 +27,9 @@
#include <fstream> // for UniqueNodeList.cpp
namespace ripple
{
#include "transactors/Transactor.h"
namespace ripple {
#include "paths/RippleState.cpp"
@@ -36,14 +37,10 @@ namespace ripple
#include "ledger/InboundLedger.cpp"
#include "tx/PaymentTransactor.cpp"
#include "tx/RegularKeySetTransactor.cpp"
#include "tx/TransactionCheck.cpp"
#include "tx/TransactionMaster.cpp"
#include "tx/TrustSetTransactor.cpp"
#include "tx/Transaction.cpp"
#include "tx/TransactionEngine.cpp"
#include "tx/TransactionMeta.cpp"
#include "tx/Transactor.cpp"
}

View File

@@ -39,7 +39,5 @@ namespace ripple {
#include "ledger/AcceptedLedgerTx.cpp"
#include "main/LocalCredentials.cpp"
#include "misc/Validations.cpp"
#include "tx/OfferCreateTransactor.cpp"
#include "tx/WalletAddTransactor.cpp"
#include "misc/FeeVote.cpp"
}

View 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_app.h"
#include "transactors/Transactor.cpp"
#include "transactors/ChangeTransactor.cpp"
#include "transactors/OfferCancelTransactor.cpp"
#include "transactors/OfferCreateTransactor.cpp"
#include "transactors/PaymentTransactor.cpp"
#include "transactors/RegularKeySetTransactor.cpp"
#include "transactors/AccountSetTransactor.cpp"
#include "transactors/WalletAddTransactor.cpp"
#include "transactors/TrustSetTransactor.cpp"

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
SETUP_LOG (AccountSetTransactor)
TER AccountSetTransactor::doApply ()
@@ -310,4 +312,4 @@ TER AccountSetTransactor::doApply ()
return tesSUCCESS;
}
// vim:ts=4
}

View File

@@ -20,6 +20,8 @@
#ifndef ACCOUNTSETTRANSACTOR_H
#define ACCOUNTSETTRANSACTOR_H
namespace ripple {
class AccountSetTransactor : public Transactor
{
public:
@@ -27,6 +29,7 @@ public:
TER doApply ();
};
#endif
// vim:ts=4
}
#endif

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
SETUP_LOG (ChangeTransactor)
TER ChangeTransactor::doApply ()
@@ -136,3 +138,5 @@ TER ChangeTransactor::applyFee ()
WriteLog (lsWARNING, ChangeTransactor) << "Fees have been changed";
return tesSUCCESS;
}
}

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
class ChangeTransactor : public Transactor
{
public:
@@ -43,4 +45,4 @@ private:
}
};
// vim:ts=4
}

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
SETUP_LOG (OfferCancelTransactor)
TER OfferCancelTransactor::doApply ()
@@ -67,4 +69,4 @@ TER OfferCancelTransactor::doApply ()
return terResult;
}
// vim:ts=4
}

View File

@@ -20,6 +20,8 @@
#ifndef OFFERCANCELTRANSACTOR_H
#define OFFERCANCELTRANSACTOR_H
namespace ripple {
class OfferCancelTransactor : public Transactor
{
public:
@@ -27,6 +29,7 @@ public:
TER doApply ();
};
#endif
// vim:ts=4
}
#endif

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
SETUP_LOG (OfferCreateTransactor)
// Make sure an offer is still valid. If not, mark it unfunded.
@@ -749,4 +751,5 @@ TER OfferCreateTransactor::doApply ()
return terResult;
}
// vim:ts=4
}

View File

@@ -20,6 +20,8 @@
#ifndef __OFFERCREATETRANSACTOR__
#define __OFFERCREATETRANSACTOR__
namespace ripple {
class OfferCreateTransactor : public Transactor
{
public:
@@ -57,6 +59,6 @@ private:
std::set<missingOffer_t> usMissingOffers;
};
#endif
}
// vim:ts=4
#endif

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
SETUP_LOG (PaymentTransactor)
#define RIPPLE_PATHS_MAX 6
@@ -262,4 +264,5 @@ TER PaymentTransactor::doApply ()
return terResult;
}
// vim:ts=4
}

View File

@@ -20,6 +20,8 @@
#ifndef __PAYMENTTRANSACTOR__
#define __PAYMENTTRANSACTOR__
namespace ripple {
class PaymentTransactor : public Transactor
{
public:
@@ -27,6 +29,7 @@ public:
TER doApply ();
};
#endif
// vim:ts=4
}
#endif

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
SETUP_LOG (RegularKeySetTransactor)
uint64 RegularKeySetTransactor::calculateBaseFee ()
@@ -68,4 +70,4 @@ TER RegularKeySetTransactor::doApply ()
return tesSUCCESS;
}
// vim:ts=4
}

View File

@@ -20,6 +20,8 @@
#ifndef REGULARKEYSETTRANSACTOR_H
#define REGULARKEYSETTRANSACTOR_H
namespace ripple {
class RegularKeySetTransactor : public Transactor
{
uint64 calculateBaseFee ();
@@ -28,6 +30,7 @@ public:
TER checkFee ();
TER doApply ();
};
#endif
// vim:ts=4
}
#endif

View File

@@ -17,36 +17,57 @@
*/
//==============================================================================
SETUP_LOG (Transactor)
#include "Transactor.h"
#include "ChangeTransactor.h"
#include "OfferCancelTransactor.h"
#include "OfferCreateTransactor.h"
#include "PaymentTransactor.h"
#include "RegularKeySetTransactor.h"
#include "AccountSetTransactor.h"
#include "TrustSetTransactor.h"
#include "WalletAddTransactor.h"
std::unique_ptr<Transactor> Transactor::makeTransactor (const SerializedTransaction& txn, TransactionEngineParams params, TransactionEngine* engine)
namespace ripple {
std::unique_ptr<Transactor> Transactor::makeTransactor (
SerializedTransaction const& txn,
TransactionEngineParams params,
TransactionEngine* engine)
{
switch (txn.getTxnType ())
{
case ttPAYMENT:
return std::unique_ptr<Transactor> (new PaymentTransactor (txn, params, engine));
return std::unique_ptr<Transactor> (
new PaymentTransactor (txn, params, engine));
case ttACCOUNT_SET:
return std::unique_ptr<Transactor> (new AccountSetTransactor (txn, params, engine));
return std::unique_ptr<Transactor> (
new AccountSetTransactor (txn, params, engine));
case ttREGULAR_KEY_SET:
return std::unique_ptr<Transactor> (new RegularKeySetTransactor (txn, params, engine));
return std::unique_ptr<Transactor> (
new RegularKeySetTransactor (txn, params, engine));
case ttTRUST_SET:
return std::unique_ptr<Transactor> (new TrustSetTransactor (txn, params, engine));
return std::unique_ptr<Transactor> (
new TrustSetTransactor (txn, params, engine));
case ttOFFER_CREATE:
return std::unique_ptr<Transactor> (new OfferCreateTransactor (txn, params, engine));
return std::unique_ptr<Transactor> (
new OfferCreateTransactor (txn, params, engine));
case ttOFFER_CANCEL:
return std::unique_ptr<Transactor> (new OfferCancelTransactor (txn, params, engine));
return std::unique_ptr<Transactor> (
new OfferCancelTransactor (txn, params, engine));
case ttWALLET_ADD:
return std::unique_ptr<Transactor> (new WalletAddTransactor (txn, params, engine));
return std::unique_ptr<Transactor> (
new WalletAddTransactor (txn, params, engine));
case ttFEATURE:
case ttFEE:
return std::unique_ptr<Transactor> (new ChangeTransactor (txn, params, engine));
return std::unique_ptr<Transactor> (
new ChangeTransactor (txn, params, engine));
default:
return std::unique_ptr<Transactor> ();
@@ -54,15 +75,24 @@ std::unique_ptr<Transactor> Transactor::makeTransactor (const SerializedTransact
}
Transactor::Transactor (const SerializedTransaction& txn, TransactionEngineParams params, TransactionEngine* engine) : mTxn (txn), mEngine (engine), mParams (params)
Transactor::Transactor (
SerializedTransaction const& txn,
TransactionEngineParams params,
TransactionEngine* engine,
Journal journal)
: mTxn (txn)
, mEngine (engine)
, mParams (params)
, mHasAuthKey (false)
, mSigMaster (false)
, m_journal (journal)
{
mHasAuthKey = false;
mSigMaster = false;
}
void Transactor::calculateFee ()
{
mFeeDue = STAmount (mEngine->getLedger ()->scaleFeeLoad (calculateBaseFee (), isSetBit (mParams, tapADMIN)));
mFeeDue = STAmount (mEngine->getLedger ()->scaleFeeLoad (
calculateBaseFee (), isSetBit (mParams, tapADMIN)));
}
uint64 Transactor::calculateBaseFee ()
@@ -80,9 +110,8 @@ TER Transactor::payFee ()
// Only check fee is sufficient when the ledger is open.
if (isSetBit (mParams, tapOPEN_LEDGER) && saPaid < mFeeDue)
{
WriteLog (lsINFO, Transactor) << boost::str (boost::format ("applyTransaction: Insufficient fee paid: %s/%s")
% saPaid.getText ()
% mFeeDue.getText ());
m_journal.info << "Insufficient fee paid: " <<
saPaid.getText () << "/" << mFeeDue.getText ();
return telINSUF_FEE_P;
}
@@ -96,10 +125,9 @@ TER Transactor::payFee ()
// Will only write the account back, if the transaction succeeds.
if (mSourceBalance < saPaid)
{
WriteLog (lsINFO, Transactor)
<< boost::str (boost::format ("applyTransaction: Delay: insufficient balance: balance=%s paid=%s")
% mSourceBalance.getText ()
% saPaid.getText ());
m_journal.info << "Insufficient balance:" <<
" balance=" << mSourceBalance.getText () <<
" paid=" << saPaid.getText ();
return terINSUF_FEE_B;
}
@@ -128,13 +156,12 @@ TER Transactor::checkSig ()
}
else if (mHasAuthKey)
{
WriteLog (lsINFO, Transactor) << "applyTransaction: Delay: Not authorized to use account.";
m_journal.info << "applyTransaction: Delay: Not authorized to use account.";
return tefBAD_AUTH;
}
else
{
WriteLog (lsINFO, Transactor) << "applyTransaction: Invalid: Not authorized to use account.";
m_journal.info << "applyTransaction: Invalid: Not authorized to use account.";
return temBAD_AUTH_MASTER;
}
@@ -147,13 +174,13 @@ TER Transactor::checkSeq ()
uint32 t_seq = mTxn.getSequence ();
uint32 a_seq = mTxnAccount->getFieldU32 (sfSequence);
WriteLog (lsTRACE, Transactor) << "Aseq=" << a_seq << ", Tseq=" << t_seq;
m_journal.trace << "Aseq=" << a_seq << ", Tseq=" << t_seq;
if (t_seq != a_seq)
{
if (a_seq < t_seq)
{
WriteLog (lsINFO, Transactor) << "applyTransaction: future sequence number";
m_journal.info << "apply: transaction has future sequence number";
return terPRE_SEQ;
}
@@ -165,7 +192,7 @@ TER Transactor::checkSeq ()
return tefALREADY;
}
WriteLog (lsWARNING, Transactor) << "applyTransaction: past sequence number";
m_journal.warning << "apply: transaction has past sequence number";
return tefPAST_SEQ;
}
@@ -198,8 +225,7 @@ TER Transactor::preCheck ()
if (!mTxnAccountID)
{
WriteLog (lsWARNING, Transactor) << "applyTransaction: bad source id";
m_journal.warning << "apply: bad transaction source id";
return temBAD_SRC_ACCOUNT;
}
@@ -216,7 +242,7 @@ TER Transactor::preCheck ()
if (mTxn.isKnownBad () || (!isSetBit (mParams, tapNO_CHECK_SIGN) && !mTxn.checkSign (mSigningPubKey)))
{
mTxn.setBad ();
WriteLog (lsWARNING, Transactor) << "applyTransaction: Invalid transaction: bad signature";
m_journal.warning << "apply: Invalid transaction (bad signature)";
return temINVALID;
}
@@ -228,26 +254,29 @@ TER Transactor::preCheck ()
TER Transactor::apply ()
{
TER terResult = tesSUCCESS;
terResult = preCheck ();
TER terResult (preCheck ());
if (terResult != tesSUCCESS) return (terResult);
if (terResult != tesSUCCESS)
return (terResult);
// Restructure this to avoid the dependency on LedgerBase::mLock
Ledger::ScopedLockType sl (mEngine->getLedger ()->mLock, __FILE__, __LINE__);
mTxnAccount = mEngine->entryCache (ltACCOUNT_ROOT, Ledger::getAccountRootIndex (mTxnAccountID));
mTxnAccount = mEngine->entryCache (ltACCOUNT_ROOT,
Ledger::getAccountRootIndex (mTxnAccountID));
calculateFee ();
// Find source account
// If are only forwarding, due to resource limitations, we might verifying only some transactions, this would be probabilistic.
// If are only forwarding, due to resource limitations, we might verifying
// only some transactions, this would be probabilistic.
if (!mTxnAccount)
{
if (mustHaveValidAccount ())
{
WriteLog (lsTRACE, Transactor) << boost::str (boost::format ("applyTransaction: Delay transaction: source account does not exist: %s") %
mTxn.getSourceAccount ().humanAccountID ());
m_journal.trace <<
"apply: delay transaction: source account does not exist " <<
mTxn.getSourceAccount ().humanAccountID ();
return terNO_ACCOUNT;
}
}
@@ -276,4 +305,4 @@ TER Transactor::apply ()
return doApply ();
}
// vim:ts=4
}

View File

@@ -20,17 +20,20 @@
#ifndef __TRANSACTOR__
#define __TRANSACTOR__
namespace ripple {
class Transactor
{
public:
typedef boost::shared_ptr<Transactor> pointer;
static std::unique_ptr<Transactor> makeTransactor (const SerializedTransaction& txn, TransactionEngineParams params, TransactionEngine* engine);
static std::unique_ptr<Transactor> makeTransactor (
SerializedTransaction const& txn,
TransactionEngineParams params,
TransactionEngine* engine);
TER apply ();
protected:
const SerializedTransaction& mTxn;
SerializedTransaction const& mTxn;
TransactionEngine* mEngine;
TransactionEngineParams mParams;
@@ -43,6 +46,8 @@ protected:
bool mSigMaster;
RippleAddress mSigningPubKey;
Journal m_journal;
virtual TER preCheck ();
virtual TER checkSeq ();
virtual TER payFee ();
@@ -55,7 +60,11 @@ protected:
virtual TER checkSig ();
virtual TER doApply () = 0;
Transactor (const SerializedTransaction& txn, TransactionEngineParams params, TransactionEngine* engine);
Transactor (
const SerializedTransaction& txn,
TransactionEngineParams params,
TransactionEngine* engine,
Journal journal = Journal ());
virtual bool mustHaveValidAccount ()
{
@@ -63,6 +72,6 @@ protected:
}
};
#endif
}
// vim:ts=4
#endif

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
SETUP_LOG (TrustSetTransactor)
TER TrustSetTransactor::doApply ()
@@ -365,4 +367,4 @@ TER TrustSetTransactor::doApply ()
return terResult;
}
// vim:ts=4
}

View File

@@ -20,6 +20,8 @@
#ifndef TRUSTSETTRANSACTOR_H
#define TRUSTSETTRANSACTOR_H
namespace ripple {
class TrustSetTransactor : public Transactor
{
public:
@@ -27,6 +29,7 @@ public:
TER doApply ();
};
#endif
// vim:ts=4
}
#endif

View File

@@ -17,6 +17,8 @@
*/
//==============================================================================
namespace ripple {
SETUP_LOG (WalletAddTransactor)
TER WalletAddTransactor::doApply ()
@@ -90,4 +92,4 @@ TER WalletAddTransactor::doApply ()
return tesSUCCESS;
}
// vim:ts=4
}

View File

@@ -20,6 +20,8 @@
#ifndef WALLETADDTRANSACTOR_H
#define WALLETADDTRANSACTOR_H
namespace ripple {
class WalletAddTransactor : public Transactor
{
public:
@@ -27,6 +29,7 @@ public:
TER doApply ();
};
#endif
// vim:ts=4
}
#endif

View File

@@ -109,119 +109,117 @@ TER TransactionEngine::applyTransaction (const SerializedTransaction& txn, Trans
std::unique_ptr<Transactor> transactor = Transactor::makeTransactor (txn, params, this);
if (transactor.get () != NULL)
{
TER terResult = transactor->apply ();
std::string strToken;
std::string strHuman;
transResultInfo (terResult, strToken, strHuman);
WriteLog (lsINFO, TransactionEngine) << "applyTransaction: terResult=" << strToken << " : " << terResult << " : " << strHuman;
if (isTesSuccess (terResult))
didApply = true;
else if (isTecClaim (terResult) && !isSetBit (params, tapRETRY))
{
// only claim the transaction fee
WriteLog (lsDEBUG, TransactionEngine) << "Reprocessing to only claim fee";
mNodes.clear ();
SLE::pointer txnAcct = entryCache (ltACCOUNT_ROOT, Ledger::getAccountRootIndex (txn.getSourceAccount ()));
if (!txnAcct)
terResult = terNO_ACCOUNT;
else
{
uint32 t_seq = txn.getSequence ();
uint32 a_seq = txnAcct->getFieldU32 (sfSequence);
if (a_seq < t_seq)
terResult = terPRE_SEQ;
else if (a_seq > t_seq)
terResult = tefPAST_SEQ;
else
{
STAmount fee = txn.getTransactionFee ();
STAmount balance = txnAcct->getFieldAmount (sfBalance);
if (balance < fee)
terResult = terINSUF_FEE_B;
else
{
txnAcct->setFieldAmount (sfBalance, balance - fee);
txnAcct->setFieldU32 (sfSequence, t_seq + 1);
entryModify (txnAcct);
didApply = true;
}
}
}
}
else
WriteLog (lsDEBUG, TransactionEngine) << "Not applying transaction " << txID;
if (didApply)
{
if (!checkInvariants (terResult, txn, params))
{
WriteLog (lsFATAL, TransactionEngine) << "Transaction violates invariants";
WriteLog (lsFATAL, TransactionEngine) << txn.getJson (0);
WriteLog (lsFATAL, TransactionEngine) << transToken (terResult) << ": " << transHuman (terResult);
WriteLog (lsFATAL, TransactionEngine) << mNodes.getJson (0);
didApply = false;
terResult = tefINTERNAL;
}
else
{
// Transaction succeeded fully or (retries are not allowed and the transaction could claim a fee)
Serializer m;
mNodes.calcRawMeta (m, terResult, mTxnSeq++);
txnWrite ();
Serializer s;
txn.add (s);
if (isSetBit (params, tapOPEN_LEDGER))
{
if (!mLedger->addTransaction (txID, s))
{
WriteLog (lsFATAL, TransactionEngine) << "Tried to add transaction to open ledger that already had it";
assert (false);
throw std::runtime_error ("Duplicate transaction applied");
}
}
else
{
if (!mLedger->addTransaction (txID, s, m))
{
WriteLog (lsFATAL, TransactionEngine) << "Tried to add transaction to ledger that already had it";
assert (false);
throw std::runtime_error ("Duplicate transaction applied to closed ledger");
}
// Charge whatever fee they specified.
STAmount saPaid = txn.getTransactionFee ();
mLedger->destroyCoins (saPaid.getNValue ());
}
}
}
mTxnAccount.reset ();
mNodes.clear ();
if (!isSetBit (params, tapOPEN_LEDGER) && isTemMalformed (terResult))
{
// XXX Malformed or failed transaction in closed ledger must bow out.
}
return terResult;
}
else
if (transactor.get () == NULL)
{
WriteLog (lsWARNING, TransactionEngine) << "applyTransaction: Invalid transaction: unknown transaction type";
return temUNKNOWN;
}
TER terResult = transactor->apply ();
std::string strToken;
std::string strHuman;
transResultInfo (terResult, strToken, strHuman);
WriteLog (lsINFO, TransactionEngine) << "applyTransaction: terResult=" << strToken << " : " << terResult << " : " << strHuman;
if (isTesSuccess (terResult))
didApply = true;
else if (isTecClaim (terResult) && !isSetBit (params, tapRETRY))
{
// only claim the transaction fee
WriteLog (lsDEBUG, TransactionEngine) << "Reprocessing to only claim fee";
mNodes.clear ();
SLE::pointer txnAcct = entryCache (ltACCOUNT_ROOT, Ledger::getAccountRootIndex (txn.getSourceAccount ()));
if (!txnAcct)
terResult = terNO_ACCOUNT;
else
{
uint32 t_seq = txn.getSequence ();
uint32 a_seq = txnAcct->getFieldU32 (sfSequence);
if (a_seq < t_seq)
terResult = terPRE_SEQ;
else if (a_seq > t_seq)
terResult = tefPAST_SEQ;
else
{
STAmount fee = txn.getTransactionFee ();
STAmount balance = txnAcct->getFieldAmount (sfBalance);
if (balance < fee)
terResult = terINSUF_FEE_B;
else
{
txnAcct->setFieldAmount (sfBalance, balance - fee);
txnAcct->setFieldU32 (sfSequence, t_seq + 1);
entryModify (txnAcct);
didApply = true;
}
}
}
}
else
WriteLog (lsDEBUG, TransactionEngine) << "Not applying transaction " << txID;
if (didApply)
{
if (!checkInvariants (terResult, txn, params))
{
WriteLog (lsFATAL, TransactionEngine) << "Transaction violates invariants";
WriteLog (lsFATAL, TransactionEngine) << txn.getJson (0);
WriteLog (lsFATAL, TransactionEngine) << transToken (terResult) << ": " << transHuman (terResult);
WriteLog (lsFATAL, TransactionEngine) << mNodes.getJson (0);
didApply = false;
terResult = tefINTERNAL;
}
else
{
// Transaction succeeded fully or (retries are not allowed and the transaction could claim a fee)
Serializer m;
mNodes.calcRawMeta (m, terResult, mTxnSeq++);
txnWrite ();
Serializer s;
txn.add (s);
if (isSetBit (params, tapOPEN_LEDGER))
{
if (!mLedger->addTransaction (txID, s))
{
WriteLog (lsFATAL, TransactionEngine) << "Tried to add transaction to open ledger that already had it";
assert (false);
throw std::runtime_error ("Duplicate transaction applied");
}
}
else
{
if (!mLedger->addTransaction (txID, s, m))
{
WriteLog (lsFATAL, TransactionEngine) << "Tried to add transaction to ledger that already had it";
assert (false);
throw std::runtime_error ("Duplicate transaction applied to closed ledger");
}
// Charge whatever fee they specified.
STAmount saPaid = txn.getTransactionFee ();
mLedger->destroyCoins (saPaid.getNValue ());
}
}
}
mTxnAccount.reset ();
mNodes.clear ();
if (!isSetBit (params, tapOPEN_LEDGER) && isTemMalformed (terResult))
{
// XXX Malformed or failed transaction in closed ledger must bow out.
}
return terResult;
}
// vim:ts=4