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__
15 #if defined(__GNUG__) && !defined(__APPLE__)
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 wxServerBase
;
46 class WXDLLEXPORT wxClientBase
;
48 class WXDLLEXPORT wxConnectionBase
: public wxObject
50 DECLARE_CLASS(wxConnectionBase
)
53 inline wxConnectionBase(void) {}
54 inline ~wxConnectionBase(void) {}
56 // Calls that CLIENT can make
57 virtual bool Execute(const wxChar
*data
, int size
= -1, wxIPCFormat format
= wxIPC_TEXT
) = 0;
58 virtual bool Execute(const wxString
& str
) { return Execute(str
, -1, wxIPC_TEXT
); }
59 virtual char *Request(const wxString
& item
, int *size
= (int *) NULL
, wxIPCFormat format
= wxIPC_TEXT
) = 0;
60 virtual bool Poke(const wxString
& item
, wxChar
*data
, int size
= -1, wxIPCFormat format
= wxIPC_TEXT
) = 0;
61 virtual bool StartAdvise(const wxString
& item
) = 0;
62 virtual bool StopAdvise(const wxString
& item
) = 0;
64 // Calls that SERVER can make
65 virtual bool Advise(const wxString
& item
, wxChar
*data
, int size
= -1, wxIPCFormat format
= wxIPC_TEXT
) = 0;
67 // Calls that both can make
68 virtual bool Disconnect(void) = 0;
70 // Callbacks to SERVER - override at will
71 virtual bool OnExecute ( const wxString
& WXUNUSED(topic
),
74 wxIPCFormat
WXUNUSED(format
) )
77 virtual char *OnRequest ( const wxString
& WXUNUSED(topic
),
78 const wxString
& WXUNUSED(item
),
80 wxIPCFormat
WXUNUSED(format
) )
81 { return (char *) NULL
; };
83 virtual bool OnPoke ( const wxString
& WXUNUSED(topic
),
84 const wxString
& WXUNUSED(item
),
85 wxChar
*WXUNUSED(data
),
87 wxIPCFormat
WXUNUSED(format
) )
90 virtual bool OnStartAdvise ( const wxString
& WXUNUSED(topic
),
91 const wxString
& WXUNUSED(item
) )
94 virtual bool OnStopAdvise ( const wxString
& WXUNUSED(topic
),
95 const wxString
& WXUNUSED(item
) )
98 // Callbacks to CLIENT - override at will
99 virtual bool OnAdvise ( const wxString
& WXUNUSED(topic
),
100 const wxString
& WXUNUSED(item
),
101 char *WXUNUSED(data
),
103 wxIPCFormat
WXUNUSED(format
) )
106 // Callbacks to BOTH - override at will
107 // Default behaviour is to delete connection and return TRUE
108 virtual bool OnDisconnect(void) = 0;
111 class WXDLLEXPORT wxServerBase
: public wxObject
113 DECLARE_CLASS(wxServerBase
)
116 inline wxServerBase(void) {}
117 inline ~wxServerBase(void) {};
119 // Returns FALSE on error (e.g. port number is already in use)
120 virtual bool Create(const wxString
& serverName
) = 0;
122 // Callbacks to SERVER - override at will
123 virtual wxConnectionBase
*OnAcceptConnection(const wxString
& topic
) = 0;
126 class WXDLLEXPORT wxClientBase
: public wxObject
128 DECLARE_CLASS(wxClientBase
)
131 inline wxClientBase(void) {};
132 inline ~wxClientBase(void) {};
134 virtual bool ValidHost(const wxString
& host
) = 0;
136 // Call this to make a connection. Returns NULL if cannot.
137 virtual wxConnectionBase
*MakeConnection(const wxString
& host
,
138 const wxString
& server
,
139 const wxString
& topic
) = 0;
141 // Callbacks to CLIENT - override at will
142 virtual wxConnectionBase
*OnMakeConnection(void) = 0;