mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 19:15:54 +00:00
Move Sustain to ripple_basics and clean up includes
This commit is contained in:
@@ -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 <windows.h> // for ripple_RandomNumbers.cpp
|
||||
#include <wincrypt.h> // for ripple_RandomNumbers.cpp
|
||||
// Winsock #defines 'max' and does other stupid things so put it last
|
||||
#include <Winsock2.h> // 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)
|
||||
|
||||
@@ -58,7 +58,6 @@ namespace boost {
|
||||
|
||||
|
||||
// KeyCache
|
||||
#include <string>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/thread/mutex.hpp>
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
90
modules/ripple_basics/utility/ripple_Sustain.cpp
Normal file
90
modules/ripple_basics/utility/ripple_Sustain.cpp
Normal file
@@ -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<pid_t>(0);
|
||||
static pid_t pChild = static_cast<pid_t>(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<int>(pChild)).c_str());
|
||||
rename("debug.log", boost::str(boost::format("debug.log.%d") % static_cast<int>(pChild)).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
bool HaveSustain() { return false; }
|
||||
std::string DoSustain() { return std::string(); }
|
||||
std::string StopSustain() { return std::string(); }
|
||||
|
||||
#endif
|
||||
27
modules/ripple_basics/utility/ripple_Sustain.h
Normal file
27
modules/ripple_basics/utility/ripple_Sustain.h
Normal file
@@ -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
|
||||
@@ -210,6 +210,12 @@
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="modules\ripple_basics\utility\ripple_Sustain.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="modules\ripple_basics\utility\ripple_ThreadName.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
@@ -1210,6 +1216,7 @@
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_PlatformMacros.h" />
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_RandomNumbers.h" />
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_StringUtilities.h" />
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_Sustain.h" />
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_ThreadName.h" />
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_Time.h" />
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_UptimeTimer.h" />
|
||||
|
||||
@@ -759,6 +759,9 @@
|
||||
<ClCompile Include="modules\ripple_basics\utility\ripple_UptimeTimer.cpp">
|
||||
<Filter>1. Modules\ripple_basics\utility</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="modules\ripple_basics\utility\ripple_Sustain.cpp">
|
||||
<Filter>1. Modules\ripple_basics\utility</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="database\sqlite3ext.h">
|
||||
@@ -1424,6 +1427,9 @@
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_IntegerTypes.h">
|
||||
<Filter>1. Modules\ripple_basics\utility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="modules\ripple_basics\utility\ripple_Sustain.h">
|
||||
<Filter>1. Modules\ripple_basics\utility</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="SConstruct" />
|
||||
|
||||
@@ -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<pid_t>(0);
|
||||
static pid_t pChild = static_cast<pid_t>(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<int>(pChild)).c_str());
|
||||
rename("debug.log", boost::str(boost::format("debug.log.%d") % static_cast<int>(pChild)).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
bool HaveSustain() { return false; }
|
||||
std::string DoSustain() { return std::string(); }
|
||||
std::string StopSustain() { return std::string(); }
|
||||
|
||||
#endif
|
||||
|
||||
// vim:ts=4
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user