1999-01-27 05:01:14 -05:00
/////////////////////////////////////////////////////////////////////////////
// Name: client.cpp
// Purpose: DDE sample: client
// Author: Julian Smart
2005-09-11 14:31:34 -04:00
// Modified by: Jurgen Doornik
1999-01-27 05:01:14 -05:00
// Created: 25/01/99
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
2000-01-15 17:34:29 -05:00
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
1999-01-27 05:01:14 -05:00
// For compilers that support precompilation, includes "wx.h".
# include "wx/wxprec.h"
# ifdef __BORLANDC__
2000-01-15 17:34:29 -05:00
# pragma hdrstop
1999-01-27 05:01:14 -05:00
# endif
# ifndef WX_PRECOMP
2000-01-15 17:34:29 -05:00
# include "wx/wx.h"
1999-01-27 05:01:14 -05:00
# endif
// Settings common to both executables: determines whether
// we're using TCP/IP or real DDE.
2005-09-11 14:31:34 -04:00
# include "ipcsetup.h"
1999-01-27 05:01:14 -05:00
2002-03-21 05:32:18 -05:00
# if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__)
1999-01-27 05:01:14 -05:00
# include "mondrian.xpm"
# endif
2005-09-11 14:31:34 -04:00
# include "wx/datetime.h"
1999-01-27 05:01:14 -05:00
# include "client.h"
2000-01-15 17:34:29 -05:00
// ----------------------------------------------------------------------------
// wxWin macros
// ----------------------------------------------------------------------------
1999-01-27 05:01:14 -05:00
IMPLEMENT_APP ( MyApp )
2000-01-15 17:34:29 -05:00
BEGIN_EVENT_TABLE ( MyFrame , wxFrame )
2005-09-11 14:31:34 -04:00
EVT_MENU ( wxID_EXIT , MyFrame : : OnExit )
EVT_CLOSE ( MyFrame : : OnClose )
EVT_BUTTON ( ID_START , MyFrame : : OnStart )
EVT_CHOICE ( ID_SERVERNAME , MyFrame : : OnServername )
EVT_CHOICE ( ID_HOSTNAME , MyFrame : : OnHostname )
EVT_CHOICE ( ID_TOPIC , MyFrame : : OnTopic )
EVT_BUTTON ( ID_DISCONNECT , MyFrame : : OnDisconnect )
EVT_BUTTON ( ID_STARTADVISE , MyFrame : : OnStartAdvise )
EVT_BUTTON ( ID_STOPADVISE , MyFrame : : OnStopAdvise )
EVT_BUTTON ( ID_POKE , MyFrame : : OnPoke )
EVT_BUTTON ( ID_EXECUTE , MyFrame : : OnExecute )
EVT_BUTTON ( ID_REQUEST , MyFrame : : OnRequest )
2000-01-15 17:34:29 -05:00
END_EVENT_TABLE ( )
// ----------------------------------------------------------------------------
// globals
// ----------------------------------------------------------------------------
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// MyApp
// ----------------------------------------------------------------------------
1999-01-27 05:01:14 -05:00
// The `main program' equivalent, creating the windows and returning the
// main frame
bool MyApp : : OnInit ( )
{
2000-01-15 17:34:29 -05:00
// Create the main frame window
2005-09-11 14:31:34 -04:00
m_frame = new MyFrame ( NULL , _T ( " Client " ) ) ;
m_frame - > Show ( true ) ;
2000-01-05 20:21:26 -05:00
2004-06-02 13:03:20 -04:00
return true ;
1999-01-27 05:01:14 -05:00
}
int MyApp : : OnExit ( )
{
2002-03-17 09:16:03 -05:00
1999-01-27 05:01:14 -05:00
return 0 ;
}
// Define my frame constructor
2000-01-15 17:34:29 -05:00
MyFrame : : MyFrame ( wxFrame * frame , const wxString & title )
2005-09-11 14:31:34 -04:00
: wxFrame ( frame , wxID_ANY , title , wxDefaultPosition , wxSize ( 400 , 300 ) )
1999-01-27 05:01:14 -05:00
{
2000-01-15 17:34:29 -05:00
// Give it an icon
SetIcon ( wxICON ( mondrian ) ) ;
// Make a menubar
wxMenu * file_menu = new wxMenu ;
2005-09-11 14:31:34 -04:00
file_menu - > Append ( wxID_EXIT , _T ( " &Quit \t Ctrl-Q " ) ) ;
2000-01-15 17:34:29 -05:00
wxMenuBar * menu_bar = new wxMenuBar ;
2002-12-15 12:25:36 -05:00
menu_bar - > Append ( file_menu , _T ( " &File " ) ) ;
2000-01-15 17:34:29 -05:00
// Associate the menu bar with the frame
SetMenuBar ( menu_bar ) ;
2005-09-11 14:31:34 -04:00
// set a dialog background
SetBackgroundColour ( wxSystemSettings : : GetColour ( wxSYS_COLOUR_BTNFACE ) ) ;
// add the controls to the frame
wxString strs4 [ ] =
{
IPC_SERVICE , _T ( " ... " )
} ;
wxString strs5 [ ] =
{
IPC_HOST , _T ( " ... " )
} ;
wxString strs6 [ ] =
{
IPC_TOPIC , _T ( " ... " )
} ;
wxBoxSizer * item0 = new wxBoxSizer ( wxVERTICAL ) ;
wxBoxSizer * item1 = new wxBoxSizer ( wxHORIZONTAL ) ;
wxGridSizer * item2 = new wxGridSizer ( 4 , 0 , 0 ) ;
wxButton * item3 = new wxButton ( this , ID_START , wxT ( " Connect to server " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
item2 - > Add ( item3 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
wxChoice * item5 = new wxChoice ( this , ID_HOSTNAME , wxDefaultPosition , wxSize ( 100 , - 1 ) , 2 , strs5 , 0 ) ;
item2 - > Add ( item5 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
wxChoice * item4 = new wxChoice ( this , ID_SERVERNAME , wxDefaultPosition , wxSize ( 100 , - 1 ) , 2 , strs4 , 0 ) ;
item2 - > Add ( item4 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
wxChoice * item6 = new wxChoice ( this , ID_TOPIC , wxDefaultPosition , wxSize ( 100 , - 1 ) , 2 , strs6 , 0 ) ;
item2 - > Add ( item6 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
wxButton * item7 = new wxButton ( this , ID_DISCONNECT , wxT ( " Disconnect " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
item2 - > Add ( item7 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
wxButton * item8 = new wxButton ( this , ID_STARTADVISE , wxT ( " StartAdvise " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
item2 - > Add ( item8 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
wxButton * item9 = new wxButton ( this , ID_STOPADVISE , wxT ( " StopAdvise " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
item2 - > Add ( item9 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
wxButton * item10 = new wxButton ( this , ID_EXECUTE , wxT ( " Execute " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
item2 - > Add ( item10 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
wxButton * item11 = new wxButton ( this , ID_POKE , wxT ( " Poke " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
item2 - > Add ( item11 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
wxButton * item12 = new wxButton ( this , ID_REQUEST , wxT ( " Request " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
item2 - > Add ( item12 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
item2 - > Add ( 20 , 20 , 0 , wxALIGN_CENTER | wxALL , 5 ) ;
item1 - > Add ( item2 , 1 , wxALIGN_CENTER | wxALL , 5 ) ;
item0 - > Add ( item1 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
wxStaticBox * item14 = new wxStaticBox ( this , - 1 , wxT ( " Client log " ) ) ;
wxStaticBoxSizer * item13 = new wxStaticBoxSizer ( item14 , wxVERTICAL ) ;
wxTextCtrl * item15 = new wxTextCtrl ( this , ID_LOG , wxT ( " " ) , wxDefaultPosition , wxSize ( 500 , 140 ) , wxTE_MULTILINE ) ;
item13 - > Add ( item15 , 1 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
item0 - > Add ( item13 , 0 , wxGROW | wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
this - > SetSizer ( item0 ) ;
item0 - > SetSizeHints ( this ) ;
// status
m_client = NULL ;
GetServername ( ) - > SetSelection ( 0 ) ;
GetHostname ( ) - > SetSelection ( 0 ) ;
GetTopic ( ) - > SetSelection ( 0 ) ;
wxLogTextCtrl * logWindow = new wxLogTextCtrl ( GetLog ( ) ) ;
delete wxLog : : SetActiveTarget ( logWindow ) ;
wxLogMessage ( _T ( " Click on Connect to connect to the server " ) ) ;
Enable ( ) ;
}
void MyFrame : : Enable ( )
{
GetStart ( ) - > Enable ( m_client = = NULL ) ;
GetServername ( ) - > Enable ( m_client = = NULL ) ;
GetHostname ( ) - > Enable ( m_client = = NULL ) ;
GetTopic ( ) - > Enable ( m_client = = NULL ) ;
2005-11-27 09:03:36 -05:00
const bool isConnected = m_client - > IsConnected ( ) ;
GetDisconnect ( ) - > Enable ( m_client ! = NULL & & isConnected ) ;
GetStartAdvise ( ) - > Enable ( m_client ! = NULL & & isConnected ) ;
GetStopAdvise ( ) - > Enable ( m_client ! = NULL & & isConnected ) ;
GetExecute ( ) - > Enable ( m_client ! = NULL & & isConnected ) ;
GetPoke ( ) - > Enable ( m_client ! = NULL & & isConnected ) ;
GetRequest ( ) - > Enable ( m_client ! = NULL & & isConnected ) ;
2005-09-11 14:31:34 -04:00
}
void MyFrame : : OnClose ( wxCloseEvent & event )
{
if ( m_client )
{
delete m_client ;
m_client = NULL ;
}
event . Skip ( ) ;
}
void MyFrame : : OnExit ( wxCommandEvent & WXUNUSED ( event ) )
{
Close ( ) ;
}
void MyFrame : : OnStart ( wxCommandEvent & WXUNUSED ( event ) )
{
// Connect to the client
wxString servername = GetServername ( ) - > GetStringSelection ( ) ;
wxString hostname = GetHostname ( ) - > GetStringSelection ( ) ;
wxString topic = GetTopic ( ) - > GetStringSelection ( ) ;
m_client = new MyClient ;
bool retval = m_client - > Connect ( hostname , servername , topic ) ;
wxLogMessage ( _T ( " Client host= \" %s \" port= \" %s \" topic= \" %s \" %s " ) ,
hostname . c_str ( ) , servername . c_str ( ) , topic . c_str ( ) ,
retval ? _T ( " connected " ) : _T ( " failed to connect " ) ) ;
if ( ! retval )
{
delete m_client ;
m_client = NULL ;
}
Enable ( ) ;
}
void MyFrame : : OnServername ( wxCommandEvent & WXUNUSED ( event ) )
{
if ( GetServername ( ) - > GetStringSelection ( ) = = _T ( " ... " ) )
{
wxString s = wxGetTextFromUser ( _T ( " Specify the name of the server " ) ,
_T ( " Server Name " ) , _ ( " " ) , this ) ;
if ( ! s . IsEmpty ( ) & & s ! = IPC_SERVICE )
{
GetServername ( ) - > Insert ( s , 0 ) ;
GetServername ( ) - > SetSelection ( 0 ) ;
}
}
}
void MyFrame : : OnHostname ( wxCommandEvent & WXUNUSED ( event ) )
{
if ( GetHostname ( ) - > GetStringSelection ( ) = = _T ( " ... " ) )
{
wxString s = wxGetTextFromUser ( _T ( " Specify the name of the host (ignored under DDE) " ) ,
_T ( " Host Name " ) , _ ( " " ) , this ) ;
if ( ! s . IsEmpty ( ) & & s ! = IPC_HOST )
{
GetHostname ( ) - > Insert ( s , 0 ) ;
GetHostname ( ) - > SetSelection ( 0 ) ;
}
}
}
void MyFrame : : OnTopic ( wxCommandEvent & WXUNUSED ( event ) )
{
if ( GetTopic ( ) - > GetStringSelection ( ) = = _T ( " ... " ) )
{
wxString s = wxGetTextFromUser ( _T ( " Specify the name of the topic " ) ,
_T ( " Topic Name " ) , _ ( " " ) , this ) ;
if ( ! s . IsEmpty ( ) & & s ! = IPC_TOPIC )
{
GetTopic ( ) - > Insert ( s , 0 ) ;
GetTopic ( ) - > SetSelection ( 0 ) ;
}
}
}
void MyFrame : : OnDisconnect ( wxCommandEvent & WXUNUSED ( event ) )
{
Disconnect ( ) ;
}
void MyFrame : : Disconnect ( )
{
delete m_client ;
m_client = NULL ;
Enable ( ) ;
}
void MyFrame : : OnStartAdvise ( wxCommandEvent & WXUNUSED ( event ) )
{
m_client - > GetConnection ( ) - > StartAdvise ( _T ( " something " ) ) ;
}
void MyFrame : : OnStopAdvise ( wxCommandEvent & WXUNUSED ( event ) )
{
m_client - > GetConnection ( ) - > StopAdvise ( _T ( " something " ) ) ;
1999-01-27 05:01:14 -05:00
}
2003-09-09 16:24:34 -04:00
void MyFrame : : OnExecute ( wxCommandEvent & WXUNUSED ( event ) )
1999-01-27 05:01:14 -05:00
{
2005-09-11 14:31:34 -04:00
if ( m_client - > IsConnected ( ) )
{
wxString s = _T ( " Date " ) ;
m_client - > GetConnection ( ) - > Execute ( ( wxChar * ) s . c_str ( ) ) ;
m_client - > GetConnection ( ) - > Execute ( ( wxChar * ) s . c_str ( ) , ( s . Length ( ) + 1 ) * sizeof ( wxChar ) ) ;
# if wxUSE_DDE_FOR_IPC
wxLogMessage ( _T ( " DDE Execute can only be used to send text strings, not arbitrary data. \n The 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 ( ( wxChar * ) bytes , 3 , wxIPC_PRIVATE ) ;
}
1999-01-27 05:01:14 -05:00
}
2003-09-09 16:24:34 -04:00
void MyFrame : : OnPoke ( wxCommandEvent & WXUNUSED ( event ) )
1999-01-27 05:01:14 -05:00
{
2005-09-11 14:31:34 -04:00
if ( m_client - > IsConnected ( ) )
{
wxString s = wxDateTime : : Now ( ) . Format ( ) ;
m_client - > GetConnection ( ) - > Poke ( _T ( " Date " ) , ( wxChar * ) s . c_str ( ) ) ;
s = wxDateTime : : Now ( ) . FormatTime ( ) + _T ( " " ) + wxDateTime : : Now ( ) . FormatDate ( ) ;
m_client - > GetConnection ( ) - > Poke ( _T ( " Date " ) , ( wxChar * ) s . c_str ( ) , ( s . Length ( ) + 1 ) * sizeof ( wxChar ) ) ;
char bytes [ 3 ] ;
bytes [ 0 ] = ' 1 ' ; bytes [ 1 ] = ' 2 ' ; bytes [ 2 ] = ' 3 ' ;
m_client - > GetConnection ( ) - > Poke ( _T ( " bytes[3] " ) , ( wxChar * ) bytes , 3 , wxIPC_PRIVATE ) ;
}
1999-01-27 05:01:14 -05:00
}
2003-09-09 16:24:34 -04:00
void MyFrame : : OnRequest ( wxCommandEvent & WXUNUSED ( event ) )
1999-01-27 05:01:14 -05:00
{
2005-09-11 14:31:34 -04:00
if ( m_client - > IsConnected ( ) )
2000-01-15 17:34:29 -05:00
{
2005-09-11 14:31:34 -04:00
int size ;
m_client - > GetConnection ( ) - > Request ( _T ( " Date " ) ) ;
m_client - > GetConnection ( ) - > Request ( _T ( " Date+len " ) , & size ) ;
m_client - > GetConnection ( ) - > Request ( _T ( " bytes[3] " ) , & size , wxIPC_PRIVATE ) ;
2000-01-15 17:34:29 -05:00
}
1999-01-27 05:01:14 -05:00
}
2005-09-11 14:31:34 -04:00
// ----------------------------------------------------------------------------
// MyClient
// ----------------------------------------------------------------------------
MyClient : : MyClient ( ) : wxClient ( )
1999-01-27 05:01:14 -05:00
{
2005-09-11 14:31:34 -04:00
m_connection = NULL ;
}
bool MyClient : : Connect ( const wxString & sHost , const wxString & sService , const wxString & sTopic )
{
// suppress the log messages from MakeConnection()
wxLogNull nolog ;
m_connection = ( MyConnection * ) MakeConnection ( sHost , sService , sTopic ) ;
return m_connection ! = NULL ;
1999-01-27 05:01:14 -05:00
}
2000-01-15 17:34:29 -05:00
wxConnectionBase * MyClient : : OnMakeConnection ( )
1999-01-27 05:01:14 -05:00
{
2000-01-15 17:34:29 -05:00
return new MyConnection ;
1999-01-27 05:01:14 -05:00
}
2005-09-11 14:31:34 -04:00
void MyClient : : Disconnect ( )
{
if ( m_connection )
{
m_connection - > Disconnect ( ) ;
delete m_connection ;
m_connection = NULL ;
wxGetApp ( ) . GetFrame ( ) - > Enable ( ) ;
wxLogMessage ( _T ( " Client disconnected from server " ) ) ;
}
}
MyClient : : ~ MyClient ( )
{
Disconnect ( ) ;
}
// ----------------------------------------------------------------------------
// MyConnection
// ----------------------------------------------------------------------------
void MyConnection : : Log ( const wxString & command , const wxString & topic ,
const wxString & item , wxChar * data , int size , wxIPCFormat format )
1999-01-27 05:01:14 -05:00
{
2005-09-11 14:31:34 -04:00
wxString s ;
if ( topic . IsEmpty ( ) & & item . IsEmpty ( ) )
2005-09-14 17:10:34 -04:00
s . Printf ( _T ( " %s( " ) , command . c_str ( ) ) ;
2005-09-11 14:31:34 -04:00
else if ( topic . IsEmpty ( ) )
2005-09-14 17:10:34 -04:00
s . Printf ( _T ( " %s(item= \" %s \" , " ) , command . c_str ( ) , item . c_str ( ) ) ;
2005-09-11 14:31:34 -04:00
else if ( item . IsEmpty ( ) )
2005-09-14 17:10:34 -04:00
s . Printf ( _T ( " %s(topic= \" %s \" , " ) , command . c_str ( ) , topic . c_str ( ) ) ;
2005-09-11 14:31:34 -04:00
else
2005-09-14 17:10:34 -04:00
s . Printf ( _T ( " %s(topic= \" %s \" ,item= \" %s \" , " ) , command . c_str ( ) , topic . c_str ( ) , item . c_str ( ) ) ;
2005-09-11 14:31:34 -04:00
if ( format = = wxIPC_TEXT | | format = = wxIPC_UNICODETEXT )
2005-09-14 17:10:34 -04:00
wxLogMessage ( _T ( " %s \" %s \" ,%d) " ) , s . c_str ( ) , data , size ) ;
2005-09-11 14:31:34 -04:00
else if ( format = = wxIPC_PRIVATE )
2000-01-15 17:34:29 -05:00
{
2005-09-11 14:31:34 -04:00
if ( size = = 3 )
{
char * bytes = ( char * ) data ;
2005-09-14 17:10:34 -04:00
wxLogMessage ( _T ( " %s'%c%c%c',%d) " ) , s . c_str ( ) , bytes [ 0 ] , bytes [ 1 ] , bytes [ 2 ] , size ) ;
2005-09-11 14:31:34 -04:00
}
else
2005-09-14 17:10:34 -04:00
wxLogMessage ( _T ( " %s...,%d) " ) , s . c_str ( ) , size ) ;
2000-01-15 17:34:29 -05:00
}
2005-09-11 14:31:34 -04:00
else if ( format = = wxIPC_INVALID )
2005-09-14 17:10:34 -04:00
wxLogMessage ( _T ( " %s[invalid data],%d) " ) , s . c_str ( ) , size ) ;
2005-09-11 14:31:34 -04:00
}
bool MyConnection : : OnAdvise ( const wxString & topic , const wxString & item , wxChar * data ,
int size , wxIPCFormat format )
{
Log ( _T ( " OnAdvise " ) , topic , item , data , size , format ) ;
2004-06-02 13:03:20 -04:00
return true ;
1999-01-27 05:01:14 -05:00
}
bool MyConnection : : OnDisconnect ( )
{
2005-09-11 14:31:34 -04:00
wxLogMessage ( _T ( " OnDisconnect() " ) ) ;
wxGetApp ( ) . GetFrame ( ) - > Disconnect ( ) ;
return true ;
}
bool MyConnection : : Execute ( const wxChar * data , int size , wxIPCFormat format )
{
Log ( _T ( " Execute " ) , _T ( " " ) , _T ( " " ) , ( wxChar * ) data , size , format ) ;
bool retval = wxConnection : : Execute ( data , size , format ) ;
if ( ! retval )
wxLogMessage ( _T ( " Execute failed! " ) ) ;
return retval ;
}
1999-01-27 05:01:14 -05:00
2005-09-11 14:31:34 -04:00
wxChar * MyConnection : : Request ( const wxString & item , int * size , wxIPCFormat format )
{
wxChar * data = wxConnection : : Request ( item , size , format ) ;
Log ( _T ( " Request " ) , _T ( " " ) , item , data , size ? * size : - 1 , format ) ;
return data ;
}
bool MyConnection : : Poke ( const wxString & item , wxChar * data , int size , wxIPCFormat format )
{
Log ( _T ( " Poke " ) , _T ( " " ) , item , data , size , format ) ;
return wxConnection : : Poke ( item , data , size , format ) ;
1999-01-27 05:01:14 -05:00
}