diff --git a/modules/ripple_basics/ripple_basics.cpp b/modules/ripple_basics/ripple_basics.cpp index 665bd7ca79..afc171cc1d 100644 --- a/modules/ripple_basics/ripple_basics.cpp +++ b/modules/ripple_basics/ripple_basics.cpp @@ -55,17 +55,19 @@ #include "utility/ripple_UptimeTimer.cpp" #include "utility/ripple_StringUtilities.cpp" +#include "utility/ripple_ByteOrder.cpp" +#include "utility/ripple_Sustain.cpp" +#include "utility/ripple_ThreadName.cpp" +#include "utility/ripple_Time.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_ByteOrder.cpp" +#include "utility/ripple_RandomNumbers.cpp" // has Win32/Posix dependencies -#include "utility/ripple_RandomNumbers.cpp" -#include "utility/ripple_ThreadName.cpp" -#include "utility/ripple_Time.cpp" #ifdef _MSC_VER //#pragma warning (pop) diff --git a/modules/ripple_basics/ripple_basics.h b/modules/ripple_basics/ripple_basics.h index 6702114f7a..1bca2a8256 100644 --- a/modules/ripple_basics/ripple_basics.h +++ b/modules/ripple_basics/ripple_basics.h @@ -58,7 +58,6 @@ namespace boost { // KeyCache -#include #include #include @@ -108,6 +107,7 @@ namespace boost { #include "utility/ripple_UptimeTimer.h" #include "utility/ripple_PlatformMacros.h" #include "utility/ripple_RandomNumbers.h" +#include "utility/ripple_Sustain.h" #include "utility/ripple_ThreadName.h" #include "utility/ripple_Time.h" diff --git a/modules/ripple_basics/utility/ripple_Sustain.cpp b/modules/ripple_basics/utility/ripple_Sustain.cpp new file mode 100644 index 0000000000..04e88c2d90 --- /dev/null +++ b/modules/ripple_basics/utility/ripple_Sustain.cpp @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +/* + Copyright (c) 2011-2013, OpenCoin, Inc. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +//============================================================================== + +#ifdef __unix__ + +static pid_t pManager = static_cast(0); +static pid_t pChild = static_cast(0); + +static void pass_signal(int a) +{ + kill(pChild, a); +} + +static void stop_manager(int) +{ + kill(pChild, SIGINT); + _exit(0); +} + +bool HaveSustain() +{ + return true; +} + +std::string StopSustain() +{ + if (getppid() != pManager) + return std::string(); + kill(pManager, SIGHUP); + return "Terminating monitor"; +} + +std::string DoSustain() +{ + int childCount = 0; + pManager = getpid(); + signal(SIGINT, stop_manager); + signal(SIGHUP, stop_manager); + signal(SIGUSR1, pass_signal); + signal(SIGUSR2, pass_signal); + while (1) + { + ++childCount; + pChild = fork(); + if (pChild == -1) + _exit(0); + if (pChild == 0) + { + setCallingThreadName("main"); + signal(SIGINT, SIG_DFL); + signal(SIGHUP, SIG_DFL); + signal(SIGUSR1, SIG_DFL); + signal(SIGUSR2, SIG_DFL); + return str(boost::format("Launching child %d") % childCount);; + } + setCallingThreadName(boost::str(boost::format("#%d") % childCount).c_str()); + do + { + int i; + sleep(10); + waitpid(-1, &i, 0); + } + while (kill(pChild, 0) == 0); + rename("core", boost::str(boost::format("core.%d") % static_cast(pChild)).c_str()); + rename("debug.log", boost::str(boost::format("debug.log.%d") % static_cast(pChild)).c_str()); + } +} + +#else + +bool HaveSustain() { return false; } +std::string DoSustain() { return std::string(); } +std::string StopSustain() { return std::string(); } + +#endif diff --git a/modules/ripple_basics/utility/ripple_Sustain.h b/modules/ripple_basics/utility/ripple_Sustain.h new file mode 100644 index 0000000000..361ca8cf16 --- /dev/null +++ b/modules/ripple_basics/utility/ripple_Sustain.h @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +/* + Copyright (c) 2011-2013, OpenCoin, Inc. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +//============================================================================== + +#ifndef RIPPLE_SUSTAIN_H +#define RIPPLE_SUSTAIN_H + +// VFALCO: TODO, figure out what the heck this is?? +extern bool HaveSustain(); +extern std::string StopSustain(); +extern std::string DoSustain(); + +#endif diff --git a/newcoin.vcxproj b/newcoin.vcxproj index fd6f6f8ee1..63bba33e42 100644 --- a/newcoin.vcxproj +++ b/newcoin.vcxproj @@ -210,6 +210,12 @@ true true + + true + true + true + true + true true @@ -1210,6 +1216,7 @@ + diff --git a/newcoin.vcxproj.filters b/newcoin.vcxproj.filters index 3cba325486..e0d82a6e47 100644 --- a/newcoin.vcxproj.filters +++ b/newcoin.vcxproj.filters @@ -759,6 +759,9 @@ 1. Modules\ripple_basics\utility + + 1. Modules\ripple_basics\utility + @@ -1424,6 +1427,9 @@ 1. Modules\ripple_basics\utility + + 1. Modules\ripple_basics\utility + diff --git a/src/cpp/ripple/utils.cpp b/src/cpp/ripple/utils.cpp index 46d154e806..634d61e3b6 100644 --- a/src/cpp/ripple/utils.cpp +++ b/src/cpp/ripple/utils.cpp @@ -60,77 +60,4 @@ DH* DH_der_load(const std::string& strDer) return d2i_DHparams(NULL, &pbuf, strDer.size()); } -#ifdef __unix__ - -static pid_t pManager = static_cast(0); -static pid_t pChild = static_cast(0); - -static void pass_signal(int a) -{ - kill(pChild, a); -} - -static void stop_manager(int) -{ - kill(pChild, SIGINT); - _exit(0); -} - -bool HaveSustain() -{ - return true; -} - -std::string StopSustain() -{ - if (getppid() != pManager) - return std::string(); - kill(pManager, SIGHUP); - return "Terminating monitor"; -} - -std::string DoSustain() -{ - int childCount = 0; - pManager = getpid(); - signal(SIGINT, stop_manager); - signal(SIGHUP, stop_manager); - signal(SIGUSR1, pass_signal); - signal(SIGUSR2, pass_signal); - while (1) - { - ++childCount; - pChild = fork(); - if (pChild == -1) - _exit(0); - if (pChild == 0) - { - setCallingThreadName("main"); - signal(SIGINT, SIG_DFL); - signal(SIGHUP, SIG_DFL); - signal(SIGUSR1, SIG_DFL); - signal(SIGUSR2, SIG_DFL); - return str(boost::format("Launching child %d") % childCount);; - } - setCallingThreadName(boost::str(boost::format("#%d") % childCount).c_str()); - do - { - int i; - sleep(10); - waitpid(-1, &i, 0); - } - while (kill(pChild, 0) == 0); - rename("core", boost::str(boost::format("core.%d") % static_cast(pChild)).c_str()); - rename("debug.log", boost::str(boost::format("debug.log.%d") % static_cast(pChild)).c_str()); - } -} - -#else - -bool HaveSustain() { return false; } -std::string DoSustain() { return std::string(); } -std::string StopSustain() { return std::string(); } - -#endif - // vim:ts=4 diff --git a/src/cpp/ripple/utils.h b/src/cpp/ripple/utils.h index 7c0b773b49..b74722a508 100644 --- a/src/cpp/ripple/utils.h +++ b/src/cpp/ripple/utils.h @@ -14,10 +14,6 @@ DH* DH_der_load(const std::string& strDer); std::string DH_der_gen(int iKeyLength); -extern bool HaveSustain(); -extern std::string StopSustain(); -extern std::string DoSustain(); - #endif // vim:ts=4