Added some basic IPC functionality using wxServer, wxClient and wxConnection.

Added the -blockamount command line option for an example of usage.


git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@56 1a98c847-1fd6-4fd8-948a-caf3550aa51b
This commit is contained in:
sirius-m
2010-02-04 15:31:46 +00:00
parent 53d508072b
commit 082e725b33
7 changed files with 101 additions and 8 deletions

29
ui.cpp
View File

@@ -21,6 +21,7 @@ DEFINE_EVENT_TYPE(wxEVT_REPLY3)
CMainFrame* pframeMain = NULL;
CMyTaskBarIcon* ptaskbaricon = NULL;
CServer* pserver = NULL;
map<string, string> mapAddressBook;
bool fRandSendTest = false;
void RandSend();
@@ -384,6 +385,8 @@ CMainFrame::~CMainFrame()
pframeMain = NULL;
delete ptaskbaricon;
ptaskbaricon = NULL;
delete pserver;
pserver = NULL;
}
void ExitTimeout(void* parg)
@@ -1687,8 +1690,8 @@ CAboutDialog::CAboutDialog(wxWindow* parent) : CAboutDialogBase(parent)
#if !wxUSE_UNICODE
// Workaround until upgrade to wxWidgets supporting UTF-8
wxString str = m_staticTextMain->GetLabel();
if (str.Find('<EFBFBD>') != wxNOT_FOUND)
str.Remove(str.Find('<EFBFBD>'), 1);
if (str.Find('<EFBFBD>') != wxNOT_FOUND)
str.Remove(str.Find('<EFBFBD>'), 1);
m_staticTextMain->SetLabel(str);
#endif
#ifndef __WXMSW__
@@ -3548,6 +3551,26 @@ bool CMyApp::OnInit2()
return false;
}
if (mapArgs.count("-blockamount")) {
CClient client;
wxString hostname = "localhost";
wxString server = GetDataDir() + "service";
CClientConnection * pconnection = (CClientConnection *)client.MakeConnection(hostname, server, "ipc test");
string output = "";
if (pconnection) {
char * pbuffer = (char *)pconnection->Request("blockamount");
while (*pbuffer != '\n') {
output += *pbuffer;
pbuffer++;
}
}
else {
output = "Cannot access Bitcoin. Are you sure the program is running?\n";
}
fprintf(stderr, "%s", output.c_str());
return false;
}
if (mapArgs.count("-datadir"))
strlcpy(pszSetDataDir, mapArgs["-datadir"].c_str(), sizeof(pszSetDataDir));
@@ -3755,6 +3778,8 @@ bool CMyApp::OnInit2()
if (fFirstRun)
SetStartOnSystemStartup(true);
pserver = new CServer;
pserver->Create(GetDataDir() + "service");
//
// Tests