diff --git a/BeastConfig.h b/BeastConfig.h
index 29fd836456..2d08bcb6e6 100644
--- a/BeastConfig.h
+++ b/BeastConfig.h
@@ -20,4 +20,6 @@
//#define BEAST_DONT_AUTOLINK_TO_WIN32_LIBRARIES
#endif
+#define RIPPLE_USE_NAMESPACE 0
+
#endif
diff --git a/Builds/VisualStudio2012/RippleD.vcxproj b/Builds/VisualStudio2012/RippleD.vcxproj
index af5813bb71..01baef45f7 100644
--- a/Builds/VisualStudio2012/RippleD.vcxproj
+++ b/Builds/VisualStudio2012/RippleD.vcxproj
@@ -183,6 +183,12 @@
true
true
+
+ true
+ true
+ true
+ true
+
true
@@ -1242,12 +1248,6 @@
true
true
-
- true
- true
- true
- true
-
true
true
diff --git a/Builds/VisualStudio2012/RippleD.vcxproj.filters b/Builds/VisualStudio2012/RippleD.vcxproj.filters
index dff7c556cc..a9e6147ccc 100644
--- a/Builds/VisualStudio2012/RippleD.vcxproj.filters
+++ b/Builds/VisualStudio2012/RippleD.vcxproj.filters
@@ -414,9 +414,6 @@
1. Modules\ripple_app\refactored
-
- 1. Modules\ripple_app\refactored
-
1. Modules\ripple_app\refactored
@@ -897,6 +894,9 @@
1. Modules\ripple_core
+
+ 1. Modules\ripple_websocket\autosocket
+
diff --git a/modules/ripple_app/ripple_app.cpp b/modules/ripple_app/ripple_app.cpp
index 14a7f108f1..5e3817ed16 100644
--- a/modules/ripple_app/ripple_app.cpp
+++ b/modules/ripple_app/ripple_app.cpp
@@ -375,7 +375,6 @@ static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength)
#include "src/cpp/ripple/ripple_FeeVote.cpp"
#include "src/cpp/ripple/ripple_HashedObjectStore.cpp"
#include "src/cpp/ripple/ripple_HashRouter.cpp"
-//#include "src/cpp/ripple/ripple_InfoSub.cpp"
#endif
@@ -392,7 +391,6 @@ static DH* handleTmpDh (SSL* ssl, int is_export, int iKeyLength)
#include "src/cpp/ripple/ripple_LedgerHistory.cpp"
#include "src/cpp/ripple/ripple_LoadEvent.cpp"
#include "src/cpp/ripple/ripple_LoadMonitor.cpp"
-#include "src/cpp/ripple/ripple_LogWebsockets.cpp"
#include "src/cpp/ripple/ripple_LoadFeeTrack.cpp"
#include "src/cpp/ripple/ripple_OrderBook.cpp"
#include "src/cpp/ripple/ripple_PathRequest.cpp"
diff --git a/modules/ripple_basics/containers/ripple_RangeSet.h b/modules/ripple_basics/containers/ripple_RangeSet.h
index cbed4135d1..fb1fc8412a 100644
--- a/modules/ripple_basics/containers/ripple_RangeSet.h
+++ b/modules/ripple_basics/containers/ripple_RangeSet.h
@@ -48,16 +48,4 @@ public:
std::string toString () const;
};
-// VFALCO TODO these parameters should not be const references.
-template T range_check_cast (const U& value, const T& minimum, const T& maximum)
-{
- if ((value < minimum) || (value > maximum))
- throw std::runtime_error ("Value out of range");
-
- return static_cast (value);
-}
-
-
#endif
-
-// vim:ts=4
diff --git a/modules/ripple_basics/ripple_basics.cpp b/modules/ripple_basics/ripple_basics.cpp
index b7e4622c50..2ccf2cbfb3 100644
--- a/modules/ripple_basics/ripple_basics.cpp
+++ b/modules/ripple_basics/ripple_basics.cpp
@@ -10,9 +10,13 @@
@ingroup ripple_basics
*/
-#include
-#include
+#include "ripple_basics.h"
+#include
+#include
+
+// VFALCO TODO Rewrite Sustain to use beast::Process
+//
// These are for Sustain Linux variants
#ifdef __linux__
#include
@@ -27,7 +31,7 @@
#include
#include
#include
-#include // for stupid parseIpPort
+#include // VFALCO NOTE just for parseIpPort (!)
#include
// VFALCO TODO Replace OpenSSL randomness with a dependency-free implementation
@@ -39,16 +43,16 @@
//
#include // Because of ripple_RandomNumbers.cpp
+#ifdef BEAST_WIN32
+#include // for ripple_RandomNumbers.cpp
+#include // for ripple_RandomNumbers.cpp
+// Winsock #defines 'max' and does other stupid things so put it last
+#include // for ripple_ByteOrder.cpp
+#endif
-#include "ripple_basics.h"
-
-
-
-// VFALCO TODO fix these warnings!
-#ifdef _MSC_VER
-//#pragma warning (push) // Causes spurious C4503 "decorated name exceeds maximum length"
-//#pragma warning (disable: 4018) // signed/unsigned mismatch
-//#pragma warning (disable: 4244) // conversion, possible loss of data
+#if RIPPLE_USE_NAMESPACE
+namespace ripple
+{
#endif
#include "containers/ripple_RangeSet.cpp"
@@ -65,16 +69,10 @@
#include "utility/ripple_Time.cpp"
#include "utility/ripple_UptimeTimer.cpp"
-#ifdef WIN32
-#include // for ripple_RandomNumbers.cpp
-#include // for ripple_RandomNumbers.cpp
-// Winsock #defines 'max' and does other stupid things so put it last
-#include // for ripple_ByteOrder.cpp
-#endif
#include "utility/ripple_RandomNumbers.cpp" // has Win32/Posix dependencies
#include "types/ripple_UInt256.cpp"
-#ifdef _MSC_VER
-//#pragma warning (pop)
+#if RIPPLE_USE_NAMESPACE
+}
#endif
diff --git a/modules/ripple_basics/ripple_basics.h b/modules/ripple_basics/ripple_basics.h
index 81b307bc11..e0a6f64bb5 100644
--- a/modules/ripple_basics/ripple_basics.h
+++ b/modules/ripple_basics/ripple_basics.h
@@ -17,41 +17,43 @@
@defgroup ripple_basics
*/
-#ifndef RIPPLE_BASICS_H
-#define RIPPLE_BASICS_H
+#ifndef RIPPLE_BASICS_RIPPLEHEADER
+#define RIPPLE_BASICS_RIPPLEHEADER
-#include
-#include
-#include
-#include
-#include
-
-// UInt256
#include
#include
#include
#include
#include
+#include
#include
+#include
+#include
+#include
#include
#include
#include
#if BOOST_VERSION < 104700
-#error Boost 1.47 or later is required
+#error Ripple requires Boost version 1.47 or later
#endif
-#include
-#include // VFALCO TODO try to eliminate thie dependency
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
+// VFALCO TODO Move all boost includes into ripple_BoostHeaders.h
+//
+#include
#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
// ByteOrder
#ifdef WIN32
@@ -64,28 +66,22 @@
# include
#endif
-// StringUtilities
-#include
-#include
-
-// UInt256
-#include
-
-// ripple_PlatformMacros.h
-#include
-#include
-
-// VFALCO TODO remove this dependency!!!
#include // for DiffieHellmanUtil
#include // For HashUtilities
#include // For HashUtilities
-#include "BeastConfig.h"
+#include "BeastConfig.h" // Must come before any Beast includes
+
#include "modules/beast_core/beast_core.h"
#include "modules/beast_basics/beast_basics.h"
#include "../ripple_json/ripple_json.h"
+#if RIPPLE_USE_NAMESPACE
+namespace ripple
+{
+#endif
+
#include "utility/ripple_IntegerTypes.h" // must come first
#include "utility/ripple_Log.h" // Needed by others
@@ -111,4 +107,8 @@
#include "containers/ripple_SecureAllocator.h"
#include "containers/ripple_TaggedCache.h"
+#if RIPPLE_USE_NAMESPACE
+}
+#endif
+
#endif
diff --git a/modules/ripple_basics/utility/ripple_StringUtilities.h b/modules/ripple_basics/utility/ripple_StringUtilities.h
index 4541752a3c..ffa766a818 100644
--- a/modules/ripple_basics/utility/ripple_StringUtilities.h
+++ b/modules/ripple_basics/utility/ripple_StringUtilities.h
@@ -150,15 +150,6 @@ inline static std::string sqlEscape (Blob const& vecSrc)
return j;
}
-template
-bool isZero (Iterator first, int iSize)
-{
- while (iSize && !*first++)
- --iSize;
-
- return !iSize;
-}
-
int charUnHex (char cDigit);
int strUnHex (std::string& strDst, const std::string& strSrc);
diff --git a/modules/ripple_data/protocol/ripple_STAmount.cpp b/modules/ripple_data/protocol/ripple_STAmount.cpp
index f0d057094a..ef23958b19 100644
--- a/modules/ripple_data/protocol/ripple_STAmount.cpp
+++ b/modules/ripple_data/protocol/ripple_STAmount.cpp
@@ -231,9 +231,9 @@ std::string STAmount::createHumanCurrency (const uint160& uCurrency)
Blob vucVersion = sit.getRaw (16 / 8);
Blob vucReserved = sit.getRaw (24 / 8);
- bool bIso = ::isZero (vucZeros.begin (), vucZeros.size ()) // Leading zeros
- && ::isZero (vucVersion.begin (), vucVersion.size ()) // Zero version
- && ::isZero (vucReserved.begin (), vucReserved.size ()); // Reserved is zero.
+ bool bIso = isZeroFilled (vucZeros.begin (), vucZeros.size ()) // Leading zeros
+ && isZeroFilled (vucVersion.begin (), vucVersion.size ()) // Zero version
+ && isZeroFilled (vucReserved.begin (), vucReserved.size ()); // Reserved is zero.
if (bIso)
{
diff --git a/modules/ripple_data/protocol/ripple_SerializedObject.cpp b/modules/ripple_data/protocol/ripple_SerializedObject.cpp
index e2e1cad81f..2ab64c0232 100644
--- a/modules/ripple_data/protocol/ripple_SerializedObject.cpp
+++ b/modules/ripple_data/protocol/ripple_SerializedObject.cpp
@@ -1308,14 +1308,29 @@ UPTR_T STObject::parseJson (const Json::Value& object, SField::ref inN
case STI_UINT32:
if (value.isString ())
+ {
data.push_back (new STUInt32 (field, lexical_cast_st (value.asString ())));
+ }
else if (value.isInt ())
- data.push_back (new STUInt32 (field, range_check_cast (value.asInt (), 0, 4294967295u)));
+ {
+ // VFALCO NOTE value.asInt() returns an int, which can never be greater than 7fffffff, but we
+ // are checking to make sure it is not greater than ffffffff, which can never be
+ // less than any 32 bit value (signed or unsigned).
+ //
+ // It seems this line only cares that value.asInt () is not negative, can someone
+ // confirm this?
+ //
+#pragma message(BEAST_FILEANDLINE_ "Invalid signed/unsigned comparison")
+ data.push_back (new STUInt32 (field, range_check_cast (value.asInt (), 0u, 4294967295u)));
+ }
else if (value.isUInt ())
+ {
data.push_back (new STUInt32 (field, static_cast (value.asUInt ())));
+ }
else
+ {
throw std::runtime_error ("Incorrect type");
-
+ }
break;
case STI_UINT64:
diff --git a/modules/ripple_data/protocol/ripple_SerializedObject.h b/modules/ripple_data/protocol/ripple_SerializedObject.h
index 025ff45693..9cfa818f96 100644
--- a/modules/ripple_data/protocol/ripple_SerializedObject.h
+++ b/modules/ripple_data/protocol/ripple_SerializedObject.h
@@ -260,17 +260,29 @@ public:
}
private:
- boost::ptr_vector mData;
- const SOTemplate* mType;
+ // VFALCO TODO these parameters should not be const references.
+ template
+ static T range_check_cast (const U& value, const T& minimum, const T& maximum)
+ {
+ if ((value < minimum) || (value > maximum))
+ throw std::runtime_error ("Value out of range");
+
+ return static_cast (value);
+ }
STObject* duplicate () const
{
return new STObject (*this);
}
+
STObject (SField::ref name, boost::ptr_vector& data) : SerializedType (name), mType (NULL)
{
mData.swap (data);
}
+
+private:
+ boost::ptr_vector mData;
+ const SOTemplate* mType;
};
//------------------------------------------------------------------------------
@@ -283,17 +295,6 @@ inline STObject::iterator range_end (STObject& x)
{
return x.end ();
}
-namespace boost
-{
-template<> struct range_mutable_iterator
-{
- typedef STObject::iterator type;
-};
-template<> struct range_const_iterator
-{
- typedef STObject::const_iterator type;
-};
-}
//------------------------------------------------------------------------------
@@ -481,17 +482,5 @@ inline STArray::iterator range_end (STArray& x)
{
return x.end ();
}
-namespace boost
-{
-template<> struct range_mutable_iterator
-{
- typedef STArray::iterator type;
-};
-template<> struct range_const_iterator
-{
- typedef STArray::const_iterator type;
-};
-}
#endif
-// vim:ts=4
diff --git a/modules/ripple_data/protocol/ripple_SerializedTypes.h b/modules/ripple_data/protocol/ripple_SerializedTypes.h
index 3fd02ea352..20eff2c060 100644
--- a/modules/ripple_data/protocol/ripple_SerializedTypes.h
+++ b/modules/ripple_data/protocol/ripple_SerializedTypes.h
@@ -728,6 +728,16 @@ public:
STAmount getRound () const;
void roundSelf ();
+private:
+ template
+ static bool isZeroFilled (Iterator first, int iSize)
+ {
+ while (iSize && !*first++)
+ --iSize;
+
+ return !iSize;
+ }
+
private:
uint160 mCurrency; // Compared by ==. Always update mIsNative.
uint160 mIssuer; // Not compared by ==. 0 for XRP.
@@ -1291,21 +1301,6 @@ inline std::vector::const_iterator range_end (const STPath& x)
return x.end ();
}
-namespace boost
-{
-template<>
-struct range_mutable_iterator< STPath >
-{
- typedef std::vector::iterator type;
-};
-
-template<>
-struct range_const_iterator< STPath >
-{
- typedef std::vector::const_iterator type;
-};
-}
-
// A set of zero or more payment paths
class STPathSet : public SerializedType
{
@@ -1423,21 +1418,6 @@ inline std::vector::const_iterator range_end (const STPathSet& x)
return x.end ();
}
-namespace boost
-{
-template<>
-struct range_mutable_iterator< STPathSet >
-{
- typedef std::vector::iterator type;
-};
-
-template<>
-struct range_const_iterator< STPathSet >
-{
- typedef std::vector::const_iterator type;
-};
-}
-
class STVector256 : public SerializedType
{
public:
diff --git a/modules/ripple_data/ripple_data.cpp b/modules/ripple_data/ripple_data.cpp
index 49fc0392b9..9cb8edb024 100644
--- a/modules/ripple_data/ripple_data.cpp
+++ b/modules/ripple_data/ripple_data.cpp
@@ -10,13 +10,14 @@
@ingroup ripple_data
*/
-#include
+#include "ripple_data.h"
#include
#include
#include
#include
#include
+#include
#include