Make testcases build, prevent windows symbol collision

This commit is contained in:
Wladimir J. van der Laan 2012-05-19 09:35:26 +02:00
parent 0832c0d166
commit 239c11d0dd
13 changed files with 103 additions and 80 deletions

View File

@ -2630,7 +2630,7 @@ void ThreadRPCServer2(void* parg)
strWhatAmI.c_str(), strWhatAmI.c_str(),
GetConfigFile().string().c_str(), GetConfigFile().string().c_str(),
EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()), EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32).c_str()),
_("Error"), MF_OK | MF_MODAL); _("Error"), CClientUIInterface::OK | CClientUIInterface::MODAL);
uiInterface.QueueShutdown(); uiInterface.QueueShutdown();
return; return;
} }
@ -2651,7 +2651,7 @@ void ThreadRPCServer2(void* parg)
catch(boost::system::system_error &e) catch(boost::system::system_error &e)
{ {
uiInterface.ThreadSafeMessageBox(strprintf(_("An error occured while setting up the RPC port %i for listening: %s"), endpoint.port(), e.what()), uiInterface.ThreadSafeMessageBox(strprintf(_("An error occured while setting up the RPC port %i for listening: %s"), endpoint.port(), e.what()),
_("Error"), MF_OK | MF_MODAL); _("Error"), CClientUIInterface::OK | CClientUIInterface::MODAL);
uiInterface.QueueShutdown(); uiInterface.QueueShutdown();
return; return;
} }

View File

@ -91,41 +91,6 @@ void HandleSIGTERM(int)
// Start // Start
// //
#if !defined(QT_GUI) #if !defined(QT_GUI)
static int noui_ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style)
{
printf("%s: %s\n", caption.c_str(), message.c_str());
fprintf(stderr, "%s: %s\n", caption.c_str(), message.c_str());
return 4;
}
static bool noui_ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption)
{
return true;
}
static void noui_QueueShutdown()
{
// Without UI, Shutdown can simply be started in a new thread
CreateThread(Shutdown, NULL);
}
int main(int argc, char* argv[])
{
bool fRet = false;
// Connect bitcoind signal handlers
uiInterface.ThreadSafeMessageBox.connect(noui_ThreadSafeMessageBox);
uiInterface.ThreadSafeAskFee.connect(noui_ThreadSafeAskFee);
uiInterface.QueueShutdown.connect(noui_QueueShutdown);
fRet = AppInit(argc, argv);
if (fRet && fDaemon)
return 0;
return 1;
}
bool AppInit(int argc, char* argv[]) bool AppInit(int argc, char* argv[])
{ {
bool fRet = false; bool fRet = false;
@ -181,17 +146,33 @@ bool AppInit(int argc, char* argv[])
Shutdown(NULL); Shutdown(NULL);
return fRet; return fRet;
} }
extern void noui_connect();
int main(int argc, char* argv[])
{
bool fRet = false;
// Connect bitcoind signal handlers
noui_connect();
fRet = AppInit(argc, argv);
if (fRet && fDaemon)
return 0;
return 1;
}
#endif #endif
bool static InitError(const std::string &str) bool static InitError(const std::string &str)
{ {
uiInterface.ThreadSafeMessageBox(str, _("Bitcoin"), MF_OK|MF_MODAL); uiInterface.ThreadSafeMessageBox(str, _("Bitcoin"), CClientUIInterface::OK | CClientUIInterface::MODAL);
return false; return false;
} }
bool static InitWarning(const std::string &str) bool static InitWarning(const std::string &str)
{ {
uiInterface.ThreadSafeMessageBox(str, _("Bitcoin"), MF_OK | MF_ICON_EXCLAMATION | MF_MODAL); uiInterface.ThreadSafeMessageBox(str, _("Bitcoin"), CClientUIInterface::OK | CClientUIInterface::ICON_EXCLAMATION | CClientUIInterface::MODAL);
return true; return true;
} }

View File

@ -10,7 +10,6 @@
extern CWallet* pwalletMain; extern CWallet* pwalletMain;
void Shutdown(void* parg); void Shutdown(void* parg);
bool AppInit(int argc, char* argv[]);
bool AppInit2(); bool AppInit2();
std::string HelpMessage(); std::string HelpMessage();

View File

@ -1858,7 +1858,7 @@ bool CheckDiskSpace(uint64 nAdditionalBytes)
string strMessage = _("Warning: Disk space is low"); string strMessage = _("Warning: Disk space is low");
strMiscWarning = strMessage; strMiscWarning = strMessage;
printf("*** %s\n", strMessage.c_str()); printf("*** %s\n", strMessage.c_str());
uiInterface.ThreadSafeMessageBox(strMessage, "Bitcoin", MF_OK | MF_ICON_EXCLAMATION | MF_MODAL); uiInterface.ThreadSafeMessageBox(strMessage, "Bitcoin", CClientUIInterface::OK | CClientUIInterface::ICON_EXCLAMATION | CClientUIInterface::MODAL);
uiInterface.QueueShutdown(); uiInterface.QueueShutdown();
return false; return false;
} }

View File

@ -64,7 +64,8 @@ OBJS= \
obj/sync.o \ obj/sync.o \
obj/util.o \ obj/util.o \
obj/wallet.o \ obj/wallet.o \
obj/walletdb.o obj/walletdb.o \
obj/noui.o
all: bitcoind.exe all: bitcoind.exe

View File

@ -61,7 +61,8 @@ OBJS= \
obj/sync.o \ obj/sync.o \
obj/util.o \ obj/util.o \
obj/wallet.o \ obj/wallet.o \
obj/walletdb.o obj/walletdb.o \
obj/noui.o
all: bitcoind.exe all: bitcoind.exe

View File

@ -88,7 +88,8 @@ OBJS= \
obj/sync.o \ obj/sync.o \
obj/util.o \ obj/util.o \
obj/wallet.o \ obj/wallet.o \
obj/walletdb.o obj/walletdb.o \
obj/noui.o
ifdef USE_UPNP ifdef USE_UPNP
DEFS += -DUSE_UPNP=$(USE_UPNP) DEFS += -DUSE_UPNP=$(USE_UPNP)

View File

@ -108,7 +108,8 @@ OBJS= \
obj/sync.o \ obj/sync.o \
obj/util.o \ obj/util.o \
obj/wallet.o \ obj/wallet.o \
obj/walletdb.o obj/walletdb.o \
obj/noui.o
all: bitcoind all: bitcoind

35
src/noui.cpp Normal file
View File

@ -0,0 +1,35 @@
// Copyright (c) 2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#include "ui_interface.h"
#include "init.h"
#include "bitcoinrpc.h"
#include <string>
static int noui_ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style)
{
printf("%s: %s\n", caption.c_str(), message.c_str());
fprintf(stderr, "%s: %s\n", caption.c_str(), message.c_str());
return 4;
}
static bool noui_ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption)
{
return true;
}
static void noui_QueueShutdown()
{
// Without UI, Shutdown can simply be started in a new thread
CreateThread(Shutdown, NULL);
}
void noui_connect()
{
// Connect bitcoind signal handlers
uiInterface.ThreadSafeMessageBox.connect(noui_ThreadSafeMessageBox);
uiInterface.ThreadSafeAskFee.connect(noui_ThreadSafeAskFee);
uiInterface.QueueShutdown.connect(noui_QueueShutdown);
}

View File

@ -42,7 +42,7 @@ static void ThreadSafeMessageBox(const std::string& message, const std::string&
// Message from network thread // Message from network thread
if(guiref) if(guiref)
{ {
bool modal = (style & MF_MODAL); bool modal = (style & CClientUIInterface::MODAL);
// in case of modal message, use blocking connection to wait for user to click OK // in case of modal message, use blocking connection to wait for user to click OK
QMetaObject::invokeMethod(guiref, "error", QMetaObject::invokeMethod(guiref, "error",
modal ? GUIUtil::blockingGUIThreadConnection() : Qt::QueuedConnection, modal ? GUIUtil::blockingGUIThreadConnection() : Qt::QueuedConnection,

View File

@ -5,11 +5,15 @@
#include "wallet.h" #include "wallet.h"
CWallet* pwalletMain; CWallet* pwalletMain;
CClientUIInterface uiInterface;
extern bool fPrintToConsole; extern bool fPrintToConsole;
extern void noui_connect();
struct TestingSetup { struct TestingSetup {
TestingSetup() { TestingSetup() {
fPrintToConsole = true; // don't want to write to debug.log file fPrintToConsole = true; // don't want to write to debug.log file
noui_connect();
pwalletMain = new CWallet(); pwalletMain = new CWallet();
RegisterWallet(pwalletMain); RegisterWallet(pwalletMain);
} }

View File

@ -13,39 +13,6 @@ class CBasicKeyStore;
class CWallet; class CWallet;
class uint256; class uint256;
/** Flags for CClientUIInterface::ThreadSafeMessageBox */
enum MessageBoxFlags
{
MF_YES = 0x00000002,
MF_OK = 0x00000004,
MF_NO = 0x00000008,
MF_YES_NO = (MF_YES|MF_NO),
MF_CANCEL = 0x00000010,
MF_APPLY = 0x00000020,
MF_CLOSE = 0x00000040,
MF_OK_DEFAULT = 0x00000000,
MF_YES_DEFAULT = 0x00000000,
MF_NO_DEFAULT = 0x00000080,
MF_CANCEL_DEFAULT = 0x80000000,
MF_ICON_EXCLAMATION = 0x00000100,
MF_ICON_HAND = 0x00000200,
MF_ICON_WARNING = MF_ICON_EXCLAMATION,
MF_ICON_ERROR = MF_ICON_HAND,
MF_ICON_QUESTION = 0x00000400,
MF_ICON_INFORMATION = 0x00000800,
MF_ICON_STOP = MF_ICON_HAND,
MF_ICON_ASTERISK = MF_ICON_INFORMATION,
MF_ICON_MASK = (0x00000100|0x00000200|0x00000400|0x00000800),
MF_FORWARD = 0x00001000,
MF_BACKWARD = 0x00002000,
MF_RESET = 0x00004000,
MF_HELP = 0x00008000,
MF_MORE = 0x00010000,
MF_SETUP = 0x00020000,
// Force blocking, modal message box dialog (not just OS notification)
MF_MODAL = 0x00040000
};
/** General change type (added, updated, removed). */ /** General change type (added, updated, removed). */
enum ChangeType enum ChangeType
{ {
@ -58,6 +25,39 @@ enum ChangeType
class CClientUIInterface class CClientUIInterface
{ {
public: public:
/** Flags for CClientUIInterface::ThreadSafeMessageBox */
enum MessageBoxFlags
{
YES = 0x00000002,
OK = 0x00000004,
NO = 0x00000008,
YES_NO = (YES|NO),
CANCEL = 0x00000010,
APPLY = 0x00000020,
CLOSE = 0x00000040,
OK_DEFAULT = 0x00000000,
YES_DEFAULT = 0x00000000,
NO_DEFAULT = 0x00000080,
CANCEL_DEFAULT = 0x80000000,
ICON_EXCLAMATION = 0x00000100,
ICON_HAND = 0x00000200,
ICON_WARNING = ICON_EXCLAMATION,
ICON_ERROR = ICON_HAND,
ICON_QUESTION = 0x00000400,
ICON_INFORMATION = 0x00000800,
ICON_STOP = ICON_HAND,
ICON_ASTERISK = ICON_INFORMATION,
ICON_MASK = (0x00000100|0x00000200|0x00000400|0x00000800),
FORWARD = 0x00001000,
BACKWARD = 0x00002000,
RESET = 0x00004000,
HELP = 0x00008000,
MORE = 0x00010000,
SETUP = 0x00020000,
// Force blocking, modal message box dialog (not just OS notification)
MODAL = 0x00040000
};
/** Show message box. */ /** Show message box. */
boost::signals2::signal<void (const std::string& message, const std::string& caption, int style)> ThreadSafeMessageBox; boost::signals2::signal<void (const std::string& message, const std::string& caption, int style)> ThreadSafeMessageBox;

View File

@ -1000,7 +1000,7 @@ void AddTimeData(const CNetAddr& ip, int64 nTime)
string strMessage = _("Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly."); string strMessage = _("Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly.");
strMiscWarning = strMessage; strMiscWarning = strMessage;
printf("*** %s\n", strMessage.c_str()); printf("*** %s\n", strMessage.c_str());
uiInterface.ThreadSafeMessageBox(strMessage+" ", string("Bitcoin"), MF_OK | MF_ICON_EXCLAMATION); uiInterface.ThreadSafeMessageBox(strMessage+" ", string("Bitcoin"), CClientUIInterface::OK | CClientUIInterface::ICON_EXCLAMATION);
} }
} }
} }