added wx/ipc.h and used/documented it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
717e51d850
commit
d5172a588c
@ -864,6 +864,7 @@ imagjpeg.h WXH
|
||||
imaglist.h WXH
|
||||
intl.h WXH Base
|
||||
ioswrap.h WXH Base
|
||||
ipc.h WXH Base
|
||||
ipcbase.h WXH Base
|
||||
isql.h WXH Base
|
||||
isqlext.h WXH Base
|
||||
|
@ -20,6 +20,16 @@ for programming popular Internet protocols.
|
||||
|
||||
Further information on these classes will be available in due course.
|
||||
|
||||
Notice that by including {\tt <wx/ipc.h>} you may define convnient synonyms for
|
||||
the IPC classes: {\tt wxServer} for either {\tt wxDDEServer} or
|
||||
{\tt wxTCPServer} depending on whether DDE-based or socket-based implementation
|
||||
is used and the same thing for {\tt wxClient} and {\tt wxConnection}. By
|
||||
default, DDE implementation is used under Windows. If you want to use IPC
|
||||
between the different workstations you should define {\tt wxUSE\_DDE\_FOR\_IPC}
|
||||
as $0$ before including this header -- this will force using TCP/IP
|
||||
implementation even under Windows.
|
||||
|
||||
|
||||
wxWindows has a high-level protocol based on Windows DDE.
|
||||
There are two implementations of this DDE-like protocol:
|
||||
one using real DDE running on Windows only, and another using TCP/IP (sockets) that runs
|
||||
|
41
include/wx/ipc.h
Normal file
41
include/wx/ipc.h
Normal file
@ -0,0 +1,41 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/ipc.h
|
||||
// Purpose: wrapper around different wxIPC classes implementations
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified by:
|
||||
// Created: 15.04.02
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) 2002 Vadim Zeitlin
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Set wxUSE_DDE_FOR_IPC to 1 to use DDE for IPC under Windows. If it is set to
|
||||
// 0, or if the platform is not Windows, use TCP/IP for IPC implementation
|
||||
|
||||
#if !defined(wxUSE_DDE_FOR_IPC)
|
||||
#ifdef __WXMSW__
|
||||
#define wxUSE_DDE_FOR_IPC 1
|
||||
#else
|
||||
#define wxUSE_DDE_FOR_IPC 0
|
||||
#endif
|
||||
#endif // !defined(wxUSE_DDE_FOR_IPC)
|
||||
|
||||
#if !defined(__WINDOWS__)
|
||||
#undef wxUSE_DDE_FOR_IPC
|
||||
#define wxUSE_DDE_FOR_IPC 0
|
||||
#endif
|
||||
|
||||
#if wxUSE_DDE_FOR_IPC
|
||||
#define wxConnection wxDDEConnection
|
||||
#define wxServer wxDDEServer
|
||||
#define wxClient wxDDEClient
|
||||
|
||||
#include "wx/dde.h"
|
||||
#else // !wxUSE_DDE_FOR_IPC
|
||||
#define wxConnection wxTCPConnection
|
||||
#define wxServer wxTCPServer
|
||||
#define wxClient wxTCPClient
|
||||
|
||||
#include "wx/sckipc.h"
|
||||
#endif // wxUSE_DDE_FOR_IPC/!wxUSE_DDE_FOR_IPC
|
||||
|
@ -75,7 +75,7 @@ MyClient *my_client;
|
||||
bool MyApp::OnInit()
|
||||
{
|
||||
// service name (DDE classes) or port number (TCP/IP based classes)
|
||||
wxString service = "4242";
|
||||
wxString service = IPC_SERVICE;
|
||||
|
||||
// ignored under DDE, host name in TCP/IP based classes
|
||||
wxString hostName = "localhost";
|
||||
@ -91,7 +91,8 @@ bool MyApp::OnInit()
|
||||
// suppress the log messages from MakeConnection()
|
||||
{
|
||||
wxLogNull nolog;
|
||||
the_connection = (MyConnection *)my_client->MakeConnection(hostName, service, "IPC TEST");
|
||||
the_connection = (MyConnection *)
|
||||
my_client->MakeConnection(hostName, service, IPC_TOPIC);
|
||||
|
||||
while ( !the_connection )
|
||||
{
|
||||
@ -107,7 +108,7 @@ bool MyApp::OnInit()
|
||||
}
|
||||
}
|
||||
|
||||
if (!the_connection->StartAdvise("Item"))
|
||||
if (!the_connection->StartAdvise(IPC_ADVISE_NAME))
|
||||
wxMessageBox("StartAdvise failed", "Client Demo Error");
|
||||
|
||||
// Create the main frame window
|
||||
|
@ -9,34 +9,16 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
* Adjust this before compiling, to switch between real DDE and TCP/IP
|
||||
* implementations.
|
||||
*/
|
||||
// You may set this to 0 to prevent DDE from being used even under Windows
|
||||
//#define wxUSE_DDE_FOR_IPC 0
|
||||
|
||||
// If 1, use real DDE. If 0, use TCP/IP
|
||||
#include <wx/ipc.h>
|
||||
|
||||
#ifdef __WXMSW__
|
||||
#define wxUSE_DDE_FOR_SAMPLE 0
|
||||
#else
|
||||
#define wxUSE_DDE_FOR_SAMPLE 0
|
||||
#endif
|
||||
// the default service name
|
||||
#define IPC_SERVICE "4242"
|
||||
|
||||
#if wxUSE_DDE_FOR_SAMPLE
|
||||
|
||||
#define wxConnection wxDDEConnection
|
||||
#define wxServer wxDDEServer
|
||||
#define wxClient wxDDEClient
|
||||
|
||||
#include <wx/dde.h>
|
||||
|
||||
#else
|
||||
|
||||
#define wxConnection wxTCPConnection
|
||||
#define wxServer wxTCPServer
|
||||
#define wxClient wxTCPClient
|
||||
|
||||
#include <wx/sckipc.h>
|
||||
|
||||
#endif
|
||||
// the IPC topic
|
||||
#define IPC_TOPIC "IPC TEST"
|
||||
|
||||
// the name of the item we're being advised about
|
||||
#define IPC_ADVISE_NAME "Item"
|
||||
|
@ -74,7 +74,7 @@ bool MyApp::OnInit()
|
||||
(new MyFrame(NULL, "Server"))->Show(TRUE);
|
||||
|
||||
// service name (DDE classes) or port number (TCP/IP based classes)
|
||||
wxString service = "4242";
|
||||
wxString service = IPC_SERVICE;
|
||||
|
||||
if (argc > 1)
|
||||
service = argv[1];
|
||||
@ -136,7 +136,7 @@ void MyFrame::OnListBoxClick(wxCommandEvent& WXUNUSED(event))
|
||||
wxString value = listBox->GetStringSelection();
|
||||
if (the_connection)
|
||||
{
|
||||
the_connection->Advise("Item", (wxChar *)value.c_str());
|
||||
the_connection->Advise(IPC_ADVISE_NAME, (wxChar *)value.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -173,10 +173,11 @@ void IPCDialogBox::OnQuit(wxCommandEvent& event)
|
||||
|
||||
wxConnectionBase *MyServer::OnAcceptConnection(const wxString& topic)
|
||||
{
|
||||
if (strcmp(topic, "STDIO") != 0 && strcmp(topic, "IPC TEST") == 0)
|
||||
if ( topic == IPC_TOPIC )
|
||||
return new MyConnection(ipc_buffer, WXSIZEOF(ipc_buffer));
|
||||
else
|
||||
return NULL;
|
||||
|
||||
// unknown topic
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user