send creditSet to B

This commit is contained in:
jed
2012-11-11 16:51:11 -08:00
parent 3613c45962
commit 362e3da97d
6 changed files with 254 additions and 230 deletions

View File

@@ -185,108 +185,96 @@
<ClCompile Include="websocketpp\src\uri.cpp" /> <ClCompile Include="websocketpp\src\uri.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="Account.h" />
<ClInclude Include="bitcoinUtil.h" /> <ClInclude Include="bitcoinUtil.h" />
<ClInclude Include="Conversion.h" />
<ClInclude Include="database\database.h" /> <ClInclude Include="database\database.h" />
<ClInclude Include="database\sqlite3.h" /> <ClInclude Include="database\sqlite3.h" />
<ClInclude Include="database\sqlite3ext.h" /> <ClInclude Include="database\sqlite3ext.h" />
<ClInclude Include="database\SqliteDatabase.h" /> <ClInclude Include="database\SqliteDatabase.h" />
<ClInclude Include="KnownNodeList.h" /> <ClInclude Include="src\cpp\ripple\AccountState.h" />
<ClInclude Include="obj\src\newcoin.pb.h" /> <ClInclude Include="src\cpp\ripple\Application.h" />
<ClInclude Include="NetworkThread.h" /> <ClInclude Include="src\cpp\ripple\base58.h" />
<ClInclude Include="script.h" /> <ClInclude Include="src\cpp\ripple\bignum.h" />
<ClInclude Include="src\AccountState.h" /> <ClInclude Include="src\cpp\ripple\BitcoinUtil.h" />
<ClInclude Include="src\Application.h" /> <ClInclude Include="src\cpp\ripple\CallRPC.h" />
<ClInclude Include="src\base58.h" /> <ClInclude Include="src\cpp\ripple\CanonicalTXSet.h" />
<ClInclude Include="src\bignum.h" /> <ClInclude Include="src\cpp\ripple\Config.h" />
<ClInclude Include="src\BinaryFormats.h" /> <ClInclude Include="src\cpp\ripple\ConnectionPool.h" />
<ClInclude Include="src\BitcoinUtil.h" /> <ClInclude Include="src\cpp\ripple\Contract.h" />
<ClInclude Include="src\CallRPC.h" /> <ClInclude Include="src\cpp\ripple\FieldNames.h" />
<ClInclude Include="src\CanonicalTXSet.h" /> <ClInclude Include="src\cpp\ripple\HashedObject.h" />
<ClInclude Include="src\Config.h" /> <ClInclude Include="src\cpp\ripple\HashPrefixes.h" />
<ClInclude Include="src\ConnectionPool.h" /> <ClInclude Include="src\cpp\ripple\HTTPRequest.h" />
<ClInclude Include="src\Contract.h" /> <ClInclude Include="src\cpp\ripple\HttpsClient.h" />
<ClInclude Include="src\Conversion.h" /> <ClInclude Include="src\cpp\ripple\InstanceCounter.h" />
<ClInclude Include="src\FieldNames.h" /> <ClInclude Include="src\cpp\ripple\Interpreter.h" />
<ClInclude Include="src\HashedObject.h" /> <ClInclude Include="src\cpp\ripple\JobQueue.h" />
<ClInclude Include="src\HashPrefixes.h" /> <ClInclude Include="src\cpp\ripple\key.h" />
<ClInclude Include="src\HttpReply.h" /> <ClInclude Include="src\cpp\ripple\Ledger.h" />
<ClInclude Include="src\HttpRequest.h" /> <ClInclude Include="src\cpp\ripple\LedgerAcquire.h" />
<ClInclude Include="src\HttpsClient.h" /> <ClInclude Include="src\cpp\ripple\LedgerConsensus.h" />
<ClInclude Include="src\InstanceCounter.h" /> <ClInclude Include="src\cpp\ripple\LedgerEntrySet.h" />
<ClInclude Include="src\Interpreter.h" /> <ClInclude Include="src\cpp\ripple\LedgerFormats.h" />
<ClInclude Include="src\JobQueue.h" /> <ClInclude Include="src\cpp\ripple\LedgerHistory.h" />
<ClInclude Include="src\key.h" /> <ClInclude Include="src\cpp\ripple\LedgerMaster.h" />
<ClInclude Include="src\Ledger.h" /> <ClInclude Include="src\cpp\ripple\LedgerProposal.h" />
<ClInclude Include="src\LedgerAcquire.h" /> <ClInclude Include="src\cpp\ripple\LedgerTiming.h" />
<ClInclude Include="src\LedgerConsensus.h" /> <ClInclude Include="src\cpp\ripple\Log.h" />
<ClInclude Include="src\LedgerEntrySet.h" /> <ClInclude Include="src\cpp\ripple\NetworkOPs.h" />
<ClInclude Include="src\LedgerFormats.h" /> <ClInclude Include="src\cpp\ripple\NetworkStatus.h" />
<ClInclude Include="src\LedgerHistory.h" /> <ClInclude Include="src\cpp\ripple\NicknameState.h" />
<ClInclude Include="src\LedgerMaster.h" /> <ClInclude Include="src\cpp\ripple\Operation.h" />
<ClInclude Include="src\LedgerProposal.h" /> <ClInclude Include="src\cpp\ripple\OrderBook.h" />
<ClInclude Include="src\LedgerTiming.h" /> <ClInclude Include="src\cpp\ripple\OrderBookDB.h" />
<ClInclude Include="src\Log.h" /> <ClInclude Include="src\cpp\ripple\PackedMessage.h" />
<ClInclude Include="src\NetworkOPs.h" /> <ClInclude Include="src\cpp\ripple\ParseSection.h" />
<ClInclude Include="src\NetworkStatus.h" /> <ClInclude Include="src\cpp\ripple\Pathfinder.h" />
<ClInclude Include="src\NewcoinAddress.h" /> <ClInclude Include="src\cpp\ripple\Peer.h" />
<ClInclude Include="src\NicknameState.h" /> <ClInclude Include="src\cpp\ripple\PeerDoor.h" />
<ClInclude Include="src\Operation.h" /> <ClInclude Include="src\cpp\ripple\ProofOfWork.h" />
<ClInclude Include="src\OrderBook.h" /> <ClInclude Include="src\cpp\ripple\PubKeyCache.h" />
<ClInclude Include="src\OrderBookDB.h" /> <ClInclude Include="src\cpp\ripple\RangeSet.h" />
<ClInclude Include="src\PackedMessage.h" /> <ClInclude Include="src\cpp\ripple\rfc1751.h" />
<ClInclude Include="src\ParseSection.h" /> <ClInclude Include="src\cpp\ripple\ripple.pb.h" />
<ClInclude Include="src\Pathfinder.h" /> <ClInclude Include="src\cpp\ripple\RippleAddress.h" />
<ClInclude Include="src\Peer.h" /> <ClInclude Include="src\cpp\ripple\RippleCalc.h" />
<ClInclude Include="src\PeerDoor.h" /> <ClInclude Include="src\cpp\ripple\RippleLines.h" />
<ClInclude Include="src\PubKeyCache.h" /> <ClInclude Include="src\cpp\ripple\RippleState.h" />
<ClInclude Include="src\RangeSet.h" /> <ClInclude Include="src\cpp\ripple\RPC.h" />
<ClInclude Include="src\RequestParser.h" /> <ClInclude Include="src\cpp\ripple\RPCCommands.h" />
<ClInclude Include="src\rfc1751.h" /> <ClInclude Include="src\cpp\ripple\RPCDoor.h" />
<ClInclude Include="src\ripple.pb.h" /> <ClInclude Include="src\cpp\ripple\RPCHandler.h" />
<ClInclude Include="src\RippleAddress.h" /> <ClInclude Include="src\cpp\ripple\RPCServer.h" />
<ClInclude Include="src\RippleCalc.h" /> <ClInclude Include="src\cpp\ripple\ScopedLock.h" />
<ClInclude Include="src\RippleLines.h" /> <ClInclude Include="src\cpp\ripple\ScriptData.h" />
<ClInclude Include="src\RippleState.h" /> <ClInclude Include="src\cpp\ripple\SecureAllocator.h" />
<ClInclude Include="src\RPC.h" /> <ClInclude Include="src\cpp\ripple\SerializedLedger.h" />
<ClInclude Include="src\RPCCommands.h" /> <ClInclude Include="src\cpp\ripple\SerializedObject.h" />
<ClInclude Include="src\RPCDoor.h" /> <ClInclude Include="src\cpp\ripple\SerializedTransaction.h" />
<ClInclude Include="src\RPCHandler.h" /> <ClInclude Include="src\cpp\ripple\SerializedTypes.h" />
<ClInclude Include="src\RPCServer.h" /> <ClInclude Include="src\cpp\ripple\SerializedValidation.h" />
<ClInclude Include="src\ScopedLock.h" /> <ClInclude Include="src\cpp\ripple\SerializeProto.h" />
<ClInclude Include="src\ScriptData.h" /> <ClInclude Include="src\cpp\ripple\Serializer.h" />
<ClInclude Include="src\SecureAllocator.h" /> <ClInclude Include="src\cpp\ripple\SHAMap.h" />
<ClInclude Include="src\SerializedLedger.h" /> <ClInclude Include="src\cpp\ripple\SHAMapSync.h" />
<ClInclude Include="src\SerializedObject.h" /> <ClInclude Include="src\cpp\ripple\SNTPClient.h" />
<ClInclude Include="src\SerializedTransaction.h" /> <ClInclude Include="src\cpp\ripple\Suppression.h" />
<ClInclude Include="src\SerializedTypes.h" /> <ClInclude Include="src\cpp\ripple\TaggedCache.h" />
<ClInclude Include="src\SerializedValidation.h" /> <ClInclude Include="src\cpp\ripple\Transaction.h" />
<ClInclude Include="src\SerializeProto.h" /> <ClInclude Include="src\cpp\ripple\TransactionEngine.h" />
<ClInclude Include="src\Serializer.h" /> <ClInclude Include="src\cpp\ripple\TransactionErr.h" />
<ClInclude Include="src\SHAMap.h" /> <ClInclude Include="src\cpp\ripple\TransactionFormats.h" />
<ClInclude Include="src\SHAMapSync.h" /> <ClInclude Include="src\cpp\ripple\TransactionMaster.h" />
<ClInclude Include="src\SNTPClient.h" /> <ClInclude Include="src\cpp\ripple\TransactionMeta.h" />
<ClInclude Include="src\Suppression.h" /> <ClInclude Include="src\cpp\ripple\types.h" />
<ClInclude Include="src\TaggedCache.h" /> <ClInclude Include="src\cpp\ripple\uint256.h" />
<ClInclude Include="src\Transaction.h" /> <ClInclude Include="src\cpp\ripple\UniqueNodeList.h" />
<ClInclude Include="src\TransactionEngine.h" /> <ClInclude Include="src\cpp\ripple\utils.h" />
<ClInclude Include="src\TransactionErr.h" /> <ClInclude Include="src\cpp\ripple\ValidationCollection.h" />
<ClInclude Include="src\TransactionFormats.h" /> <ClInclude Include="src\cpp\ripple\Version.h" />
<ClInclude Include="src\TransactionMaster.h" /> <ClInclude Include="src\cpp\ripple\Wallet.h" />
<ClInclude Include="src\TransactionMeta.h" /> <ClInclude Include="src\cpp\ripple\WSConnection.h" />
<ClInclude Include="src\types.h" /> <ClInclude Include="src\cpp\ripple\WSDoor.h" />
<ClInclude Include="src\uint256.h" /> <ClInclude Include="src\cpp\ripple\WSHandler.h" />
<ClInclude Include="src\UniqueNodeList.h" />
<ClInclude Include="src\utils.h" />
<ClInclude Include="src\ValidationCollection.h" />
<ClInclude Include="src\Version.h" />
<ClInclude Include="src\Wallet.h" />
<ClInclude Include="src\WSConnection.h" />
<ClInclude Include="src\WSDoor.h" />
<ClInclude Include="src\WSHandler.h" />
<ClInclude Include="TimingService.h" />
<ClInclude Include="ExtendedTransaction.h" />
<ClInclude Include="util\pugiconfig.hpp" /> <ClInclude Include="util\pugiconfig.hpp" />
<ClInclude Include="util\pugixml.hpp" /> <ClInclude Include="util\pugixml.hpp" />
</ItemGroup> </ItemGroup>

View File

@@ -320,33 +320,15 @@
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="KnownNodeList.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="util\pugiconfig.hpp"> <ClInclude Include="util\pugiconfig.hpp">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="util\pugixml.hpp"> <ClInclude Include="util\pugixml.hpp">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="NetworkThread.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="bitcoinUtil.h"> <ClInclude Include="bitcoinUtil.h">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="TimingService.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="script.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ExtendedTransaction.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Account.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="database\database.h"> <ClInclude Include="database\database.h">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
@@ -359,277 +341,259 @@
<ClInclude Include="database\sqlite3ext.h"> <ClInclude Include="database\sqlite3ext.h">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Conversion.h"> <ClInclude Include="src\cpp\ripple\AccountState.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="obj\src\newcoin.pb.h"> <ClInclude Include="src\cpp\ripple\Application.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\AccountState.h"> <ClInclude Include="src\cpp\ripple\base58.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Application.h"> <ClInclude Include="src\cpp\ripple\bignum.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\base58.h"> <ClInclude Include="src\cpp\ripple\BitcoinUtil.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\bignum.h"> <ClInclude Include="src\cpp\ripple\CallRPC.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\BinaryFormats.h"> <ClInclude Include="src\cpp\ripple\CanonicalTXSet.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\BitcoinUtil.h"> <ClInclude Include="src\cpp\ripple\Config.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\CallRPC.h"> <ClInclude Include="src\cpp\ripple\ConnectionPool.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\CanonicalTXSet.h"> <ClInclude Include="src\cpp\ripple\Contract.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Config.h"> <ClInclude Include="src\cpp\ripple\FieldNames.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\ConnectionPool.h"> <ClInclude Include="src\cpp\ripple\HashedObject.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Conversion.h"> <ClInclude Include="src\cpp\ripple\HashPrefixes.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\HashedObject.h"> <ClInclude Include="src\cpp\ripple\HTTPRequest.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\HttpReply.h"> <ClInclude Include="src\cpp\ripple\HttpsClient.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\HttpRequest.h"> <ClInclude Include="src\cpp\ripple\InstanceCounter.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\HttpsClient.h"> <ClInclude Include="src\cpp\ripple\Interpreter.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\key.h"> <ClInclude Include="src\cpp\ripple\JobQueue.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Ledger.h"> <ClInclude Include="src\cpp\ripple\key.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\LedgerAcquire.h"> <ClInclude Include="src\cpp\ripple\Ledger.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\LedgerConsensus.h"> <ClInclude Include="src\cpp\ripple\LedgerAcquire.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\LedgerFormats.h"> <ClInclude Include="src\cpp\ripple\LedgerConsensus.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\LedgerHistory.h"> <ClInclude Include="src\cpp\ripple\LedgerEntrySet.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\LedgerMaster.h"> <ClInclude Include="src\cpp\ripple\LedgerFormats.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\LedgerProposal.h"> <ClInclude Include="src\cpp\ripple\LedgerHistory.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\LedgerTiming.h"> <ClInclude Include="src\cpp\ripple\LedgerMaster.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Log.h"> <ClInclude Include="src\cpp\ripple\LedgerProposal.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\NetworkOPs.h"> <ClInclude Include="src\cpp\ripple\LedgerTiming.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\NetworkStatus.h"> <ClInclude Include="src\cpp\ripple\Log.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\NewcoinAddress.h"> <ClInclude Include="src\cpp\ripple\NetworkOPs.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\NicknameState.h"> <ClInclude Include="src\cpp\ripple\NetworkStatus.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\PackedMessage.h"> <ClInclude Include="src\cpp\ripple\NicknameState.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\ParseSection.h"> <ClInclude Include="src\cpp\ripple\Operation.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Peer.h"> <ClInclude Include="src\cpp\ripple\OrderBook.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\PeerDoor.h"> <ClInclude Include="src\cpp\ripple\OrderBookDB.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\PubKeyCache.h"> <ClInclude Include="src\cpp\ripple\PackedMessage.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RequestParser.h"> <ClInclude Include="src\cpp\ripple\ParseSection.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\rfc1751.h"> <ClInclude Include="src\cpp\ripple\Pathfinder.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RippleState.h"> <ClInclude Include="src\cpp\ripple\Peer.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RPC.h"> <ClInclude Include="src\cpp\ripple\PeerDoor.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RPCCommands.h"> <ClInclude Include="src\cpp\ripple\ProofOfWork.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RPCDoor.h"> <ClInclude Include="src\cpp\ripple\PubKeyCache.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RPCServer.h"> <ClInclude Include="src\cpp\ripple\RangeSet.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\ScopedLock.h"> <ClInclude Include="src\cpp\ripple\rfc1751.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SecureAllocator.h"> <ClInclude Include="src\cpp\ripple\ripple.pb.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SerializedLedger.h"> <ClInclude Include="src\cpp\ripple\RippleAddress.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SerializedObject.h"> <ClInclude Include="src\cpp\ripple\RippleCalc.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SerializedTransaction.h"> <ClInclude Include="src\cpp\ripple\RippleLines.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SerializedTypes.h"> <ClInclude Include="src\cpp\ripple\RippleState.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SerializedValidation.h"> <ClInclude Include="src\cpp\ripple\RPC.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Serializer.h"> <ClInclude Include="src\cpp\ripple\RPCCommands.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SHAMap.h"> <ClInclude Include="src\cpp\ripple\RPCDoor.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\TaggedCache.h"> <ClInclude Include="src\cpp\ripple\RPCHandler.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Transaction.h"> <ClInclude Include="src\cpp\ripple\RPCServer.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\TransactionEngine.h"> <ClInclude Include="src\cpp\ripple\ScopedLock.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\TransactionFormats.h"> <ClInclude Include="src\cpp\ripple\ScriptData.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\TransactionMaster.h"> <ClInclude Include="src\cpp\ripple\SecureAllocator.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\types.h"> <ClInclude Include="src\cpp\ripple\SerializedLedger.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\uint256.h"> <ClInclude Include="src\cpp\ripple\SerializedObject.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\UniqueNodeList.h"> <ClInclude Include="src\cpp\ripple\SerializedTransaction.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\utils.h"> <ClInclude Include="src\cpp\ripple\SerializedTypes.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\ValidationCollection.h"> <ClInclude Include="src\cpp\ripple\SerializedValidation.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Wallet.h"> <ClInclude Include="src\cpp\ripple\SerializeProto.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Pathfinder.h"> <ClInclude Include="src\cpp\ripple\Serializer.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RippleLines.h"> <ClInclude Include="src\cpp\ripple\SHAMap.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\OrderBookDB.h"> <ClInclude Include="src\cpp\ripple\SHAMapSync.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\OrderBook.h"> <ClInclude Include="src\cpp\ripple\SNTPClient.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Contract.h"> <ClInclude Include="src\cpp\ripple\Suppression.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\ScriptData.h"> <ClInclude Include="src\cpp\ripple\TaggedCache.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Interpreter.h"> <ClInclude Include="src\cpp\ripple\Transaction.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\Operation.h"> <ClInclude Include="src\cpp\ripple\TransactionEngine.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RPCHandler.h"> <ClInclude Include="src\cpp\ripple\TransactionErr.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\WSHandler.h"> <ClInclude Include="src\cpp\ripple\TransactionFormats.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\FieldNames.h"> <ClInclude Include="src\cpp\ripple\TransactionMaster.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\HashPrefixes.h"> <ClInclude Include="src\cpp\ripple\TransactionMeta.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\InstanceCounter.h"> <ClInclude Include="src\cpp\ripple\types.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\JobQueue.h"> <ClInclude Include="src\cpp\ripple\uint256.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\LedgerEntrySet.h"> <ClInclude Include="src\cpp\ripple\UniqueNodeList.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RangeSet.h"> <ClInclude Include="src\cpp\ripple\utils.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\ripple.pb.h"> <ClInclude Include="src\cpp\ripple\ValidationCollection.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RippleAddress.h"> <ClInclude Include="src\cpp\ripple\Version.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\RippleCalc.h"> <ClInclude Include="src\cpp\ripple\Wallet.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SerializeProto.h"> <ClInclude Include="src\cpp\ripple\WSConnection.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SHAMapSync.h"> <ClInclude Include="src\cpp\ripple\WSDoor.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\SNTPClient.h"> <ClInclude Include="src\cpp\ripple\WSHandler.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Suppression.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\TransactionErr.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\TransactionMeta.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Version.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\WSConnection.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\WSDoor.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>

View File

@@ -1045,13 +1045,15 @@ void NetworkOPs::pubLedger(Ledger::ref lpAccepted)
for (SHAMapItem::pointer item = txSet.peekFirstItem(); !!item; item = txSet.peekNextItem(item->getTag())) for (SHAMapItem::pointer item = txSet.peekFirstItem(); !!item; item = txSet.peekNextItem(item->getTag()))
{ {
SerializedTransaction::pointer stTxn = theApp->getMasterTransaction().fetch(item, false, 0); SerializedTransaction::pointer stTxn = theApp->getMasterTransaction().fetch(item, false, 0);
if(stTxn)
{
// XXX Need to support other results. // XXX Need to support other results.
// XXX Need to give failures too. // XXX Need to give failures too.
TER terResult = tesSUCCESS; TER terResult = tesSUCCESS;
pubAcceptedTransaction(lpAccepted, *stTxn, terResult); pubAcceptedTransaction(lpAccepted, *stTxn, terResult);
} }
// TODO: remove old entries from the submit map }
} }
} }
} }
@@ -1103,7 +1105,16 @@ void NetworkOPs::pubAcceptedTransaction(Ledger::ref lpCurrent, const SerializedT
} }
// TODO: tell the mSubmitMap people // TODO: will need to rework this to get the affected accounts in a different way when we want finer granularity than just subAccount
// transactions to
// transactions from
// orderbook issuer <- weird since you are probably just interested in a particular pair
// orderbook receiver
// your credit setting?
// other people credit set
// other account changes
void NetworkOPs::pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult, bool bAccepted) void NetworkOPs::pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult, bool bAccepted)
{ {
boost::unordered_set<InfoSub*> notify; boost::unordered_set<InfoSub*> notify;
@@ -1115,9 +1126,10 @@ void NetworkOPs::pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTr
if (!mSubAccount.empty() || (!mSubRTAccount.empty()) ) if (!mSubAccount.empty() || (!mSubRTAccount.empty()) )
{ {
BOOST_FOREACH(const RippleAddress& naAccountPublic, stTxn.getAffectedAccounts()) typedef const std::pair<RippleAddress,bool> AccountPair;
BOOST_FOREACH(AccountPair& affectedAccount, getAffectedAccounts(stTxn))
{ {
subInfoMapIterator simiIt = mSubRTAccount.find(naAccountPublic.getAccountID()); subInfoMapIterator simiIt = mSubRTAccount.find(affectedAccount.first.getAccountID());
if (simiIt != mSubRTAccount.end()) if (simiIt != mSubRTAccount.end())
{ {
@@ -1128,7 +1140,7 @@ void NetworkOPs::pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTr
} }
if(bAccepted) if(bAccepted)
{ {
simiIt = mSubAccount.find(naAccountPublic.getAccountID()); simiIt = mSubAccount.find(affectedAccount.first.getAccountID());
if (simiIt != mSubAccount.end()) if (simiIt != mSubAccount.end())
{ {
@@ -1153,6 +1165,36 @@ void NetworkOPs::pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTr
} }
} }
// JED: I know this is sort of ugly. I'm going to rework this to get the affected accounts in a different way when we want finer granularity than just "account"
std::map<RippleAddress,bool> NetworkOPs::getAffectedAccounts(const SerializedTransaction& stTxn)
{
std::map<RippleAddress,bool> accounts;
BOOST_FOREACH(const SerializedType& it, stTxn.peekData())
{
const STAccount* sa = dynamic_cast<const STAccount*>(&it);
if (sa)
{
bool found = false;
RippleAddress na = sa->getValueNCA();
accounts[na]=true;
}else
{
if( it.getFName() == sfLimitAmount )
{
const STAmount* amount = dynamic_cast<const STAmount*>(&it);
if(amount)
{
RippleAddress na;
na.setAccountID(amount->getIssuer());
accounts[na]=true;
}
}
}
}
return accounts;
}
// //
// Monitoring // Monitoring
// //
@@ -1231,7 +1273,7 @@ uint32 NetworkOPs::acceptLedger()
void NetworkOPs::storeProposal(const LedgerProposal::pointer& proposal, const RippleAddress& peerPublic) void NetworkOPs::storeProposal(const LedgerProposal::pointer& proposal, const RippleAddress& peerPublic)
{ {
std::list<LedgerProposal::pointer>& props = mStoredProposals[peerPublic.getNodeID()]; std::list<LedgerProposal::pointer>& props = mStoredProposals[peerPublic.getNodeID()];
if (props.size() >= (mLastCloseProposers + 10)) if (props.size() >= (unsigned)(mLastCloseProposers + 10))
props.pop_front(); props.pop_front();
props.push_back(proposal); props.push_back(proposal);
} }

View File

@@ -90,7 +90,7 @@ protected:
boost::interprocess::interprocess_upgradable_mutex mMonitorLock; boost::interprocess::interprocess_upgradable_mutex mMonitorLock;
subInfoMapType mSubAccount; subInfoMapType mSubAccount;
subInfoMapType mSubRTAccount; subInfoMapType mSubRTAccount;
subSubmitMapType mSubmitMap; subSubmitMapType mSubmitMap; // TODO: probably dump this
boost::unordered_set<InfoSub*> mSubLedger; // accepted ledgers boost::unordered_set<InfoSub*> mSubLedger; // accepted ledgers
boost::unordered_set<InfoSub*> mSubServer; // when server changes connectivity state boost::unordered_set<InfoSub*> mSubServer; // when server changes connectivity state
@@ -107,6 +107,7 @@ protected:
void pubAcceptedTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult); void pubAcceptedTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult);
void pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult,bool accepted); void pubAccountTransaction(Ledger::ref lpCurrent, const SerializedTransaction& stTxn, TER terResult,bool accepted);
std::map<RippleAddress,bool> getAffectedAccounts(const SerializedTransaction& stTxn);
public: public:
NetworkOPs(boost::asio::io_service& io_service, LedgerMaster* pLedgerMaster); NetworkOPs(boost::asio::io_service& io_service, LedgerMaster* pLedgerMaster);

View File

@@ -49,6 +49,34 @@ void TransactionMetaSet::setAffectedNode(const uint256& node, SField::ref type)
obj.setFieldH256(sfLedgerIndex, node); obj.setFieldH256(sfLedgerIndex, node);
} }
/*
std::vector<RippleAddress> TransactionMetaSet::getAffectedAccounts()
{
std::vector<RippleAddress> accounts;
BOOST_FOREACH(STObject& object, mNodes.getValue() )
{
const STAccount* sa = dynamic_cast<const STAccount*>(&it);
if (sa != NULL)
{
bool found = false;
RippleAddress na = sa->getValueNCA();
BOOST_FOREACH(const RippleAddress& it, accounts)
{
if (it == na)
{
found = true;
break;
}
}
if (!found)
accounts.push_back(na);
}
}
return accounts;
}
*/
STObject& TransactionMetaSet::getAffectedNode(const uint256& node, SField::ref type) STObject& TransactionMetaSet::getAffectedNode(const uint256& node, SField::ref type)
{ {
assert(&type); assert(&type);

View File

@@ -43,6 +43,7 @@ public:
STObject& getAffectedNode(const uint256&, SField::ref type); STObject& getAffectedNode(const uint256&, SField::ref type);
STObject& getAffectedNode(const uint256&); STObject& getAffectedNode(const uint256&);
const STObject& peekAffectedNode(const uint256&) const; const STObject& peekAffectedNode(const uint256&) const;
//std::vector<RippleAddress> getAffectedAccounts();
Json::Value getJson(int p) const { return getAsObject().getJson(p); } Json::Value getJson(int p) const { return getAsObject().getJson(p); }
void addRaw(Serializer&, TER); void addRaw(Serializer&, TER);