1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Base classes for IPC
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart and Markus Holzem
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_IPCBASEH__
13 #define _WX_IPCBASEH__
16 #pragma interface "ipcbase.h"
20 #include "wx/object.h"
21 #include "wx/string.h"
26 wxIPC_TEXT
= 1, /* CF_TEXT */
27 wxIPC_BITMAP
= 2, /* CF_BITMAP */
28 wxIPC_METAFILE
= 3, /* CF_METAFILEPICT */
32 wxIPC_OEMTEXT
= 7, /* CF_OEMTEXT */
33 wxIPC_DIB
= 8, /* CF_DIB */
38 wxIPC_UNICODETEXT
= 13,
39 wxIPC_ENHMETAFILE
= 14,
40 wxIPC_FILENAME
= 15, /* CF_HDROP */
45 class WXDLLEXPORT wxDDEServerBase
;
46 class WXDLLEXPORT wxDDEClientBase
;
48 class WXDLLEXPORT wxConnectionBase
: public wxObject
50 DECLARE_CLASS(wxConnectionBase
)
52 inline wxConnectionBase(void) {}
53 inline ~wxConnectionBase(void) {}
55 // Calls that CLIENT can make
56 virtual bool Execute(wxChar
*data
, int size
= -1, wxIPCFormat format
= wxIPC_TEXT
) = 0;
57 virtual bool Execute(const wxString
& str
) { return Execute(WXSTRINGCAST str
, -1, wxIPC_TEXT
); }
58 virtual char *Request(const wxString
& item
, int *size
= (int *) NULL
, wxIPCFormat format
= wxIPC_TEXT
) = 0;
59 virtual bool Poke(const wxString
& item
, wxChar
*data
, int size
= -1, wxIPCFormat format
= wxIPC_TEXT
) = 0;
60 virtual bool StartAdvise(const wxString
& item
) = 0;
61 virtual bool StopAdvise(const wxString
& item
) = 0;
63 // Calls that SERVER can make
64 virtual bool Advise(const wxString
& item
, wxChar
*data
, int size
= -1, wxIPCFormat format
= wxIPC_TEXT
) = 0;
66 // Calls that both can make
67 virtual bool Disconnect(void) = 0;
69 // Callbacks to SERVER - override at will
70 virtual bool OnExecute( const wxString
& WXUNUSED(topic
), char *WXUNUSED(data
), int WXUNUSED(size
),
71 int WXUNUSED(format
) ) { return FALSE
; };
72 virtual wxChar
*OnRequest( const wxString
& WXUNUSED(topic
), const wxString
& WXUNUSED(item
),
73 int *WXUNUSED(size
), int WXUNUSED(format
) ) { return (wxChar
*) NULL
; };
74 virtual bool OnPoke( const wxString
& WXUNUSED(topic
), const wxString
& WXUNUSED(item
), wxChar
*WXUNUSED(data
),
75 int WXUNUSED(size
), int WXUNUSED(format
) ) { return FALSE
; };
76 virtual bool OnStartAdvise( const wxString
& WXUNUSED(topic
), const wxString
& WXUNUSED(item
) )
78 virtual bool OnStopAdvise( const wxString
& WXUNUSED(topic
), const wxString
& WXUNUSED(item
) )
81 // Callbacks to CLIENT - override at will
82 virtual bool OnAdvise( const wxString
& WXUNUSED(topic
), const wxString
& WXUNUSED(item
), wxChar
*WXUNUSED(data
),
83 int WXUNUSED(size
), int WXUNUSED(format
) ) { return FALSE
; };
87 // Default behaviour is to delete connection and return TRUE
88 virtual bool OnDisconnect(void) = 0;
91 class WXDLLEXPORT wxServerBase
: public wxObject
93 DECLARE_CLASS(wxServerBase
)
96 inline wxServerBase(void) {}
97 inline ~wxServerBase(void) {};
98 virtual bool Create(const wxString
& serverName
) = 0; // Returns FALSE if can't create server (e.g. port
99 // number is already in use)
100 virtual wxConnectionBase
*OnAcceptConnection(const wxString
& topic
) = 0;
104 class WXDLLEXPORT wxClientBase
: public wxObject
106 DECLARE_CLASS(wxClientBase
)
108 inline wxClientBase(void) {};
109 inline ~wxClientBase(void) {};
110 virtual bool ValidHost(const wxString
& host
) = 0;
111 virtual wxConnectionBase
*MakeConnection(const wxString
& host
, const wxString
& server
, const wxString
& topic
) = 0;
112 // Call this to make a connection.
113 // Returns NULL if cannot.
114 virtual wxConnectionBase
*OnMakeConnection(void) = 0; // Tailor this to return own connection.