]> git.saurik.com Git - wxWidgets.git/commitdiff
log Unicode data correctly, extract the logging code in MyConnectionBase class instea...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 10 Feb 2008 23:43:39 +0000 (23:43 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 10 Feb 2008 23:43:39 +0000 (23:43 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51643 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/ipc/baseclient.cpp
samples/ipc/baseserver.cpp
samples/ipc/client.cpp
samples/ipc/client.h
samples/ipc/server.cpp
samples/ipc/server.h

index 91c887b70973aeb31d3f2f459f06a014a798b1d9..8120162de3d357d2ff92a18f14c62a208b733cbf 100644 (file)
@@ -33,6 +33,8 @@
 // we're using TCP/IP or real DDE.
 #include "ipcsetup.h"
 
+#include "connection.h"
+
 #include "wx/timer.h"
 #include "wx/datetime.h"
 
@@ -43,7 +45,6 @@
 
 // Define a new application
 class MyClient;
-class MyConnection;
 
 class MyApp: public wxApp
 {
@@ -55,20 +56,14 @@ protected:
     MyClient         *m_client;
 };
 
-class MyConnection: public wxConnection
+class MyConnection : public MyConnectionBase
 {
 public:
-    MyConnection();
-    virtual ~MyConnection();
     virtual bool DoExecute(const void *data, size_t size, wxIPCFormat format);
     virtual const void *Request(const wxString& item, size_t *size = NULL, wxIPCFormat format = wxIPC_TEXT);
     virtual bool DoPoke(const wxString& item, const void* data, size_t size, wxIPCFormat format);
     virtual bool OnAdvise(const wxString& topic, const wxString& item, const void *data, size_t size, wxIPCFormat format);
     virtual bool OnDisconnect();
-
-protected:
-    void Log(const wxString& command, const wxString& topic,
-        const wxString& item, const void *data, size_t size, wxIPCFormat format);
 };
 
 class MyClient: public wxClient, public wxTimer
@@ -194,12 +189,11 @@ void MyClient::Notify()
             wxString s = _T("Date");
             m_connection->Execute(s);
             m_connection->Execute((const char *)s.c_str(), s.length() + 1);
-#if wxUSE_DDE_FOR_IPC
-            wxLogMessage(_T("DDE Execute can only be used to send text strings, not arbitrary data.\nThe type argument will be ignored, text truncated, converted to Unicode and null terminated."));
-#endif
             char bytes[3];
-            bytes[0] = '1'; bytes[1] = '2'; bytes[2] = '3';
-            m_connection->Execute(bytes, 3, wxIPC_PRIVATE);
+            bytes[0] = '1';
+            bytes[1] = '2';
+            bytes[2] = '3';
+            m_connection->Execute(bytes, WXSIZEOF(bytes));
             break;
         }
         case 3:
@@ -220,55 +214,6 @@ void MyClient::Notify()
 // MyConnection
 // ----------------------------------------------------------------------------
 
-MyConnection::MyConnection()
-{
-}
-
-MyConnection::~MyConnection()
-{
-}
-
-void MyConnection::Log(const wxString& command, const wxString& topic,
-    const wxString& item, const void *data, size_t size, wxIPCFormat format)
-{
-    wxString s;
-    if (topic.IsEmpty() && item.IsEmpty())
-        s.Printf(_T("%s("), command.c_str());
-    else if (topic.IsEmpty())
-        s.Printf(_T("%s(item=\"%s\","), command.c_str(), item.c_str());
-    else if (item.IsEmpty())
-        s.Printf(_T("%s(topic=\"%s\","), command.c_str(), topic.c_str());
-    else
-        s.Printf(_T("%s(topic=\"%s\",item=\"%s\","), command.c_str(), topic.c_str(), item.c_str());
-
-    switch (format)
-    {
-      case wxIPC_TEXT:
-      case wxIPC_UTF8TEXT:
-#if !wxUSE_UNICODE || wxUSE_UNICODE_UTF8
-        wxLogMessage(_T("%s\"%s\",%d)"), s.c_str(), data, size);
-#else
-        wxLogMessage(_T("%s\"%s\",%d)"), s.c_str(), wxConvUTF8.cMB2WC((const char*)data), size);
-#endif
-        break;
-      case wxIPC_PRIVATE:
-        if (size == 3)
-        {
-            char *bytes = (char *)data;
-            wxLogMessage(_T("%s'%c%c%c',%d)"), s.c_str(), bytes[0], bytes[1], bytes[2], size);
-        }
-        else
-            wxLogMessage(_T("%s...,%d)"), s.c_str(), size);
-        break;
-      case wxIPC_INVALID:
-        wxLogMessage(_T("%s[invalid data],%d)"), s.c_str(), size);
-        break;
-      default:
-        wxLogMessage(_T("%s[unknown data],%d)"), s.c_str(), size);
-        break;
-    }
-}
-
 bool MyConnection::OnAdvise(const wxString& topic, const wxString& item, const void *data,
     size_t size, wxIPCFormat format)
 {
index ee900de13fa2ca7fa9fccd66d174238202950e00..913704073b10523cf41c310cb4d51c095ca177e4 100644 (file)
@@ -33,6 +33,8 @@
 // we're using TCP/IP or real DDE.
 #include "ipcsetup.h"
 
+#include "connection.h"
+
 #include "wx/timer.h"
 #include "wx/datetime.h"
 
@@ -42,7 +44,6 @@
 
 // Define a new application
 class MyServer;
-class MyConnection;
 
 class MyApp : public wxApp
 {
@@ -56,12 +57,9 @@ protected:
 
 DECLARE_APP(MyApp)
 
-class MyConnection : public wxConnection, public wxTimer
+class MyConnection : public MyConnectionBase, public wxTimer
 {
 public:
-    MyConnection();
-    virtual ~MyConnection();
-
     virtual bool Disconnect() { return wxConnection::Disconnect(); }
     virtual bool OnExecute(const wxString& topic, const void *data, size_t size, wxIPCFormat format);
     virtual const void *OnRequest(const wxString& topic, const wxString& item, size_t *size, wxIPCFormat format);
@@ -72,10 +70,6 @@ public:
     virtual bool OnDisconnect();
     virtual void Notify();
 
-protected:
-    void Log(const wxString& command, const wxString& topic, const wxString& item, const void *data, size_t size, wxIPCFormat format);
-
-public:
     wxString        m_sAdvise;
 
 protected:
@@ -182,14 +176,6 @@ void MyServer::Disconnect()
 // MyConnection
 // ----------------------------------------------------------------------------
 
-MyConnection::MyConnection()
-{
-}
-
-MyConnection::~MyConnection()
-{
-}
-
 bool MyConnection::OnExecute(const wxString& topic,
     const void *data, size_t size, wxIPCFormat format)
 {
@@ -275,47 +261,6 @@ void MyConnection::Notify()
     }
 }
 
-void MyConnection::Log(const wxString& command, const wxString& topic,
-    const wxString& item, const void *data, size_t size, wxIPCFormat format)
-{
-    wxString s;
-    if (topic.IsEmpty() && item.IsEmpty())
-        s.Printf(_T("%s("), command.c_str());
-    else if (topic.IsEmpty())
-        s.Printf(_T("%s(\"%s\","), command.c_str(), item.c_str());
-    else if (item.IsEmpty())
-        s.Printf(_T("%s(\"%s\","), command.c_str(), topic.c_str());
-    else
-        s.Printf(_T("%s(\"%s\",\"%s\","), command.c_str(), topic.c_str(), item.c_str());
-
-    switch (format)
-    {
-      case wxIPC_TEXT:
-      case wxIPC_UTF8TEXT:
-#if !wxUSE_UNICODE || wxUSE_UNICODE_UTF8
-        wxLogMessage(_T("%s\"%s\",%d)"), s.c_str(), data, size);
-#else
-        wxLogMessage(_T("%s\"%s\",%d)"), s.c_str(), wxConvUTF8.cMB2WC((const char*)data), size);
-#endif
-        break;
-      case wxIPC_PRIVATE:
-        if (size == 3)
-        {
-            char *bytes = (char *)data;
-            wxLogMessage(_T("%s'%c%c%c',%d)"), s.c_str(), bytes[0], bytes[1], bytes[2], size);
-        }
-        else
-            wxLogMessage(_T("%s...,%d)"), s.c_str(), size);
-        break;
-      case wxIPC_INVALID:
-        wxLogMessage(_T("%s[invalid data],%d)"), s.c_str(), size);
-        break;
-      default:
-        wxLogMessage(_T("%s[unknown data],%d)"), s.c_str(), size);
-        break;
-    }
-}
-
 bool MyConnection::DoAdvise(const wxString& item, const void *data, size_t size, wxIPCFormat format)
 {
     Log(_T("Advise"), _T(""), item, data, size, format);
index 5748d49b3e03728c0d9e03300aa316d9864ad688..b13587b74aa570e984d5acbeb90c65bdaafd3ee7 100644 (file)
@@ -339,12 +339,11 @@ void MyFrame::OnExecute(wxCommandEvent& WXUNUSED(event))
 
         m_client->GetConnection()->Execute(s);
         m_client->GetConnection()->Execute((const char *)s.c_str(), s.length() + 1);
-#if wxUSE_DDE_FOR_IPC
-        wxLogMessage(_T("DDE Execute can only be used to send text strings, not arbitrary data.\nThe type argument will be ignored, text truncated, converted to Unicode and null terminated."));
-#endif
         char bytes[3];
-        bytes[0] = '1'; bytes[1] = '2'; bytes[2] = '3';
-        m_client->GetConnection()->Execute(bytes, 3, wxIPC_PRIVATE);
+        bytes[0] = '1';
+        bytes[1] = '2';
+        bytes[2] = '3';
+        m_client->GetConnection()->Execute(bytes, WXSIZEOF(bytes));
     }
 }
 
@@ -416,47 +415,6 @@ MyClient::~MyClient()
 // MyConnection
 // ----------------------------------------------------------------------------
 
-void MyConnection::Log(const wxString& command, const wxString& topic,
-    const wxString& item, const void *data, size_t size, wxIPCFormat format)
-{
-    wxString s;
-    if (topic.IsEmpty() && item.IsEmpty())
-        s.Printf(_T("%s("), command.c_str());
-    else if (topic.IsEmpty())
-        s.Printf(_T("%s(item=\"%s\","), command.c_str(), item.c_str());
-    else if (item.IsEmpty())
-        s.Printf(_T("%s(topic=\"%s\","), command.c_str(), topic.c_str());
-    else
-        s.Printf(_T("%s(topic=\"%s\",item=\"%s\","), command.c_str(), topic.c_str(), item.c_str());
-
-    switch (format)
-    {
-      case wxIPC_TEXT:
-      case wxIPC_UTF8TEXT:
-#if !wxUSE_UNICODE || wxUSE_UNICODE_UTF8
-        wxLogMessage(_T("%s\"%s\",%d)"), s.c_str(), data, size);
-#else
-        wxLogMessage(_T("%s\"%s\",%d)"), s.c_str(), wxConvUTF8.cMB2WC((const char*)data), size);
-#endif
-        break;
-      case wxIPC_PRIVATE:
-        if (size == 3)
-        {
-            char *bytes = (char *)data;
-            wxLogMessage(_T("%s'%c%c%c',%d)"), s.c_str(), bytes[0], bytes[1], bytes[2], size);
-        }
-        else
-            wxLogMessage(_T("%s...,%d)"), s.c_str(), size);
-        break;
-      case wxIPC_INVALID:
-        wxLogMessage(_T("%s[invalid data],%d)"), s.c_str(), size);
-        break;
-      default:
-        wxLogMessage(_T("%s[unknown data],%d)"), s.c_str(), size);
-        break;
-    }
-}
-
 bool MyConnection::OnAdvise(const wxString& topic, const wxString& item, const void *data,
     size_t size, wxIPCFormat format)
 {
index 8f9168e312c8d46b2827b87f2ea91d2d5deb9ae1..b4a3ac051539b45e62ff3e0d95b556d8ad7e6b39 100644 (file)
@@ -9,6 +9,8 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+#include "connection.h"
+
 #define ID_START         10000
 #define ID_DISCONNECT    10001
 #define ID_STARTADVISE    10002
@@ -23,7 +25,6 @@
 
 // Define a new application
 class MyClient;
-class MyConnection;
 class MyFrame;
 
 class MyApp: public wxApp
@@ -78,7 +79,7 @@ protected:
     DECLARE_EVENT_TABLE()
 };
 
-class MyConnection: public wxConnection
+class MyConnection : public MyConnectionBase
 {
 public:
     virtual bool DoExecute(const void *data, size_t size, wxIPCFormat format);
@@ -86,9 +87,6 @@ public:
     virtual bool DoPoke(const wxString& item, const void* data, size_t size, wxIPCFormat format);
     virtual bool OnAdvise(const wxString& topic, const wxString& item, const void *data, size_t size, wxIPCFormat format);
     virtual bool OnDisconnect();
-protected:
-    void Log(const wxString& command, const wxString& topic,
-        const wxString& item, const void *data, size_t size, wxIPCFormat format);
 };
 
 class MyClient: public wxClient
index 691798278f4f25eb75a6e90f68fe3afed239d2b9..6d97919bbb5cfb1335a139be607ac5b5d7f09f96 100644 (file)
@@ -304,15 +304,6 @@ void MyServer::Advise()
 // MyConnection
 // ----------------------------------------------------------------------------
 
-MyConnection::MyConnection()
-            : wxConnection()
-{
-}
-
-MyConnection::~MyConnection()
-{
-}
-
 bool MyConnection::OnExecute(const wxString& topic,
     const void *data, size_t size, wxIPCFormat format)
 {
@@ -378,47 +369,6 @@ bool MyConnection::OnStopAdvise(const wxString& topic,
     return true;
 }
 
-void MyConnection::Log(const wxString& command, const wxString& topic,
-    const wxString& item, const void *data, size_t size, wxIPCFormat format)
-{
-    wxString s;
-    if (topic.IsEmpty() && item.IsEmpty())
-        s.Printf(_T("%s("), command.c_str());
-    else if (topic.IsEmpty())
-        s.Printf(_T("%s(\"%s\","), command.c_str(), item.c_str());
-    else if (item.IsEmpty())
-        s.Printf(_T("%s(\"%s\","), command.c_str(), topic.c_str());
-    else
-        s.Printf(_T("%s(\"%s\",\"%s\","), command.c_str(), topic.c_str(), item.c_str());
-
-    switch (format)
-    {
-      case wxIPC_TEXT:
-      case wxIPC_UTF8TEXT:
-#if !wxUSE_UNICODE || wxUSE_UNICODE_UTF8
-        wxLogMessage(_T("%s\"%s\",%d)"), s.c_str(), data, size);
-#else
-        wxLogMessage(_T("%s\"%s\",%d)"), s.c_str(), wxConvUTF8.cMB2WC((const char*)data), size);
-#endif
-        break;
-      case wxIPC_PRIVATE:
-        if (size == 3)
-        {
-            char *bytes = (char *)data;
-            wxLogMessage(_T("%s'%c%c%c',%d)"), s.c_str(), bytes[0], bytes[1], bytes[2], size);
-        }
-        else
-            wxLogMessage(_T("%s...,%d)"), s.c_str(), size);
-        break;
-      case wxIPC_INVALID:
-        wxLogMessage(_T("%s[invalid data],%d)"), s.c_str(), size);
-        break;
-      default:
-        wxLogMessage(_T("%s[unknown data],%d)"), s.c_str(), size);
-        break;
-    }
-}
-
 bool MyConnection::DoAdvise(const wxString& item, const void *data, size_t size, wxIPCFormat format)
 {
     Log(_T("Advise"), _T(""), item, data, size, format);
index c0450f99c42bdbfcf8df1191e3a41725f133b622..0c0238f1ebdd5df2a5ac1349ea9c26fc5d8662d0 100644 (file)
@@ -9,6 +9,8 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+#include "connection.h"
+
 #define ID_START         10000
 #define ID_DISCONNECT    10001
 #define ID_ADVISE         10002
@@ -17,7 +19,6 @@
 
 // Define a new application
 class MyServer;
-class MyConnection;
 class MyFrame;
 
 class MyApp : public wxApp
@@ -63,12 +64,9 @@ protected:
     DECLARE_EVENT_TABLE()
 };
 
-class MyConnection : public wxConnection
+class MyConnection : public MyConnectionBase
 {
 public:
-    MyConnection();
-    ~MyConnection();
-
     virtual bool OnExecute(const wxString& topic, const void *data, size_t size, wxIPCFormat format);
     virtual const void *OnRequest(const wxString& topic, const wxString& item, size_t *size, wxIPCFormat format);
     virtual bool OnPoke(const wxString& topic, const wxString& item, const void *data, size_t size, wxIPCFormat format);
@@ -76,10 +74,9 @@ public:
     virtual bool OnStopAdvise(const wxString& topic, const wxString& item);
     virtual bool DoAdvise(const wxString& item, const void *data, size_t size, wxIPCFormat format);
     virtual bool OnDisconnect();
-protected:
-    void Log(const wxString& command, const wxString& topic, const wxString& item, const void *data, size_t size, wxIPCFormat format);
-public:
+
     wxString        m_sAdvise;
+
 protected:
     wxString        m_sRequestDate;
     char            m_achRequestBytes[3];