diff --git a/Builds/VisualStudio2012/RippleD.vcxproj b/Builds/VisualStudio2012/RippleD.vcxproj
index 29791f67e7..85bbf2d707 100644
--- a/Builds/VisualStudio2012/RippleD.vcxproj
+++ b/Builds/VisualStudio2012/RippleD.vcxproj
@@ -29,6 +29,10 @@
+
+
+
+
true
true
diff --git a/Builds/VisualStudio2012/RippleD.vcxproj.filters b/Builds/VisualStudio2012/RippleD.vcxproj.filters
index 10c3441422..21784efacd 100644
--- a/Builds/VisualStudio2012/RippleD.vcxproj.filters
+++ b/Builds/VisualStudio2012/RippleD.vcxproj.filters
@@ -810,6 +810,18 @@
[1] Ripple\ripple_app\_transactions
+
+ [1] Ripple\ripple_app
+
+
+ [1] Ripple\ripple_app
+
+
+ [1] Ripple\ripple_app
+
+
+ [1] Ripple\ripple_app
+
diff --git a/modules/ripple_app/ripple_app.cpp b/modules/ripple_app/ripple_app.cpp
index da34a68714..13b9db2fb5 100644
--- a/modules/ripple_app/ripple_app.cpp
+++ b/modules/ripple_app/ripple_app.cpp
@@ -228,36 +228,21 @@ static const uint64 tenTo17m1 = tenTo17 - 1;
#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 1
-#include "src/cpp/ripple/RPCHandler.cpp"
#include "src/cpp/ripple/Ledger.cpp"
-#include "src/cpp/ripple/ripple_SHAMap.cpp" // Uses theApp
#include "src/cpp/ripple/ripple_SHAMapDelta.cpp"
-#include "src/cpp/ripple/ripple_SHAMapItem.cpp"
#include "src/cpp/ripple/ripple_SHAMapNode.cpp"
-#include "src/cpp/ripple/ripple_SHAMapSync.cpp"
#include "src/cpp/ripple/ripple_SHAMapTreeNode.cpp"
-#include "src/cpp/ripple/ripple_SHAMapMissingNode.cpp"
#include "src/cpp/ripple/ripple_Database.cpp"
-#include "src/cpp/ripple/ripple_AccountItem.cpp"
#include "src/cpp/ripple/ripple_AccountItems.cpp"
-#include "src/cpp/ripple/AccountSetTransactor.cpp"
#include "src/cpp/ripple/ripple_AccountState.cpp"
-#include "src/cpp/ripple/ripple_CanonicalTXSet.cpp"
#include "src/cpp/ripple/ChangeTransactor.cpp"
-#include "src/cpp/ripple/Contract.cpp"
#include "src/cpp/ripple/ripple_DBInit.cpp"
-#include "src/cpp/ripple/HTTPRequest.cpp"
#include "src/cpp/ripple/Interpreter.cpp"
-#include "src/cpp/ripple/LedgerProposal.cpp"
#include "src/cpp/ripple/LedgerTiming.cpp"
-#include "src/cpp/ripple/ripple_LoadManager.cpp"
#include "src/cpp/ripple/ripple_Main.cpp"
-#include "src/cpp/ripple/ripple_NicknameState.cpp"
#include "src/cpp/ripple/ripple_Offer.cpp"
-#include "src/cpp/ripple/OfferCancelTransactor.cpp"
#include "src/cpp/ripple/Operation.cpp"
-#include "src/cpp/ripple/OrderBookDB.cpp"
#endif
@@ -265,6 +250,29 @@ static const uint64 tenTo17m1 = tenTo17 - 1;
#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 2
+#include "src/cpp/ripple/RPCHandler.cpp"
+#include "src/cpp/ripple/ripple_SHAMap.cpp" // Uses theApp
+#include "src/cpp/ripple/ripple_SHAMapItem.cpp"
+#include "src/cpp/ripple/ripple_SHAMapSync.cpp"
+#include "src/cpp/ripple/ripple_SHAMapMissingNode.cpp"
+
+#include "src/cpp/ripple/ripple_AccountItem.cpp"
+#include "src/cpp/ripple/AccountSetTransactor.cpp"
+#include "src/cpp/ripple/ripple_CanonicalTXSet.cpp"
+#include "src/cpp/ripple/Contract.cpp"
+#include "src/cpp/ripple/HTTPRequest.cpp"
+#include "src/cpp/ripple/LedgerProposal.cpp"
+#include "src/cpp/ripple/ripple_LoadManager.cpp"
+#include "src/cpp/ripple/ripple_NicknameState.cpp"
+#include "src/cpp/ripple/OfferCancelTransactor.cpp"
+#include "src/cpp/ripple/OrderBookDB.cpp"
+
+#endif
+
+//------------------------------------------------------------------------------
+
+#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 3
+
// This is for PeerDoor and WSDoor
// Generate DH for SSL connection.
static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength)
@@ -274,61 +282,22 @@ static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength)
}
#include "src/cpp/ripple/ripple_RippleCalc.cpp"
-#include "src/cpp/ripple/ripple_UniqueNodeList.cpp"
#include "src/cpp/ripple/CallRPC.cpp"
-#include "src/cpp/ripple/ripple_InboundLedger.cpp"
#include "src/cpp/ripple/ripple_PathState.cpp"
-#include "src/cpp/ripple/ripple_SqliteDatabase.cpp"
#include "src/cpp/ripple/ParameterTable.cpp"
-#include "src/cpp/ripple/PaymentTransactor.cpp"
#include "src/cpp/ripple/PeerDoor.cpp"
-#include "src/cpp/ripple/RegularKeySetTransactor.cpp"
#include "src/cpp/ripple/ripple_RippleLineCache.cpp"
-#include "src/cpp/ripple/ripple_RippleState.cpp"
#include "src/cpp/ripple/rpc.cpp"
-#include "src/cpp/ripple/RPCDoor.cpp"
#include "src/cpp/ripple/RPCErr.cpp"
-#include "src/cpp/ripple/RPCServer.cpp"
#include "src/cpp/ripple/RPCSub.cpp"
-#include "src/cpp/ripple/ScriptData.cpp"
#include "src/cpp/ripple/SerializedValidation.cpp"
-#include "src/cpp/ripple/SNTPClient.cpp"
#include "src/cpp/ripple/Transaction.cpp"
-#include "src/cpp/ripple/TransactionCheck.cpp"
#include "src/cpp/ripple/TransactionEngine.cpp"
-#include "src/cpp/ripple/TransactionMaster.cpp"
#include "src/cpp/ripple/TransactionMeta.cpp"
-#include "src/cpp/ripple/TransactionQueue.cpp"
#include "src/cpp/ripple/Transactor.cpp"
-#include "src/cpp/ripple/TrustSetTransactor.cpp"
#include "src/cpp/ripple/WSConnection.cpp"
#include "src/cpp/ripple/WSDoor.cpp"
-#include "src/cpp/ripple/WSHandler.cpp"
-
-#endif
-
-//------------------------------------------------------------------------------
-
-#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 3
-
-#include "src/cpp/ripple/ripple_Peer.cpp"
-#include "src/cpp/ripple/ripple_LedgerEntrySet.cpp"
-#include "src/cpp/ripple/ripple_Application.cpp"
-#include "src/cpp/ripple/ripple_Pathfinder.cpp"
-#include "src/cpp/ripple/OfferCreateTransactor.cpp"
-#include "src/cpp/ripple/ripple_Features.cpp"
-#include "src/cpp/ripple/ripple_Validations.cpp"
-
-#include "src/cpp/ripple/ripple_LocalCredentials.cpp"
-#include "src/cpp/ripple/WalletAddTransactor.cpp"
-#include "src/cpp/ripple/ripple_HashedObject.cpp"
-#include "src/cpp/ripple/ripple_AcceptedLedgerTx.cpp"
-#include "src/cpp/ripple/ripple_AcceptedLedger.cpp"
-#include "src/cpp/ripple/ripple_DatabaseCon.cpp"
-#include "src/cpp/ripple/ripple_DisputedTx.cpp"
-#include "src/cpp/ripple/ripple_FeeVote.cpp"
-#include "src/cpp/ripple/ripple_HashRouter.cpp"
#endif
@@ -336,25 +305,96 @@ static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength)
#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 4
+// This is for PeerDoor and WSDoor
+// Generate DH for SSL connection.
+static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength)
+{
+ // VFALCO TODO eliminate this horrendous dependency on theApp and LocalCredentials
+ return 512 == iKeyLength ? getApp ().getLocalCredentials ().getDh512 () : getApp ().getLocalCredentials ().getDh1024 ();
+}
+
+#include "src/cpp/ripple/ripple_UniqueNodeList.cpp"
+#include "src/cpp/ripple/ripple_InboundLedger.cpp"
+#include "src/cpp/ripple/ripple_SqliteDatabase.cpp"
+
+#include "src/cpp/ripple/PaymentTransactor.cpp"
+#include "src/cpp/ripple/RegularKeySetTransactor.cpp"
+#include "src/cpp/ripple/ripple_RippleState.cpp"
+#include "src/cpp/ripple/RPCDoor.cpp"
+#include "src/cpp/ripple/RPCServer.cpp"
+#include "src/cpp/ripple/ScriptData.cpp"
+#include "src/cpp/ripple/SNTPClient.cpp"
+#include "src/cpp/ripple/TransactionCheck.cpp"
+#include "src/cpp/ripple/TransactionMaster.cpp"
+#include "src/cpp/ripple/TransactionQueue.cpp"
+#include "src/cpp/ripple/TrustSetTransactor.cpp"
+#include "src/cpp/ripple/WSHandler.cpp"
+
+#endif
+
+//------------------------------------------------------------------------------
+
+#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 5
+
+#include "src/cpp/ripple/ripple_Peer.cpp"
+#include "src/cpp/ripple/ripple_Application.cpp"
+#include "src/cpp/ripple/OfferCreateTransactor.cpp"
+#include "src/cpp/ripple/ripple_Validations.cpp"
+
+#include "src/cpp/ripple/WalletAddTransactor.cpp"
+#include "src/cpp/ripple/ripple_AcceptedLedgerTx.cpp"
+#include "src/cpp/ripple/ripple_DatabaseCon.cpp"
+#include "src/cpp/ripple/ripple_FeeVote.cpp"
+
+#endif
+
+//------------------------------------------------------------------------------
+
+#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 6
+
+#include "src/cpp/ripple/ripple_LedgerEntrySet.cpp"
+#include "src/cpp/ripple/ripple_Pathfinder.cpp"
+#include "src/cpp/ripple/ripple_Features.cpp"
+
+#include "src/cpp/ripple/ripple_LocalCredentials.cpp"
+#include "src/cpp/ripple/ripple_HashedObject.cpp"
+#include "src/cpp/ripple/ripple_AcceptedLedger.cpp"
+#include "src/cpp/ripple/ripple_DisputedTx.cpp"
+#include "src/cpp/ripple/ripple_HashRouter.cpp"
+
+#endif
+
+//------------------------------------------------------------------------------
+
+#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 7
+
#include "src/cpp/ripple/NetworkOPs.cpp"
-#include "src/cpp/ripple/ripple_LedgerConsensus.cpp"
#include "src/cpp/ripple/ripple_Peers.cpp"
-#include "src/cpp/ripple/LedgerMaster.cpp"
#include "src/cpp/ripple/ripple_HashedObjectStore.cpp"
-#include "src/cpp/ripple/HttpsClient.cpp"
#include "src/cpp/ripple/ripple_InboundLedgers.cpp"
-#include "src/cpp/ripple/ripple_InfoSub.cpp"
#include "src/cpp/ripple/ripple_LedgerHistory.cpp"
-#include "src/cpp/ripple/ripple_OrderBook.cpp"
#include "src/cpp/ripple/ripple_PathRequest.cpp"
+#include "src/cpp/ripple/ripple_SerializedLedger.cpp"
+#include "src/cpp/ripple/ripple_TransactionAcquire.cpp"
+
+#endif
+
+//------------------------------------------------------------------------------
+
+#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 8
+
+#include "src/cpp/ripple/ripple_LedgerConsensus.cpp"
+#include "src/cpp/ripple/LedgerMaster.cpp"
+#include "src/cpp/ripple/HttpsClient.cpp"
+
+#include "src/cpp/ripple/ripple_InfoSub.cpp"
+#include "src/cpp/ripple/ripple_OrderBook.cpp"
#include "src/cpp/ripple/ripple_PeerSet.cpp"
#include "src/cpp/ripple/ripple_ProofOfWork.cpp"
#include "src/cpp/ripple/ripple_ProofOfWorkFactory.h" // private
-#include "src/cpp/ripple/ripple_ProofOfWorkFactory.cpp"
-#include "src/cpp/ripple/ripple_SerializedLedger.cpp"
+#include "src/cpp/ripple/ripple_ProofOfWorkFactory.cpp" // requires ProofOfWork.cpp for ProofOfWork::sMaxDifficulty
#include "src/cpp/ripple/ripple_SerializedTransaction.cpp"
-#include "src/cpp/ripple/ripple_TransactionAcquire.cpp"
#include "src/cpp/ripple/ripple_SHAMapSyncFilters.cpp" // requires Application
@@ -366,7 +406,7 @@ static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength)
//------------------------------------------------------------------------------
-#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 4
+#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 8
// Unit Tests
//
@@ -377,7 +417,7 @@ static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength)
#include "src/cpp/ripple/LedgerUnitTests.cpp"
#include "src/cpp/ripple/ripple_SHAMapUnitTests.cpp"
#include "src/cpp/ripple/ripple_SHAMapSyncUnitTests.cpp"
-#include "src/cpp/ripple/ripple_ProofOfWorkFactoryUnitTests.cpp"
+#include "src/cpp/ripple/ripple_ProofOfWorkFactoryUnitTests.cpp" // Requires ProofOfWorkFactory.h
#include "src/cpp/ripple/ripple_SerializedTransactionUnitTests.cpp"
//------------------------------------------------------------------------------
diff --git a/modules/ripple_app/ripple_app_pt5.cpp b/modules/ripple_app/ripple_app_pt5.cpp
new file mode 100644
index 0000000000..d169e86ebc
--- /dev/null
+++ b/modules/ripple_app/ripple_app_pt5.cpp
@@ -0,0 +1,8 @@
+//------------------------------------------------------------------------------
+/*
+ Copyright (c) 2011-2013, OpenCoin, Inc.
+*/
+//==============================================================================
+
+#define RIPPLE_MAIN_PART 5
+#include "ripple_app.cpp"
diff --git a/modules/ripple_app/ripple_app_pt6.cpp b/modules/ripple_app/ripple_app_pt6.cpp
new file mode 100644
index 0000000000..1e41133a62
--- /dev/null
+++ b/modules/ripple_app/ripple_app_pt6.cpp
@@ -0,0 +1,8 @@
+//------------------------------------------------------------------------------
+/*
+ Copyright (c) 2011-2013, OpenCoin, Inc.
+*/
+//==============================================================================
+
+#define RIPPLE_MAIN_PART 6
+#include "ripple_app.cpp"
diff --git a/modules/ripple_app/ripple_app_pt7.cpp b/modules/ripple_app/ripple_app_pt7.cpp
new file mode 100644
index 0000000000..78fe6c8aa4
--- /dev/null
+++ b/modules/ripple_app/ripple_app_pt7.cpp
@@ -0,0 +1,8 @@
+//------------------------------------------------------------------------------
+/*
+ Copyright (c) 2011-2013, OpenCoin, Inc.
+*/
+//==============================================================================
+
+#define RIPPLE_MAIN_PART 7
+#include "ripple_app.cpp"
diff --git a/modules/ripple_app/ripple_app_pt8.cpp b/modules/ripple_app/ripple_app_pt8.cpp
new file mode 100644
index 0000000000..0cd81dc0e1
--- /dev/null
+++ b/modules/ripple_app/ripple_app_pt8.cpp
@@ -0,0 +1,8 @@
+//------------------------------------------------------------------------------
+/*
+ Copyright (c) 2011-2013, OpenCoin, Inc.
+*/
+//==============================================================================
+
+#define RIPPLE_MAIN_PART 8
+#include "ripple_app.cpp"
diff --git a/src/cpp/ripple/ripple_ProofOfWork.cpp b/src/cpp/ripple/ripple_ProofOfWork.cpp
index 537e7dcb14..03f407f7e7 100644
--- a/src/cpp/ripple/ripple_ProofOfWork.cpp
+++ b/src/cpp/ripple/ripple_ProofOfWork.cpp
@@ -38,6 +38,7 @@ bool powResultInfo (POWResult powCode, std::string& strToken, std::string& strHu
return iIndex >= 0;
}
+// VFALCO TODO Move these to a header because they are used by ripple_ProofOfWorkFactory.cpp
const uint256 ProofOfWork::sMinTarget ("00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
const int ProofOfWork::sMaxIterations (1 << 23);
const int ProofOfWork::sMaxDifficulty (30);