X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9d86099269660fb9eab4d146e625cb2a5fff9c14..a0f4d36895556e3054e2256cb5f1787cc9fcf75c:/samples/ipc/server.cpp diff --git a/samples/ipc/server.cpp b/samples/ipc/server.cpp index bf1aa5a70a..6d97919bbb 100644 --- a/samples/ipc/server.cpp +++ b/samples/ipc/server.cpp @@ -66,6 +66,9 @@ END_EVENT_TABLE() bool MyApp::OnInit() { + if ( !wxApp::OnInit() ) + return false; + // Create the main frame window m_frame = new MyFrame(NULL, _T("Server")); m_frame->Show(true); @@ -165,7 +168,7 @@ void MyFrame::Enable() GetStart()->Enable(m_server == NULL); GetServername()->Enable(m_server == NULL); GetAdvise()->Enable(m_server && m_server->CanAdvise()); - GetDisconnect()->Enable(m_server && m_server->IsConnected() != NULL); + GetDisconnect()->Enable(m_server && m_server->IsConnected()); } void MyFrame::OnClose(wxCloseEvent& event) @@ -252,7 +255,7 @@ MyServer::~MyServer() wxConnectionBase *MyServer::OnAcceptConnection(const wxString& topic) { - wxLogMessage(_T("OnAcceptConnection(\"%s\")"), topic); + wxLogMessage(_T("OnAcceptConnection(\"%s\")"), topic.c_str()); if ( topic == IPC_TOPIC ) { @@ -282,18 +285,18 @@ void MyServer::Advise() if (CanAdvise()) { wxString s = wxDateTime::Now().Format(); - m_connection->Advise(m_connection->m_sAdvise, (wxChar *)s.c_str()); + m_connection->Advise(m_connection->m_sAdvise, s); s = wxDateTime::Now().FormatTime() + _T(" ") + wxDateTime::Now().FormatDate(); - m_connection->Advise(m_connection->m_sAdvise, (wxChar *)s.c_str(), (s.Length() + 1) * sizeof(wxChar)); + m_connection->Advise(m_connection->m_sAdvise, (const char *)s.c_str(), s.Length() + 1); #if wxUSE_DDE_FOR_IPC wxLogMessage(_T("DDE Advise type argument cannot be wxIPC_PRIVATE. The client will receive it as wxIPC_TEXT, and receive the correct no of bytes, but not print a correct log entry.")); #endif char bytes[3]; bytes[0] = '1'; bytes[1] = '2'; bytes[2] = '3'; - m_connection->Advise(m_connection->m_sAdvise, (wxChar *)bytes, 3, wxIPC_PRIVATE); + m_connection->Advise(m_connection->m_sAdvise, bytes, 3, wxIPC_PRIVATE); // this works, but the log treats it as a string now -// m_connection->Advise(m_connection->m_sAdvise, (wxChar *)bytes, 3, wxIPC_TEXT ); +// m_connection->Advise(m_connection->m_sAdvise, bytes, 3, wxIPC_TEXT ); } } @@ -301,48 +304,39 @@ void MyServer::Advise() // MyConnection // ---------------------------------------------------------------------------- -MyConnection::MyConnection() - : wxConnection() -{ -} - -MyConnection::~MyConnection() -{ -} - bool MyConnection::OnExecute(const wxString& topic, - wxChar *data, int size, wxIPCFormat format) + const void *data, size_t size, wxIPCFormat format) { Log(_T("OnExecute"), topic, _T(""), data, size, format); return true; } bool MyConnection::OnPoke(const wxString& topic, - const wxString& item, wxChar *data, int size, wxIPCFormat format) + const wxString& item, const void *data, size_t size, wxIPCFormat format) { Log(_T("OnPoke"), topic, item, data, size, format); return wxConnection::OnPoke(topic, item, data, size, format); } -wxChar *MyConnection::OnRequest(const wxString& topic, - const wxString& item, int * size, wxIPCFormat format) +const void *MyConnection::OnRequest(const wxString& topic, + const wxString& item, size_t *size, wxIPCFormat format) { - wxChar *data; + const void *data; if (item == _T("Date")) { m_sRequestDate = wxDateTime::Now().Format(); - data = (wxChar *)m_sRequestDate.c_str(); - *size = -1; + data = m_sRequestDate.c_str(); + *size = wxNO_LEN; } else if (item == _T("Date+len")) { m_sRequestDate = wxDateTime::Now().FormatTime() + _T(" ") + wxDateTime::Now().FormatDate(); - data = (wxChar *)m_sRequestDate.c_str(); - *size = (m_sRequestDate.Length() + 1) * sizeof(wxChar); + data = m_sRequestDate.c_str(); + *size = m_sRequestDate.Length() + 1; } else if (item == _T("bytes[3]")) { - data = (wxChar *)m_achRequestBytes; + data = m_achRequestBytes; m_achRequestBytes[0] = '1'; m_achRequestBytes[1] = '2'; m_achRequestBytes[2] = '3'; *size = 3; } @@ -351,14 +345,14 @@ wxChar *MyConnection::OnRequest(const wxString& topic, data = NULL; *size = 0; } - Log(_T("OnRequest"), topic, item, data, *size, format); + Log(_T("OnRequest"), topic, item, data, *size, format); return data; } bool MyConnection::OnStartAdvise(const wxString& topic, const wxString& item) { - wxLogMessage(_T("OnStartAdvise(\"%s\",\"%s\")"), topic, item); + wxLogMessage(_T("OnStartAdvise(\"%s\",\"%s\")"), topic.c_str(), item.c_str()); wxLogMessage(_T("Returning true")); m_sAdvise = item; wxGetApp().GetFrame()->Enable(); @@ -368,46 +362,17 @@ bool MyConnection::OnStartAdvise(const wxString& topic, bool MyConnection::OnStopAdvise(const wxString& topic, const wxString& item) { - wxLogMessage(_T("OnStopAdvise(\"%s\",\"%s\")"), topic, item); + wxLogMessage(_T("OnStopAdvise(\"%s\",\"%s\")"), topic.c_str(), item.c_str()); wxLogMessage(_T("Returning true")); m_sAdvise.Empty(); wxGetApp().GetFrame()->Enable(); return true; } -void MyConnection::Log(const wxString& command, const wxString& topic, - const wxString& item, wxChar *data, int size, wxIPCFormat format) -{ - wxString s; - if (topic.IsEmpty() && item.IsEmpty()) - s.Printf(_T("%s("), command); - else if (topic.IsEmpty()) - s.Printf(_T("%s(\"%s\","), command, item); - else if (item.IsEmpty()) - s.Printf(_T("%s(\"%s\","), command, topic); - else - s.Printf(_T("%s(\"%s\",\"%s\","), command, topic, item); - - if (format == wxIPC_TEXT || format == wxIPC_UNICODETEXT) - wxLogMessage(_T("%s\"%s\",%d)"), s, data, size); - else if (format == wxIPC_PRIVATE) - { - if (size == 3) - { - char *bytes = (char *)data; - wxLogMessage(_T("%s'%c%c%c',%d)"), s, bytes[0], bytes[1], bytes[2], size); - } - else - wxLogMessage(_T("%s...,%d)"), s, size); - } - else if (format == wxIPC_INVALID) - wxLogMessage(_T("%s[invalid data],%d)"), s, size); -} - -bool MyConnection::Advise(const wxString& item, wxChar *data, int size, wxIPCFormat format) +bool MyConnection::DoAdvise(const wxString& item, const void *data, size_t size, wxIPCFormat format) { Log(_T("Advise"), _T(""), item, data, size, format); - return wxConnection::Advise(item, data, size, format); + return wxConnection::DoAdvise(item, data, size, format); } bool MyConnection::OnDisconnect()