diff --git a/.gitignore b/.gitignore index 02c75b68960..6157c1787e9 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,5 @@ DerivedData .idea/ *.hmap +# Intel Parallel Studio 2013 XE +My Amplifier XE Results - RippleD diff --git a/Builds/VisualStudio2012/Ripple.sln b/Builds/VisualStudio2012/Ripple.sln index 0d2854aef66..0d7f6c5a086 100644 --- a/Builds/VisualStudio2012/Ripple.sln +++ b/Builds/VisualStudio2012/Ripple.sln @@ -1,10 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Express 2012 for Windows Desktop -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RippleD", "RippleD.vcxproj", "{19465545-42EE-42FA-9CC8-F8975F8F1CC7}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "beast", "..\..\Subtrees\beast\Builds\VisualStudio2012\beast.vcxproj", "{73C5A0F0-7629-4DE7-9194-BE7AC6C19535}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RippleD", "RippleD.vcxproj", "{B7F39ECD-473C-484D-BC34-31F8362506A5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -13,20 +13,22 @@ Global Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {19465545-42EE-42FA-9CC8-F8975F8F1CC7}.Debug|Win32.ActiveCfg = Debug|Win32 - {19465545-42EE-42FA-9CC8-F8975F8F1CC7}.Debug|Win32.Build.0 = Debug|Win32 - {19465545-42EE-42FA-9CC8-F8975F8F1CC7}.Debug|x64.ActiveCfg = Debug|x64 - {19465545-42EE-42FA-9CC8-F8975F8F1CC7}.Debug|x64.Build.0 = Debug|x64 - {19465545-42EE-42FA-9CC8-F8975F8F1CC7}.Release|Win32.ActiveCfg = Release|Win32 - {19465545-42EE-42FA-9CC8-F8975F8F1CC7}.Release|Win32.Build.0 = Release|Win32 - {19465545-42EE-42FA-9CC8-F8975F8F1CC7}.Release|x64.ActiveCfg = Release|x64 - {19465545-42EE-42FA-9CC8-F8975F8F1CC7}.Release|x64.Build.0 = Release|x64 {73C5A0F0-7629-4DE7-9194-BE7AC6C19535}.Debug|Win32.ActiveCfg = Debug|Win32 {73C5A0F0-7629-4DE7-9194-BE7AC6C19535}.Debug|Win32.Build.0 = Debug|Win32 {73C5A0F0-7629-4DE7-9194-BE7AC6C19535}.Debug|x64.ActiveCfg = Debug|x64 + {73C5A0F0-7629-4DE7-9194-BE7AC6C19535}.Debug|x64.Build.0 = Debug|x64 {73C5A0F0-7629-4DE7-9194-BE7AC6C19535}.Release|Win32.ActiveCfg = Release|Win32 {73C5A0F0-7629-4DE7-9194-BE7AC6C19535}.Release|Win32.Build.0 = Release|Win32 {73C5A0F0-7629-4DE7-9194-BE7AC6C19535}.Release|x64.ActiveCfg = Release|x64 + {73C5A0F0-7629-4DE7-9194-BE7AC6C19535}.Release|x64.Build.0 = Release|x64 + {B7F39ECD-473C-484D-BC34-31F8362506A5}.Debug|Win32.ActiveCfg = Debug|Win32 + {B7F39ECD-473C-484D-BC34-31F8362506A5}.Debug|Win32.Build.0 = Debug|Win32 + {B7F39ECD-473C-484D-BC34-31F8362506A5}.Debug|x64.ActiveCfg = Debug|x64 + {B7F39ECD-473C-484D-BC34-31F8362506A5}.Debug|x64.Build.0 = Debug|x64 + {B7F39ECD-473C-484D-BC34-31F8362506A5}.Release|Win32.ActiveCfg = Release|Win32 + {B7F39ECD-473C-484D-BC34-31F8362506A5}.Release|Win32.Build.0 = Release|Win32 + {B7F39ECD-473C-484D-BC34-31F8362506A5}.Release|x64.ActiveCfg = Release|x64 + {B7F39ECD-473C-484D-BC34-31F8362506A5}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Builds/VisualStudio2012/RippleD.props b/Builds/VisualStudio2012/RippleD.props index e3faaffc1eb..6a999d5fdb0 100644 --- a/Builds/VisualStudio2012/RippleD.props +++ b/Builds/VisualStudio2012/RippleD.props @@ -12,7 +12,7 @@ - _CRTDBG_MAP_ALLOC;_VARIADIC_MAX=10;_WIN32_WINNT=0x0600;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) + _VARIADIC_MAX=10;_WIN32_WINNT=0x0600;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) true Level3 $(RepoDir);$(RepoDir)\src\cpp\protobuf\src;$(RepoDir)\src\cpp\protobuf\vsprojects;$(RepoDir)\build\proto;$(RepoDir)\Subtrees;$(RepoDir)\Subtrees\leveldb;$(RepoDir)\Subtrees\leveldb\include;$(RepoDir)\Subtrees\beast;%(AdditionalIncludeDirectories) diff --git a/Builds/VisualStudio2012/RippleD.vcxproj b/Builds/VisualStudio2012/RippleD.vcxproj index 405934b361c..85bbf2d7076 100644 --- a/Builds/VisualStudio2012/RippleD.vcxproj +++ b/Builds/VisualStudio2012/RippleD.vcxproj @@ -18,1564 +18,1291 @@ x64 - - {19465545-42EE-42FA-9CC8-F8975F8F1CC7} - Win32Proj - newcoin - - - - Application - true - MultiByte - v110 - - - Application - true - MultiByte - v110 - - - Application - false - true - MultiByte - v110 - - - Application - false - true - MultiByte - v110 - - - - - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - NotUsing - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - ProgramDatabase - false - MultiThreadedDebug - - - Console - true - %(AdditionalLibraryDirectories) - ssleay32MTd.lib;libeay32MTd.lib;%(AdditionalDependencies) - - - - - - - - - - - - - NotUsing - Disabled - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - ProgramDatabase - false - MultiThreadedDebug - - - Console - true - %(AdditionalLibraryDirectories) - ssleay32MTd.lib;libeay32MTd.lib;%(AdditionalDependencies) - - - - - - - - - - - - - NotUsing - MaxSpeed - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreaded - - - Console - true - true - true - %(AdditionalLibraryDirectories) - ssleay32MT.lib;libeay32MT.lib;%(AdditionalDependencies) - - - - - NotUsing - MaxSpeed - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreaded - - - Console - true - true - true - %(AdditionalLibraryDirectories) - ssleay32MT.lib;libeay32MT.lib;%(AdditionalDependencies) - - - + true true true true - + + + + + + + + + true true true true - + true true true true - + true true true true - + + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - - - Level4 - Level4 - Level4 - Level4 - - + true true true true - + true true true true - - + + true true + true + true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + + true true true true - + true true true true - + true true true true - + + + + true true true true - + true true true true - + + + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - - - - - + true true true true - + true true true true - - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true + true + true - + true true true true - + true true true true - + true true true true - + true true + true + true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true + true + true - + true true + true + true - + true true true true - + true true true true - - + true true true true - + true true true true - + true true true true - - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - + true true + true + true - - true - true - - - true - true - - - true - true - - - true - true - - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - - + + + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - - true - true - - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - + true true true true - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - false - false - false - false - - - + @@ -1585,8 +1312,8 @@ - + @@ -1646,235 +1373,76 @@ - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + - + + + + + + + + @@ -1885,13 +1453,8 @@ - - - - - @@ -1899,8 +1462,6 @@ - - @@ -1922,6 +1483,7 @@ + @@ -1977,40 +1539,177 @@ - - - - - - Document protoc --cpp_out=$(RepoDir)\build\proto -I=$(SrcDir) "$(SrcDir)\%(Filename)%(Extension)" - protoc --cpp_out=$(SrcDir) -I=$(SrcDir) "$(SrcDir)\%(Filename)%(Extension)" $(RepoDir)\build\proto\%(Filename).pb.h;$(RepoDir)\build\proto\%(Filename).pb.cc - $(SrcDir)\%(Filename).pb.h;$(SrcDir)\%(Filename).pb.cc protoc --cpp_out=$(RepoDir)\build\proto -I=$(SrcDir) "$(SrcDir)\%(Filename)%(Extension)" - protoc --cpp_out=$(SrcDir) -I=$(SrcDir) "$(SrcDir)\%(Filename)%(Extension)" $(RepoDir)\build\proto\%(Filename).pb.h;$(RepoDir)\build\proto\%(Filename).pb.cc - $(SrcDir)\%(Filename).pb.h;$(SrcDir)\%(Filename).pb.cc + protoc --cpp_out=$(RepoDir)\build\proto -I=$(SrcDir) "$(SrcDir)\%(Filename)%(Extension)" + $(RepoDir)\build\proto\%(Filename).pb.h;$(RepoDir)\build\proto\%(Filename).pb.cc + protoc --cpp_out=$(RepoDir)\build\proto -I=$(SrcDir) "$(SrcDir)\%(Filename)%(Extension)" + $(RepoDir)\build\proto\%(Filename).pb.h;$(RepoDir)\build\proto\%(Filename).pb.cc - - - - true - true - - - - - - + + + + + + + + {B7F39ECD-473C-484D-BC34-31F8362506A5} + Win32Proj + RippleD + + + + Application + true + v110 + MultiByte + + + Application + true + Intel C++ Compiler XE 13.0 + MultiByte + + + Application + false + v110 + true + MultiByte + + + Application + false + Intel C++ Compiler XE 13.0 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Disabled + _CRTDBG_MAP_ALLOC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ProgramDatabase + false + MultiThreadedDebug + false + true + false + + + Console + true + ssleay32MT.lib;libeay32MT.lib;%(AdditionalDependencies) + + + + + + + Disabled + _CRTDBG_MAP_ALLOC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + false + MultiThreadedDebug + false + true + false + + + Console + true + ssleay32MT.lib;libeay32MT.lib;%(AdditionalDependencies) + + + + + + + MaxSpeed + false + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreaded + true + false + Speed + false + + + Console + true + true + true + ssleay32MT.lib;libeay32MT.lib;%(AdditionalDependencies) + Default + + + + + + + MaxSpeed + false + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreaded + true + false + Speed + false + false + + + Console + true + true + true + ssleay32MT.lib;libeay32MT.lib;%(AdditionalDependencies) + Default + + diff --git a/Builds/VisualStudio2012/RippleD.vcxproj.filters b/Builds/VisualStudio2012/RippleD.vcxproj.filters index cd6206814b3..fd67ab9a463 100644 --- a/Builds/VisualStudio2012/RippleD.vcxproj.filters +++ b/Builds/VisualStudio2012/RippleD.vcxproj.filters @@ -1,1809 +1,1555 @@  - - {475c5b33-c9b5-415f-89df-fb9961f3b57c} + + {ddf42dfe-eaad-4275-8cb7-5c02be627366} - - {290b7b39-a4e6-4b8b-b464-d1e458562fdd} + + {9766e229-8795-43d8-871e-60de90501333} - - {83e0c1a9-5ac4-4c68-ba62-45e24bf60c85} + + {bcc68889-41a4-4090-ac3f-12a3ba1d8961} - - {1e155698-fbdf-4b1a-861f-396ca1690486} + + {f669c93c-60da-4674-a693-9eebcddacb6f} - - {90f03f10-67b3-405b-9395-ca514b3d2554} + + {3debb18d-0f76-4208-accb-f96cb9ce6dab} - - {08051cd0-8c55-4aea-a839-fab10847ae8e} + + {1f093002-9955-4915-a17b-398d55c9fc76} - - {2c99e10c-fd93-4859-ad41-b4878eb7e149} + + {086839ba-d691-4ca8-b2ef-40aee8842957} - - {5aa322df-2bf4-4409-a39a-cb0069eb5e87} + + {ca8e7c6c-0e6d-4915-b7b4-0a0b21f91d16} - - {5249322a-6711-40e8-b1fb-12873aa39495} + + {e0dd916d-72b2-46cd-840a-fb5e924a470a} - - {50c3843c-4a67-4cc2-a1d9-c45692849b48} + + {0d065d55-0a7b-480b-beee-67dad6ee6684} - - {f57e4d02-7a69-4861-9f4b-160f13695e54} + + {df861e00-baa6-43d4-bbbf-df61d66ee414} - - {27858e65-9580-4a67-b0c5-054e970516af} + + {487f6b35-d0a3-4b34-85c1-94e2aad4c9ff} - - {a152ed99-bd05-4c37-8ae7-82888b1bb469} + + {e119423b-04d2-4ce8-9794-1c2abd6a9cb5} - - {84e43f43-816e-4ccd-80c2-38b322904894} + + {6ad1f6a2-1710-43ac-96d4-f6b54fd8379e} - - {96cbc9ff-0118-4844-bb4c-05aef58a60b5} + + {f238bebe-dfcc-48f3-9d89-9c5c7c72ebed} - - {9f33883e-d53d-469f-ab51-653ac3e8780b} + + {2bf8c9ef-13f7-477a-8a78-2a52a26bb4f8} - - {670d727d-6c99-4893-b0bb-e620975e8b8d} + + {1b631697-2450-473a-9eb6-cc6cfaf66668} - - {e398b116-a7fa-4850-8b8e-6de95efdea4e} + + {42324d78-07a6-4782-b938-3f620904addf} - - {c30623e7-e0ab-4a8e-a213-aeaceb4327e2} + + {c817e7d7-36d7-410e-ad16-f51c5eb024af} - - {0d38ac4f-f094-4b17-9f4c-ac4011ea3bca} + + {c8fec1f5-496a-4a1e-bc8e-8096163c7766} - - {8d0241d2-071c-4d6c-a15e-980cc51b26ce} + + {548037f2-eb8a-41bd-95dc-05f58cdbc041} - - {095d33d8-dbf7-44d0-a675-6722b02bb3be} + + {514a3062-9305-4285-8007-3ebb955eaab3} - - {2f3572a9-2882-4656-ab93-82b7761c9e3d} + + {3af7c606-c5b5-4d1f-951b-d5d99997818f} - - {ba524810-8446-4c50-ad59-d284747ba220} + + {a837f3ce-75b7-4e6c-b8b1-728b6a1216bd} - - {82b7f371-8bc6-474b-b10c-18c004467b46} + + {9d43b540-fdec-484d-a8bd-0dc65d3b0c55} - - {786657f9-b1b3-483c-a8e6-863cc2e02eb8} + + {99ac4d07-04a7-4ce3-96c7-b8ea578f1a61} - - {97c96b68-70fd-4679-89fc-c1c8c87c265e} + + {6967f835-a1b0-47e3-9bd9-6fc8bd0f3df7} - - {1a379c07-ccf1-4636-8018-2cfc0685edf0} + + {fe2722a9-6550-4098-91eb-1575f7419a42} - - {90f3b8c4-01a1-41f1-969b-39ec650c00cd} + + {e1f02660-3d99-4ef3-b79a-2a8da16e2ec7} - - {9d37d3a1-e8ac-49c5-845b-702a191f28e0} + + {5280f25b-a657-45f7-a0e6-822891d0f20f} - - {9cd9dfb0-daa3-474e-b1c7-b048f5b85e71} + + {8710b403-2cfa-4991-b8b4-8214d1947528} - - {6bbe236f-79ff-4e30-928c-bf5f302b3a21} + + {223ac5ce-c9a0-4196-9b75-4f5fbe8bfa00} - - {82d79c26-4932-4a48-b134-09969f45d75a} + + {82a6d3f3-fa01-4cc6-9730-f928e61b9929} - - {ce56fa36-0012-44ab-a6dd-da0391f32ba3} + + {46bda3c0-166b-4188-8f6b-da6f6ff638fc} - - {f7a586fa-b21a-4c7b-b87e-5ac62f2758e4} + + {01ac5649-14bd-4c61-ac6b-169742a86036} - - {3739c942-adc7-4691-b67c-8ab83e2c6f3d} + + {85ea08c2-f8a6-477b-8d59-9a7339761d20} - - {2c4e5c32-0aab-4650-b9a1-22708e9ddc92} + + {cf19fa31-c40b-4203-b497-63a8c3dcb282} - - {8b88138b-e5bd-492b-bd34-012b9f43e544} + + {7c14e9df-6d8d-4ba3-b208-f89c1d0b6b30} - - {c7f863ce-204b-4a15-b236-24fe1e3430e5} + + {66d2d40a-72bd-41f5-9cf9-1f464a40bb04} - - {857187f0-ff25-4ebe-af30-544b7b7f503a} + + {ec6b9e0e-4a92-4c06-833d-441d51b0b163} - - {bb14df5d-f96f-4572-9e79-5e330eed30c9} + + {d46790be-df64-4e31-b51c-ac9e95a24747} - - {2efd3803-4818-457d-bdb5-2ed08c1b44af} + + {7b3efe80-291a-49bc-b32e-085b5af47f98} - - {78b0aa30-f238-4e41-821f-ce84dde82ceb} + + {29393027-f1ed-4700-bbd1-c880091ab96b} - - {90a5527e-0de0-4d5f-a731-b6b196a013b5} - - - {3f351c55-360d-40bc-a136-4944ce572efd} - - - {5b22fcf9-c9f0-4260-9a17-7b448e30bb57} - - - {babbb25a-e143-4140-bc6f-16b659d8098b} - - - {a99a2905-0d36-40c0-84f5-06db41e48367} - - - {6097a179-ddad-4c69-9a34-2e3fc2c9fa1d} - - - {9c76b354-fcca-412c-8b5b-cae084a1d91a} + + {e54bae0e-09f1-483e-bcf7-fb6b17b8d561} - - 0. Third Party Code\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\io - - - 0. Third Party Code\protobuf\io - - - 0. Third Party Code\protobuf\io + + [0] Subtrees\sqlite - - 0. Third Party Code\protobuf\io + + [0] Subtrees\beast - - 0. Third Party Code\protobuf\io + + [0] Subtrees\beast - - 0. Third Party Code\protobuf\io + + [0] Subtrees\protobuf - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_app - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_app - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_app - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_app - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_app - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\containers - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\containers - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\containers - - 1. Modules\ripple_app\contracts + + [1] Ripple\ripple_basics\types - - 1. Modules\ripple_app\contracts + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_basics + + [1] Ripple\ripple_basics\utility - - 2. %28Unused%29\ripple_client + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_app\contracts + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_app\contracts + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_json\json + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_json\json + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_json\json + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_json + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_basics\containers + + [1] Ripple\ripple_basics\utility - 1. Modules\ripple_basics\utility + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_basics - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_data + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_data\crypto + + [1] Ripple\ripple_core - 1. Modules\ripple_data\crypto + [1] Ripple\ripple_data\crypto - 1. Modules\ripple_data\crypto + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_data\crypto + + [1] Ripple\ripple_data\crypto - 1. Modules\ripple_data\crypto - - - 1. Modules\ripple_data\crypto - - - 1. Modules\ripple_app\network - - - 1. Modules\ripple_app\network - - - 1. Modules\ripple_app\network - - - 1. Modules\ripple_app\network + [1] Ripple\ripple_data\crypto - 1. Modules\ripple_data\crypto - - - 1. Modules\ripple_app\network - - - 1. Modules\ripple_app\network - - - 1. Modules\ripple_app\rpc - - - 1. Modules\ripple_app\rpc - - - 1. Modules\ripple_app\rpc - - - 1. Modules\ripple_app\rpc + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_data\crypto - 1. Modules\ripple_data\protocol + [1] Ripple\ripple_data\protocol - 1. Modules\ripple_data\protocol + [1] Ripple\ripple_data\protocol + + + [1] Ripple\ripple_data\protocol - 1. Modules\ripple_data\protocol + [1] Ripple\ripple_data\protocol + + + [1] Ripple\ripple_data\protocol - 1. Modules\ripple_data\protocol + [1] Ripple\ripple_data\protocol + + + [1] Ripple\ripple_data\protocol + + + [1] Ripple\ripple_data\protocol - 1. Modules\ripple_data\protocol + [1] Ripple\ripple_data\protocol - 1. Modules\ripple_data\protocol + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_data\protocol - 1. Modules\ripple_data\protocol + [1] Ripple\ripple_data\protocol - 1. Modules\ripple_data\protocol - - - 1. Modules\ripple_basics\types - - - 1. Modules\ripple_data\protocol - - - 1. Modules\ripple_data\protocol + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\shamap - - - 1. Modules\ripple_app\shamap - - - 1. Modules\ripple_app\shamap - - - 1. Modules\ripple_app\shamap - - - 1. Modules\ripple_app\shamap - - - 1. Modules\ripple_app\shamap - - - 1. Modules\ripple_app\shamap - - - 1. Modules\ripple_app\shamap - - - 1. Modules\ripple_basics\containers + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_data - - 1. Modules\ripple_app\transactions + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_app\consensus + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_app\consensus + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_app\pathing + + [1] Ripple\ripple_json - - 1. Modules\ripple_app\pathing + + [1] Ripple\ripple_leveldb - - 1. Modules\ripple_app\pathing + + [1] Ripple\ripple_sqlite - - 1. Modules\ripple_app\pathing + + [1] Ripple\ripple_websocket\autosocket - - 1. Modules\ripple_app\pathing + + [1] Ripple\ripple_websocket\autosocket - - 1. Modules\ripple_app\pathing + + [1] Ripple\ripple_websocket - - 1. Modules\ripple_data\protocol + + [0] Subtrees\websocket - - 1. Modules\ripple_app\ledger + + [0] Subtrees\websocket - - 1. Modules\ripple_app\ledger + + [0] Subtrees\websocket - - 1. Modules\ripple_app\ledger + + [0] Subtrees\websocket - - 1. Modules\ripple_app\ledger + + [0] Subtrees\websocket - - 1. Modules\ripple_app + + [0] Subtrees\websocket - - 1. Modules\ripple_app + + [0] Subtrees\websocket - - 1. Modules\ripple_app + + [0] Subtrees\websocket - - 1. Modules\ripple_app + + [0] Subtrees\websocket - - 1. Modules\ripple_app + + [0] Subtrees\websocket - - 1. Modules\ripple_basics\utility + + [0] Subtrees\websocket - - 0. Third Party Code\beast + + [0] Subtrees\websocket - - 0. Third Party Code\beast + + [0] Subtrees\websocket - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db - - - 0. Third Party Code\LevelDB\port - - - 0. Third Party Code\LevelDB\port - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\util - - - 0. Third Party Code\LevelDB\util - - - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\util - - 1. Modules\ripple_websocket + + [0] Subtrees\leveldb\util - - 1. Modules\ripple_websocket\autosocket + + [0] Subtrees\leveldb\util - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\util - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\table - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\port - - 1. Modules\ripple_websocket\subtree + + [0] Subtrees\leveldb\port - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_client - - 1. Modules\ripple_app\data + + [1] Ripple\ripple_app\_contracts + + + [1] Ripple\ripple_app\_contracts + + + [1] Ripple\ripple_app\_contracts + + + [1] Ripple\ripple_app\_contracts + + + [1] Ripple\ripple_app\_consensus + + + [1] Ripple\ripple_app\_consensus - 1. Modules\ripple_app\data + [1] Ripple\ripple_app\_data + + + [1] Ripple\ripple_app\_data + + + [1] Ripple\ripple_app\_data + + + [1] Ripple\ripple_app\_data + + + [1] Ripple\ripple_app\_data - 1. Modules\ripple_app\data + [1] Ripple\ripple_app\_data - - 1. Modules\ripple_sqlite + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_leveldb + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_core + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\autosocket + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_ledger - - 0. Third Party Code\sqlite + + [1] Ripple\ripple_app\_ledger + + + [1] Ripple\ripple_app\_ledger + + + [1] Ripple\ripple_app\_main + + + [1] Ripple\ripple_app\_main + + + [1] Ripple\ripple_app\_main + + + [1] Ripple\ripple_app\_main + + + [1] Ripple\ripple_app\_main - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc - - - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc + + + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc + + + [1] Ripple\ripple_app\_misc - 1. Modules\ripple_app\misc + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_app\shamap + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_app\shamap + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_basics\containers + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_data\crypto + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\data + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\main + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\main + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_rpc + + + [1] Ripple\ripple_app\_rpc + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap + + + [1] Ripple\ripple_app\_shamap - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions + + + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions - - - 1. Modules\ripple_app\peers - - - 1. Modules\ripple_app\peers - - - 1. Modules\ripple_app\peers - - - 1. Modules\ripple_app\data - - - 1. Modules\ripple_app\data + [1] Ripple\ripple_app\_transactions - - 1. Modules\ripple_app\main + + [1] Ripple\ripple_app - - 1. Modules\ripple_app\main + + [1] Ripple\ripple_app - - 1. Modules\ripple_app\main + + [1] Ripple\ripple_app - - 1. Modules\ripple_app\peers + + [1] Ripple\ripple_app - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf - - - 0. Third Party Code\protobuf\protobuf + + [0] Subtrees\sqlite - - 0. Third Party Code\protobuf\protobuf + + [0] Subtrees\sqlite - - 0. Third Party Code\protobuf\protobuf + + + [1] Ripple\ripple_app - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\containers - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\containers - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\containers - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\containers - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\system - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\system - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\system - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\types - - 0. Third Party Code\protobuf\io + + [1] Ripple\ripple_basics\types - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\types - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 0. Third Party Code\protobuf\stubs + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_app\contracts + + [1] Ripple\ripple_basics\utility - - 1. Modules\ripple_app\contracts + + [1] Ripple\ripple_basics\utility - 1. Modules\ripple_basics - - - 2. %28Unused%29\ripple_client - - - 1. Modules\ripple_app\contracts - - - 1. Modules\ripple_app\contracts - - - 1. Modules\ripple_basics\containers - - - 1. Modules\ripple_json\json - - - 1. Modules\ripple_json\json - - - 1. Modules\ripple_json\json - - - 1. Modules\ripple_json\json - - - 1. Modules\ripple_json\json - - - 1. Modules\ripple_json\json - - - 1. Modules\ripple_json\json\DEPRECATED - - - 1. Modules\ripple_json + [1] Ripple\ripple_basics - - 1. Modules\ripple_json\json - - - 1. Modules\ripple_basics\containers - - - 1. Modules\ripple_basics\containers - - - 1. Modules\ripple_basics\containers - - - 1. Modules\ripple_basics\utility - - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core\functional - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_core - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_basics\types + + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_data + + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_data\crypto + + [1] Ripple\ripple_data\crypto - - 1. Modules\ripple_data\crypto + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_data\crypto + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_data\crypto + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_data\crypto + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\network + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_data\protocol - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_data\utility - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_data - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_app\rpc + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_json\json - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_json - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_leveldb - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_sqlite - - 1. Modules\ripple_data\protocol + + [1] Ripple\ripple_websocket\autosocket - - 1. Modules\ripple_basics\types + + [1] Ripple\ripple_websocket - - 1. Modules\ripple_data\protocol + + [0] Subtrees\websocket - - 1. Modules\ripple_data\protocol + + [0] Subtrees\websocket - - 1. Modules\ripple_basics\types + + [0] Subtrees\websocket - - 1. Modules\ripple_data\utility + + [0] Subtrees\websocket - - 1. Modules\ripple_app\shamap + + [0] Subtrees\websocket - - 1. Modules\ripple_app\shamap + + [0] Subtrees\websocket - - 1. Modules\ripple_app\shamap + + [0] Subtrees\websocket - - 1. Modules\ripple_app\shamap + + [0] Subtrees\websocket - - 1. Modules\ripple_app\shamap + + [0] Subtrees\websocket - - 1. Modules\ripple_app\shamap + + [0] Subtrees\websocket - - 1. Modules\ripple_app\shamap + + [0] Subtrees\websocket - - 1. Modules\ripple_app\shamap + + [0] Subtrees\websocket - - 1. Modules\ripple_data\utility + + [0] Subtrees\websocket - - 1. Modules\ripple_app\transactions + + [0] Subtrees\websocket - - 1. Modules\ripple_app\consensus + + [0] Subtrees\websocket - - 1. Modules\ripple_app\consensus + + [0] Subtrees\websocket - - 1. Modules\ripple_app\pathing + + [0] Subtrees\websocket - - 1. Modules\ripple_app\pathing + + [0] Subtrees\websocket - - 1. Modules\ripple_app\pathing + + [0] Subtrees\websocket - - 1. Modules\ripple_app\pathing + + [0] Subtrees\websocket - - 1. Modules\ripple_app\pathing + + [0] Subtrees\websocket - - 1. Modules\ripple_app\pathing + + [0] Subtrees\websocket - - 1. Modules\ripple_data\protocol + + [0] Subtrees\websocket - - 1. Modules\ripple_data\protocol + + [0] Subtrees\websocket - - 1. Modules\ripple_data\protocol + + [0] Subtrees\websocket - - 1. Modules\ripple_data\protocol + + [0] Subtrees\websocket - - 1. Modules\ripple_app\ledger + + [0] Subtrees\websocket - - 1. Modules\ripple_app\ledger + + [0] Subtrees\websocket - - 1. Modules\ripple_app\ledger + + [0] Subtrees\websocket - - 1. Modules\ripple_app\ledger + + [0] Subtrees\websocket - - - 1. Modules\ripple_app + + [0] Subtrees\websocket - - 1. Modules\ripple_basics\utility + + [0] Subtrees\leveldb\db - - 1. Modules\ripple_data\protocol + + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - 0. Third Party Code\LevelDB\db + [0] Subtrees\leveldb\db - - 0. Third Party Code\LevelDB\db + + [0] Subtrees\leveldb\util - - 0. Third Party Code\LevelDB\db + + [0] Subtrees\leveldb\util - - 0. Third Party Code\LevelDB\port\win + + [0] Subtrees\leveldb\util - - 0. Third Party Code\LevelDB\port + + [0] Subtrees\leveldb\util - - 0. Third Party Code\LevelDB\port + + [0] Subtrees\leveldb\util - - 0. Third Party Code\LevelDB\port + + [0] Subtrees\leveldb\util - - 0. Third Party Code\LevelDB\port + + [0] Subtrees\leveldb\util - - 0. Third Party Code\LevelDB\port + + [0] Subtrees\leveldb\util + + + [0] Subtrees\leveldb\util - 0. Third Party Code\LevelDB\table + [0] Subtrees\leveldb\table - 0. Third Party Code\LevelDB\table + [0] Subtrees\leveldb\table - 0. Third Party Code\LevelDB\table + [0] Subtrees\leveldb\table - 0. Third Party Code\LevelDB\table + [0] Subtrees\leveldb\table - 0. Third Party Code\LevelDB\table + [0] Subtrees\leveldb\table - 0. Third Party Code\LevelDB\table + [0] Subtrees\leveldb\table - 0. Third Party Code\LevelDB\table - - - 0. Third Party Code\LevelDB\util - - - 0. Third Party Code\LevelDB\util - - - 0. Third Party Code\LevelDB\util - - - 0. Third Party Code\LevelDB\util + [0] Subtrees\leveldb\table - - 0. Third Party Code\LevelDB\util + + [0] Subtrees\leveldb\port\win - - 0. Third Party Code\LevelDB\util + + [0] Subtrees\leveldb\port - - 0. Third Party Code\LevelDB\util + + [0] Subtrees\leveldb\port - - 0. Third Party Code\LevelDB\util + + [0] Subtrees\leveldb\port - - 0. Third Party Code\LevelDB\util + + [0] Subtrees\leveldb\port - - 1. Modules\ripple_websocket + + [0] Subtrees\leveldb\port - - 1. Modules\ripple_websocket\autosocket + + [0] Subtrees\leveldb\port - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_client - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_contracts - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_contracts - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_contracts - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_contracts - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_consensus - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_consensus - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_data - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_data - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_data - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_data - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_data - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_ledger - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_main - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_main - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_main - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_websocket\subtree + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_app\data + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_app\data + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_sqlite + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_leveldb + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_core + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_basics\utility + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_misc - - 0. Third Party Code\sqlite + + [1] Ripple\ripple_app\_network - - 0. Third Party Code\sqlite + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_network - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_peers - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_misc - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_pathing - - 1. Modules\ripple_app\misc + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_core\functional + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_basics\system + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_basics\system + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_basics\system + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_app\version + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_rpc - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_shamap - - 1. Modules\ripple_app\version + + [1] Ripple\ripple_app\_shamap - - 1. Modules\ripple_app\data + + [1] Ripple\ripple_app\_shamap - - 1. Modules\ripple_app\main + + [1] Ripple\ripple_app\_shamap - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_shamap - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_shamap - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_shamap - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\_shamap - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\basics - - 1. Modules\ripple_app\ledger + + [1] Ripple\ripple_app\basics - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions + + + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions + [1] Ripple\ripple_app\_transactions - 1. Modules\ripple_app\transactions - - - 1. Modules\ripple_app\peers - - - 1. Modules\ripple_app\peers - - - 1. Modules\ripple_app\peers - - - 1. Modules\ripple_app\peers - - - 1. Modules\ripple_app\data - - - 1. Modules\ripple_app\data - - - 1. Modules\ripple_app\main - - - 1. Modules\ripple_app\main + [1] Ripple\ripple_app\_transactions - - 1. Modules\ripple_app\peers + + [1] Ripple\ripple_app\_main - - 0. Third Party Code\protobuf\protobuf - + + + - 1. Modules\ripple_json\json + [1] Ripple\ripple_json\json - 1. Modules\ripple_json\json + [1] Ripple\ripple_json\json - 1. Modules\ripple_json\json + [1] Ripple\ripple_json\json + - - - - - - diff --git a/RippleD.props b/RippleD.props deleted file mode 100644 index 7466630c5c4..00000000000 --- a/RippleD.props +++ /dev/null @@ -1,34 +0,0 @@ - - - - - . - $(RepoDir)\src\cpp\ripple - - - $(SolutionDir)build\VisualStudio2012\$(Configuration).$(Platform)\ - $(SolutionDir)build\obj\VisualStudio2012\$(Configuration).$(Platform)\ - rippled - - - - USE_LEVELDB;BOOST_TEST_ALTERNATIVE_INIT_API;BOOST_TEST_NO_MAIN;_WIN32_WINNT=0x0600;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions) - true - Level3 - $(RepoDir);$(RepoDir)\src\cpp\leveldb;$(RepoDir)\src\cpp\leveldb\include;$(RepoDir)\src\cpp\protobuf\src;$(RepoDir)\src\cpp\protobuf\vsprojects;$(RepoDir)\build\proto;$(RepoDir)\Subtrees\beast;%(AdditionalIncludeDirectories) - /bigobj %(AdditionalOptions) - Async - - - Shlwapi.lib;%(AdditionalDependencies) - - - - - $(RepoDir) - - - $(SrcDir) - - - \ No newline at end of file diff --git a/SConstruct b/SConstruct index 025aa6f4aed..ce9fb2d7bee 100644 --- a/SConstruct +++ b/SConstruct @@ -131,7 +131,11 @@ COMPILED_FILES = [ 'modules/ripple_app/ripple_app_pt1.cpp', 'modules/ripple_app/ripple_app_pt2.cpp', 'modules/ripple_app/ripple_app_pt3.cpp', - 'modules/ripple_app/ripple_app_pt4.cpp' + 'modules/ripple_app/ripple_app_pt4.cpp', + 'modules/ripple_app/ripple_app_pt5.cpp', + 'modules/ripple_app/ripple_app_pt6.cpp', + 'modules/ripple_app/ripple_app_pt7.cpp', + 'modules/ripple_app/ripple_app_pt8.cpp' ] #------------------------------------------------------------------------------- diff --git a/Subtrees/beast/modules/beast_core/containers/beast_Array.h b/Subtrees/beast/modules/beast_core/containers/beast_Array.h index 9e8e13e7f3b..c3f5a0c7e1f 100644 --- a/Subtrees/beast/modules/beast_core/containers/beast_Array.h +++ b/Subtrees/beast/modules/beast_core/containers/beast_Array.h @@ -723,6 +723,7 @@ class Array if (isPositiveAndBelow (indexToRemove, numUsed)) { + bassert (data.elements != nullptr); ElementType removed (data.elements[indexToRemove]); removeInternal (indexToRemove); return removed; diff --git a/Subtrees/beast/modules/beast_core/containers/beast_OwnedArray.h b/Subtrees/beast/modules/beast_core/containers/beast_OwnedArray.h index 9ad612b8611..04a62fc03e1 100644 --- a/Subtrees/beast/modules/beast_core/containers/beast_OwnedArray.h +++ b/Subtrees/beast/modules/beast_core/containers/beast_OwnedArray.h @@ -24,11 +24,6 @@ #ifndef BEAST_OWNEDARRAY_BEASTHEADER #define BEAST_OWNEDARRAY_BEASTHEADER -#include "beast_ArrayAllocationBase.h" -#include "beast_ElementComparator.h" -#include "../threads/beast_CriticalSection.h" - - //============================================================================== /** An array designed for holding objects. @@ -51,7 +46,9 @@ template -class OwnedArray : LeakChecked >, Uncopyable +class OwnedArray + : LeakChecked > + , Uncopyable { public: //============================================================================== @@ -242,23 +239,15 @@ class OwnedArray : LeakChecked (newObject); - return *newObject; - } - - ObjectClass& add (ObjectClass* const newObject) noexcept - { - add (const_cast (newObject)); - return *newObject; + return const_cast (newObject); } /** Inserts a new object into the array at the given index. @@ -276,12 +265,10 @@ class OwnedArray : LeakChecked = 0) { @@ -306,15 +293,6 @@ class OwnedArray : LeakChecked (newObject)); - return *newObject; } /** Inserts an array of values into this array at a given position. @@ -363,22 +341,13 @@ class OwnedArray : LeakChecked (newObject)); - return *newObject; } /** Replaces an object in the array with a different one. @@ -392,13 +361,11 @@ class OwnedArray : LeakChecked = 0) { @@ -435,16 +402,6 @@ class OwnedArray : LeakChecked (newObject), deleteOldElement); - return *newObject; } /** Adds elements from another array to the end of this array. @@ -515,7 +472,7 @@ class OwnedArray : LeakChecked = 0) { @@ -909,4 +866,5 @@ class OwnedArray : LeakChecked incReferenceCount(); + + return newObject; } /** Inserts a new object into the array at the given index. @@ -312,8 +314,8 @@ class ReferenceCountedArray @param newObject the new object to add to the array @see add, addSorted, addIfNotAlreadyThere, set */ - void insert (int indexToInsertAt, - ObjectClass* const newObject) noexcept + ObjectClass* insert (int indexToInsertAt, + ObjectClass* const newObject) noexcept { if (indexToInsertAt >= 0) { @@ -337,10 +339,12 @@ class ReferenceCountedArray newObject->incReferenceCount(); ++numUsed; + + return newObject; } else { - add (newObject); + return add (newObject); } } @@ -847,11 +851,11 @@ class ReferenceCountedArray /** Returns the type of scoped lock to use for locking this array */ typedef typename TypeOfCriticalSectionToUse::ScopedLockType ScopedLockType; - private: //============================================================================== ArrayAllocationBase data; int numUsed; }; -#endif // BEAST_REFERENCECOUNTEDARRAY_BEASTHEADER + +#endif \ No newline at end of file diff --git a/Subtrees/beast/modules/beast_core/maths/beast_MathsFunctions.h b/Subtrees/beast/modules/beast_core/maths/beast_MathsFunctions.h index 29168654d26..f4b7e288b40 100644 --- a/Subtrees/beast/modules/beast_core/maths/beast_MathsFunctions.h +++ b/Subtrees/beast/modules/beast_core/maths/beast_MathsFunctions.h @@ -199,7 +199,7 @@ void findMinAndMax (const Type* values, int numValues, Type& lowest, Type& highe @param valueToConstrain the value to try to return @returns the closest value to valueToConstrain which lies between lowerLimit and upperLimit (inclusive) - @see jlimit0To, bmin, bmax + @see blimit0To, bmin, bmax */ template inline Type blimit (const Type lowerLimit, diff --git a/Subtrees/beast/modules/beast_core/memory/beast_Atomic.h b/Subtrees/beast/modules/beast_core/memory/beast_Atomic.h index 83d43994b27..74ba13c1354 100644 --- a/Subtrees/beast/modules/beast_core/memory/beast_Atomic.h +++ b/Subtrees/beast/modules/beast_core/memory/beast_Atomic.h @@ -148,10 +148,14 @@ class Atomic volatile Type value; private: - static inline Type castFrom32Bit (int32 value) noexcept { return *(Type*) &value; } - static inline Type castFrom64Bit (int64 value) noexcept { return *(Type*) &value; } - static inline int32 castTo32Bit (Type value) noexcept { return *(int32*) &value; } - static inline int64 castTo64Bit (Type value) noexcept { return *(int64*) &value; } + template + static inline Dest castTo (Source value) noexcept { union { Dest d; Source s; } u; u.s = value; return u.d; } + + static inline Type castFrom32Bit (int32 value) noexcept { return castTo (value); } + static inline Type castFrom64Bit (int64 value) noexcept { return castTo (value); } + static inline int32 castTo32Bit (Type value) noexcept { return castTo (value); } + static inline int64 castTo64Bit (Type value) noexcept { return castTo (value); } + Type operator++ (int); // better to just use pre-increment with atomics.. Type operator-- (int); diff --git a/Subtrees/beast/modules/beast_core/memory/beast_SharedSingleton.h b/Subtrees/beast/modules/beast_core/memory/beast_SharedSingleton.h index ac96ae3bf0f..fbf1fe7f2e9 100644 --- a/Subtrees/beast/modules/beast_core/memory/beast_SharedSingleton.h +++ b/Subtrees/beast/modules/beast_core/memory/beast_SharedSingleton.h @@ -59,7 +59,13 @@ class BEAST_API SingletonLifetime /** The singleton is created on first use and persists until program exit. */ - persistAfterCreation + persistAfterCreation, + + /** The singleton is created when needed and never destroyed. + + This is useful for applications which do not have a clean exit. + */ + neverDestroyed }; }; @@ -82,7 +88,8 @@ class SharedSingleton { bassert (s_instance == nullptr); - if (m_lifetime == persistAfterCreation) + if (m_lifetime == persistAfterCreation || + m_lifetime == neverDestroyed) { incReferenceCount (); } @@ -155,6 +162,9 @@ class SharedSingleton { bool destroy; + // Handle the condition where one thread is releasing the last + // reference just as another thread is trying to acquire it. + // { LockType::ScopedLockType lock (*s_mutex); @@ -171,6 +181,8 @@ class SharedSingleton if (destroy) { + bassert (m_lifetime != neverDestroyed); + delete this; } } diff --git a/Subtrees/beast/modules/beast_core/native/beast_bsd_Files.cpp b/Subtrees/beast/modules/beast_core/native/beast_bsd_Files.cpp index e29f551dcaa..ec8bccdb644 100644 --- a/Subtrees/beast/modules/beast_core/native/beast_bsd_Files.cpp +++ b/Subtrees/beast/modules/beast_core/native/beast_bsd_Files.cpp @@ -23,10 +23,10 @@ enum { - U_ISOFS_SUPER_MAGIC = 0x9660, // linux/iso_fs.h - U_MSDOS_SUPER_MAGIC = 0x4d44, // linux/msdos_fs.h - U_NFS_SUPER_MAGIC = 0x6969, // linux/nfs_fs.h - U_SMB_SUPER_MAGIC = 0x517B // linux/smb_fs.h + U_ISOFS_SUPER_MAGIC = 5, + U_MSDOS_SUPER_MAGIC = 2, + U_NFS_SUPER_MAGIC = 1, + U_SMB_SUPER_MAGIC = 8 }; //============================================================================== @@ -94,7 +94,7 @@ bool File::isOnHardDisk() const bool File::isOnRemovableDrive() const { - bassertfalse; // xxx not implemented for linux! + bassertfalse; // XXX not implemented for FreeBSD! return false; } @@ -336,8 +336,8 @@ bool Process::openDocument (const String& fileName, const String& parameters) || ! isFileExecutable (fileName)) { // create a command that tries to launch a bunch of likely browsers - const char* const browserNames[] = { "xdg-open", "/etc/alternatives/x-www-browser", "firefox", "mozilla", - "google-chrome", "chromium-browser", "opera", "konqueror" }; + const char* const browserNames[] = { "xdg-open", "firefox", "seamonkey", + "chrome", "opera", "konqueror" }; StringArray cmdLines; for (int i = 0; i < numElementsInArray (browserNames); ++i) diff --git a/Subtrees/beast/modules/beast_core/native/beast_bsd_Threads.cpp b/Subtrees/beast/modules/beast_core/native/beast_bsd_Threads.cpp index 5ce0db5553b..1255f375ef3 100644 --- a/Subtrees/beast/modules/beast_core/native/beast_bsd_Threads.cpp +++ b/Subtrees/beast/modules/beast_core/native/beast_bsd_Threads.cpp @@ -54,20 +54,9 @@ void Process::terminate() BEAST_API bool BEAST_CALLTYPE beast_isRunningUnderDebugger() { - static char testResult = 0; - - if (testResult == 0) - { - testResult = (char) ptrace (PT_TRACE_ME, 0, 0, 0); - - if (testResult >= 0) - { - ptrace (PT_DETACH, 0, (caddr_t) 1, 0); - testResult = 1; - } - } - - return testResult < 0; + // XXX not implemented for FreeBSD! + bassertfalse; + return false; } BEAST_API bool BEAST_CALLTYPE Process::isRunningUnderDebugger() diff --git a/Subtrees/beast/modules/beast_core/native/beast_linux_SystemStats.cpp b/Subtrees/beast/modules/beast_core/native/beast_linux_SystemStats.cpp index 3764f477c46..57ebaaf1c5e 100644 --- a/Subtrees/beast/modules/beast_core/native/beast_linux_SystemStats.cpp +++ b/Subtrees/beast/modules/beast_core/native/beast_linux_SystemStats.cpp @@ -78,7 +78,7 @@ int SystemStats::getMemorySizeInMegabytes() struct sysinfo sysi; if (sysinfo (&sysi) == 0) - return (sysi.totalram * sysi.mem_unit / (1024 * 1024)); + return sysi.totalram * sysi.mem_unit / (1024 * 1024); return 0; } @@ -94,11 +94,8 @@ String SystemStats::getLogonName() const char* user = getenv ("USER"); if (user == nullptr) - { - struct passwd* const pw = getpwuid (getuid()); - if (pw != nullptr) + if (passwd* const pw = getpwuid (getuid())) user = pw->pw_name; - } return CharPointer_UTF8 (user); } @@ -117,11 +114,12 @@ String SystemStats::getComputerName() return String::empty; } -String getLocaleValue (nl_item key) +static String getLocaleValue (nl_item key) { const char* oldLocale = ::setlocale (LC_ALL, ""); - return String (const_cast (nl_langinfo (key))); + String result (String::fromUTF8 (nl_langinfo (key))); ::setlocale (LC_ALL, oldLocale); + return result; } String SystemStats::getUserLanguage() { return getLocaleValue (_NL_IDENTIFICATION_LANGUAGE); } @@ -141,7 +139,7 @@ SystemStats::CPUFlags::CPUFlags() } //============================================================================== -uint32 beast_millisecondsSinceStartup() noexcept +uint32 BEAST_millisecondsSinceStartup() noexcept { timespec t; clock_gettime (CLOCK_MONOTONIC, &t); diff --git a/Subtrees/beast/modules/beast_core/text/beast_String.cpp b/Subtrees/beast/modules/beast_core/text/beast_String.cpp index 042c0579307..8bd0c531793 100644 --- a/Subtrees/beast/modules/beast_core/text/beast_String.cpp +++ b/Subtrees/beast/modules/beast_core/text/beast_String.cpp @@ -1200,8 +1200,8 @@ class StringCreationHelper dest = result.getCharPointer(); } - StringCreationHelper (const String::CharPointerType& source_) - : source (source_), dest (nullptr), allocatedBytes (StringHolder::getAllocatedNumBytes (source)), bytesWritten (0) + StringCreationHelper (const String::CharPointerType s) + : source (s), dest (nullptr), allocatedBytes (StringHolder::getAllocatedNumBytes (s)), bytesWritten (0) { result.preallocateBytes (allocatedBytes); dest = result.getCharPointer(); @@ -1531,7 +1531,8 @@ String String::quoted (const beast_wchar quoteCharacter) const } //============================================================================== -static String::CharPointerType findTrimmedEnd (const String::CharPointerType& start, String::CharPointerType end) +static String::CharPointerType findTrimmedEnd (const String::CharPointerType start, + String::CharPointerType end) { while (end > start) { diff --git a/Subtrees/beast/modules/beast_core/text/beast_TextDiff.cpp b/Subtrees/beast/modules/beast_core/text/beast_TextDiff.cpp index 5739da32ea4..18645157d6b 100644 --- a/Subtrees/beast/modules/beast_core/text/beast_TextDiff.cpp +++ b/Subtrees/beast/modules/beast_core/text/beast_TextDiff.cpp @@ -30,14 +30,14 @@ struct TextDiffHelpers StringRegion (const String& s) noexcept : text (s.getCharPointer()), start (0), length (s.length()) {} - StringRegion (const String::CharPointerType& t, int s, int len) noexcept + StringRegion (const String::CharPointerType t, int s, int len) noexcept : text (t), start (s), length (len) {} String::CharPointerType text; int start, length; }; - static void addInsertion (TextDiff& td, const String::CharPointerType& text, int index, int length) + static void addInsertion (TextDiff& td, const String::CharPointerType text, int index, int length) { TextDiff::Change c; c.insertedText = String (text, (size_t) length); @@ -99,7 +99,7 @@ struct TextDiffHelpers } static int findLongestCommonSubstring (String::CharPointerType a, const int lenA, - const String::CharPointerType& b, const int lenB, + const String::CharPointerType b, const int lenB, int& indexInA, int& indexInB) { if (lenA == 0 || lenB == 0) diff --git a/TODO.txt b/TODO.txt index a2b044da461..8d772e67e1e 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,7 +1,55 @@ +-------------------------------------------------------------------------------- +LEVELDB TODO +-------------------------------------------------------------------------------- + +- Add VisualStudio 2012 project file to our fork + +- Add LevelDB unity .cpp and .h to our fork + +- Replace Beast specific platform macros with universal macros so that the + unity doesn't require Beast + +- Submit LevelDB fork changes to Bitcoin upstream + +-------------------------------------------------------------------------------- +WEBSOCKET TODO +-------------------------------------------------------------------------------- + +*** Figure out how hard we want to fork websocket first ** + +- Think about stripping the ripple specifics out of AutoSocket, make AutoSocket + part of our websocketpp fork + +- Regroup all the sources together in one directory + +- Strip includes and enforce unity + +- Put a new front-end on websocket to hide ALL of their classes and templates + from the host application, make this part of the websocket fork + -------------------------------------------------------------------------------- RIPPLE TODO -------------------------------------------------------------------------------- +- Remove dependence on JobQueue, LoadFeeTrack, and NetworkOPs from LoadManager + by providing an observer (beast::ListenerList or Listeners). This way + LoadManager does not need stopThread() function. + +- Move everything in src/cpp/ripple into ripple_app and sort them into + subdirectories within the module as per the project filters. + * Make sure there are no pending commits from David + +- Refactor TxFormats into template WireFormats<> and use it for transactions + and ledger entries, replace the redundant code with template typedefs. + +- Rewrite Sustain to use Beast and work on Windows as well + * Do not enable watchdog process if a debugger is attached + +- Make separate LevelDB VS2012 project for source browsing, leave ony the unity + .cpp in the main RippleD project + +- Add LevelDB unity .cpp to the LevelDB fork + - Make sure the leak detector output appears on Linux and FreeBSD debug builds. - Create SharedData , move all load related state variables currently @@ -26,7 +74,7 @@ RIPPLE TODO - Replace all NULL with nullptr -- Add ICore interface +- Add ICore interface (incremental replacement for IApplication) - Make TxFormats a member of ICore instead of a singleton. PROBLEM: STObject derived classes like STInt16 make direct use of the @@ -79,27 +127,29 @@ RIPPLE TODO - Consolidate SQLite database classes: DatabaseCon, Database, SqliteDatabase. +-------------------------------------------------------------------------------- +RANDOM NOTES -------------------------------------------------------------------------------- LoadEvent Is referenced with both a shared pointer and an auto pointer. - Should be named LoadMeter::ScopedSample + Should be named LoadMeter::ScopedSample. Or possibly ScopedLoadSample JobQueue getLoadEvent and getLoadEventAP differ only in the style of pointer container which is returned. Unnecessary complexity. --------------------------------------------------------------------------------- - -Naming - -Some names don't make sense. +Naming: Some names don't make sense. Index Stop using Index to refer to keys in tables. Replace with "Key" ? Index implies a small integer, or a data structure. + + This is all over the place in the Ledger API, "Index" of this and + "Index" of that, the terminology is imprecise and helps neither + understanding nor recall. Inconsistent names @@ -123,8 +173,7 @@ Ledger "Skip List" Duplicate Code LedgerEntryFormat and TxFormat - --------------------------------------------------------------------------------- + * Resolved with a todo item, create WireFormats<> template class. Interfaces @@ -142,8 +191,6 @@ Interfaces We have beast for InputStream and OutputStream, we can use those now. --------------------------------------------------------------------------------- - boost Unclear from the class declaration what style of shared object management @@ -156,7 +203,28 @@ boost boost::recursive_mutex Recursive mutexes should never be necessary. + They require the "mutable" keyword for const members to acquire the lock (yuck) Replace recursive_mutex with beast::Mutex to remove boost dependency +-------------------------------------------------------------------------------- +Davidisms +-------------------------------------------------------------------------------- + +(Figure out a good place to record information like this permanently) + +Regarding a defect where a failing transaction was being submitted over and over + again on the network (July 3, 2013) + + The core problem was an interaction between two bits of logic. + 1) Normally, we won't relay a transaction again if we already recently relayed + it. But this is bypassed if the transaction failed in a way that could + allow it to succeed later. This way, if one server discovers a transaction + can now work, it can get all servers to retry it. + 2) Normally, we won't relay a transaction if we think it can't claim a fee. + But if we're not sure it can't claim a fee because we're in an unhealthy + state, we propagate the transaction to let other servers decide if they + think it can claim a fee. + With these two bits of logic, two unhealthy servers could infinitely propagate + a transaction back and forth between each other. diff --git a/src/cpp/ripple/ripple_Version.h b/modules/ripple_app/basics/ripple_Version.h similarity index 100% rename from src/cpp/ripple/ripple_Version.h rename to modules/ripple_app/basics/ripple_Version.h diff --git a/modules/ripple_app/ripple_app.cpp b/modules/ripple_app/ripple_app.cpp index 58165bd5d58..f32fd0bcd22 100644 --- a/modules/ripple_app/ripple_app.cpp +++ b/modules/ripple_app/ripple_app.cpp @@ -178,11 +178,11 @@ namespace ripple #include "src/cpp/ripple/SerializedValidation.h" #include "src/cpp/ripple/AccountSetTransactor.h" #include "src/cpp/ripple/TrustSetTransactor.h" -#include "src/cpp/ripple/ripple_Version.h" #include "src/cpp/ripple/WSConnection.h" #include "src/cpp/ripple/WSHandler.h" #include "src/cpp/ripple/WalletAddTransactor.h" +#include "basics/ripple_Version.h" // VFALCO TODO Should this be private? #include "basics/ripple_BuildVersion.h" // private } @@ -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,87 +282,111 @@ 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" + +#endif + +//------------------------------------------------------------------------------ + +#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 4 + +#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 == 3 +#if ! defined (RIPPLE_MAIN_PART) || RIPPLE_MAIN_PART == 5 #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" + +#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 == 4 +#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 +398,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 +409,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 00000000000..d169e86ebc2 --- /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 00000000000..1e41133a626 --- /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 00000000000..78fe6c8aa44 --- /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 00000000000..0cd81dc0e19 --- /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/modules/ripple_basics/utility/ripple_Log.cpp b/modules/ripple_basics/utility/ripple_Log.cpp index 8ed47cd61ec..48eba348d38 100644 --- a/modules/ripple_basics/utility/ripple_Log.cpp +++ b/modules/ripple_basics/utility/ripple_Log.cpp @@ -155,6 +155,7 @@ void Log::print (std::string const& text, bool toStdErr) if (toStdErr) { +#if BEAST_MSVC if (beast_isRunningUnderDebugger ()) { // Send it to the attached debugger's Output window @@ -162,6 +163,7 @@ void Log::print (std::string const& text, bool toStdErr) Logger::outputDebugString (text); } else +#endif { std::cerr << text << std::endl; } diff --git a/modules/ripple_data/protocol/ripple_TxFormats.cpp b/modules/ripple_data/protocol/ripple_TxFormats.cpp index 97e4d6c7863..692ac6dae59 100644 --- a/modules/ripple_data/protocol/ripple_TxFormats.cpp +++ b/modules/ripple_data/protocol/ripple_TxFormats.cpp @@ -166,7 +166,7 @@ TxFormats::Item const* TxFormats::findByName (std::string const& name) const noe TxFormats::Item& TxFormats::add (char const* name, TxType type) { - Item& item = m_formats.add (new Item (name, type)); + Item& item = *m_formats.add (new Item (name, type)); addCommonFields (item); diff --git a/src/cpp/ripple/ripple_Application.cpp b/src/cpp/ripple/ripple_Application.cpp index 2d8fdef0053..f6e09976531 100644 --- a/src/cpp/ripple/ripple_Application.cpp +++ b/src/cpp/ripple/ripple_Application.cpp @@ -266,7 +266,20 @@ class Application }; Application::Application () +// +// VFALCO NOTE Change this to control whether or not the Application +// object is destroyed on exit +// +#if 1 + // Application object will be deleted on exit. If the code doesn't exit + // cleanly this could cause hangs or crashes on exit. + // : SharedSingleton (SingletonLifetime::persistAfterCreation) +#else + // This will make it so that the Application object is not deleted on exit. + // + : SharedSingleton (SingletonLifetime::neverDestroyed) +#endif , mIOService ((theConfig.NODE_SIZE >= 2) ? 2 : 1) , mIOWork (mIOService) , mAuxWork (mAuxService) @@ -308,6 +321,21 @@ Application::Application () HashMaps::getInstance ().initializeNonce (); } +Application::~Application () +{ + // VFALCO TODO Wrap these in ScopedPointer + delete mTxnDB; + delete mLedgerDB; + delete mWalletDB; + delete mHashNodeDB; + delete mNetNodeDB; + delete mPathFindDB; + delete mHashNodeLDB; + + if (mEphemeralLDB != nullptr) + delete mEphemeralLDB; +} + // VFALCO TODO Tidy these up into some class with accessors. // extern const char* RpcDBInit[], *TxnDBInit[], *LedgerDBInit[], *WalletDBInit[], *HashNodeDBInit[], @@ -666,10 +694,18 @@ void Application::run () if (mWSPrivateDoor) mWSPrivateDoor->stop (); - getApp().getLoadManager().stopThread(); + // VFALCO TODO Try to not have to do this early, by using observers to + // eliminate LoadManager's dependency inversions. + // + // This deletes the object and therefore, stops the thread. + m_loadManager = nullptr; + mSweepTimer.cancel(); WriteLog (lsINFO, Application) << "Done."; + + // VFALCO NOTE This is a sign that something is wrong somewhere, it + // shouldn't be necessary to sleep until some flag is set. while (mShutdown) boost::this_thread::sleep (boost::posix_time::milliseconds (100)); } @@ -705,21 +741,6 @@ void Application::sweep () mSweepTimer.async_wait (BIND_TYPE (&Application::sweep, this)); } -Application::~Application () -{ - // VFALCO TODO Wrap these in ScopedPointer - delete mTxnDB; - delete mLedgerDB; - delete mWalletDB; - delete mHashNodeDB; - delete mNetNodeDB; - delete mPathFindDB; - delete mHashNodeLDB; - - if (mEphemeralLDB != nullptr) - delete mEphemeralLDB; -} - void Application::startNewLedger () { // New stuff. diff --git a/src/cpp/ripple/ripple_ILoadManager.h b/src/cpp/ripple/ripple_ILoadManager.h index 002ad7814ec..894f47c2f62 100644 --- a/src/cpp/ripple/ripple_ILoadManager.h +++ b/src/cpp/ripple/ripple_ILoadManager.h @@ -208,23 +208,27 @@ class ILoadManager public: /** Create a new manager. + The manager thread begins running immediately. + @note The thresholds for warnings and punishments are in the ctor-initializer */ static ILoadManager* New (); + /** Destroy the manager. + + The destructor returns only after the thread has stopped. + */ virtual ~ILoadManager () { } /** Start the associated thread. This is here to prevent the deadlock detector from activating during a lengthy program initialization. - - @note In stand-alone mode, this might not get called. */ // VFALCO TODO Simplify the two stage initialization to one stage (construction). + // NOTE In stand-alone mode the load manager thread isn't started virtual void startThread () = 0; - virtual void stopThread () = 0; /** Turn on deadlock detection. diff --git a/src/cpp/ripple/ripple_LoadManager.cpp b/src/cpp/ripple/ripple_LoadManager.cpp index 76163ad0d3b..e9aefaf0204 100644 --- a/src/cpp/ripple/ripple_LoadManager.cpp +++ b/src/cpp/ripple/ripple_LoadManager.cpp @@ -67,7 +67,6 @@ class LoadManager , mDebitWarn (-500) , mDebitLimit (-1000) , mArmed (false) - , mRunning (false) , mDeadLock (0) , mCosts (LT_MAX) { @@ -110,6 +109,8 @@ class LoadManager addCost (Cost (LT_RequestData, -5, flagDisk | flagNet)); addCost (Cost (LT_CheapQuery, -1, flagCpu)); + + UptimeTimer::getInstance ().beginManualUpdates (); } private: @@ -117,29 +118,12 @@ class LoadManager { UptimeTimer::getInstance ().endManualUpdates (); - if (mRunning) - { - m_thread.interrupt (); - m_thread.join (); - } + m_thread.interrupt (); } void startThread () { - UptimeTimer::getInstance ().beginManualUpdates (); - m_thread.start (this); - mRunning = true; - } - - void stopThread() - { - if (mRunning) - { - m_thread.interrupt (); - m_thread.join (); - mRunning = false; - } } void canonicalize (LoadSource& source, int now) const @@ -417,7 +401,7 @@ class LoadManager int mDebitWarn; // when a source drops below this, we warn int mDebitLimit; // when a source drops below this, we cut it off (should be negative) - bool mArmed, mRunning; + bool mArmed; int mDeadLock; // Detect server deadlocks diff --git a/src/cpp/ripple/ripple_ProofOfWork.cpp b/src/cpp/ripple/ripple_ProofOfWork.cpp index 537e7dcb14f..03f407f7e7a 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);