]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/sckipc.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxTCPServer
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
16 wxIPC_TEXT
= 1, /* CF_TEXT */
17 wxIPC_BITMAP
= 2, /* CF_BITMAP */
18 wxIPC_METAFILE
= 3, /* CF_METAFILEPICT */
22 wxIPC_OEMTEXT
= 7, /* CF_OEMTEXT */
23 wxIPC_DIB
= 8, /* CF_DIB */
28 wxIPC_UTF16TEXT
= 13, /* CF_UNICODE */
29 wxIPC_ENHMETAFILE
= 14,
30 wxIPC_FILENAME
= 15, /* CF_HDROP */
34 #if SIZEOF_WCHAR_T == 2
35 wxIPC_UNICODETEXT
= wxIPC_UTF16TEXT
,
36 #elif SIZEOF_WCHAR_T == 4
37 wxIPC_UNICODETEXT
= wxIPC_UTF32TEXT
,
39 # error "Unknown wchar_t size"
48 A wxTCPServer object represents the server part of a client-server conversation.
49 It emulates a DDE-style protocol, but uses TCP/IP which is available on most
52 A DDE-based implementation for Windows is available using wxDDEServer.
57 @see wxTCPClient, wxTCPConnection, @ref overview_ipc
59 class wxTCPServer
: public wxObject
63 Constructs a server object.
68 Registers the server using the given service name.
70 Under Unix, the string must contain an integer id which is used as an
71 Internet port number. @false is returned if the call failed
72 (for example, the port number is already in use).
74 virtual bool Create(const wxString
& service
);
77 When a client calls @b MakeConnection, the server receives the
78 message and this member is called.
80 The application should derive a member to intercept this message and
81 return a connection object of either the standard wxTCPConnection type,
82 or of a user-derived type.
83 If the topic is "STDIO", the application may wish to refuse the connection.
84 Under Unix, when a server is created the OnAcceptConnection message is
85 always sent for standard input and output.
87 virtual wxConnectionBase
* OnAcceptConnection(const wxString
& topic
);
95 A wxTCPClient object represents the client part of a client-server conversation.
96 It emulates a DDE-style protocol, but uses TCP/IP which is available on most
99 A DDE-based implementation for Windows is available using wxDDEClient.
101 To create a client which can communicate with a suitable server, you need
102 to derive a class from wxTCPConnection and another from wxTCPClient.
103 The custom wxTCPConnection class will intercept communications in
104 a 'conversation' with a server, and the custom wxTCPServer is required
105 so that a user-overridden wxTCPClient::OnMakeConnection() member can return
106 a wxTCPConnection of the required class, when a connection is made.
111 @see wxTCPServer, wxTCPConnection, @ref overview_ipc
113 class wxTCPClient
: public wxObject
117 Constructs a client object.
122 Tries to make a connection with a server specified by the host
123 (a machine name under Unix), service name (must contain an integer
124 port number under Unix), and a topic string.
126 If the server allows a connection, a wxTCPConnection object will be returned.
128 The type of wxTCPConnection returned can be altered by overriding
129 the OnMakeConnection() member to return your own derived connection object.
131 virtual wxConnectionBase
* MakeConnection(const wxString
& host
,
132 const wxString
& service
,
133 const wxString
& topic
);
136 The type of wxTCPConnection returned from a MakeConnection() call can
137 be altered by deriving the @b OnMakeConnection member to return your
138 own derived connection object. By default, a wxTCPConnection
141 The advantage of deriving your own connection class is that it will
142 enable you to intercept messages initiated by the server, such
143 as wxTCPConnection::OnAdvise(). You may also want to store
144 application-specific data in instances of the new class.
146 virtual wxConnectionBase
* OnMakeConnection();
149 Returns @true if this is a valid host name, @false otherwise.
151 virtual bool ValidHost(const wxString
& host
);
157 @class wxTCPConnection
159 A wxTCPClient object represents the connection between a client and a server.
160 It emulates a DDE-style protocol, but uses TCP/IP which is available on most
163 A DDE-based implementation for Windows is available using wxDDEConnection.
165 A wxTCPConnection object can be created by making a connection using a
166 wxTCPClient object, or by the acceptance of a connection by a wxTCPServer object.
167 The bulk of a conversation is controlled by calling members in a
168 @b wxTCPConnection object or by overriding its members.
170 An application should normally derive a new connection class from
171 wxTCPConnection, in order to override the communication event handlers
172 to do something interesting.
177 @see wxTCPClient, wxTCPServer, @ref overview_ipc
179 class wxTCPConnection
: public wxObject
184 Constructs a connection object.
186 If no user-defined connection object is to be derived from wxTCPConnection,
187 then the constructor should not be called directly, since the default
188 connection object will be provided on requesting (or accepting) a connection.
190 However, if the user defines his or her own derived connection object,
191 the wxTCPServer::OnAcceptConnection and/or wxTCPClient::OnMakeConnection
192 members should be replaced by functions which construct the new connection object.
194 If the arguments of the wxTCPConnection constructor are void, then a default
195 buffer is associated with the connection. Otherwise, the programmer must
196 provide a buffer and size of the buffer for the connection object to use in
200 wxTCPConnection(void* buffer
, size_t size
);
205 Called by the server application to advise the client of a change in
206 the data associated with the given item.
208 Causes the client connection's OnAdvise() member to be called.
210 Returns @true if successful.
212 bool Advise(const wxString
& item
, const void* data
, size_t size
,
213 wxIPCFormat format
= wxIPC_PRIVATE
);
214 bool Advise(const wxString
& item
, const char* data
);
215 bool Advise(const wxString
& item
, const wchar_t* data
);
216 bool Advise(const wxString
& item
, const wxString data
);
220 Called by the client or server application to disconnect from the other
221 program; it causes the OnDisconnect() message to be sent to the
222 corresponding connection object in the other program.
224 The default behaviour of @b OnDisconnect is to delete the
225 connection, but the calling application must explicitly delete its
226 side of the connection having called @b Disconnect.
228 Returns @true if successful.
230 virtual bool Disconnect();
234 Called by the client application to execute a command on the server.
235 Can also be used to transfer arbitrary data to the server (similar
236 to Poke() in that respect). Causes the server connection's OnExecute()
239 Returns @true if successful.
241 bool Execute(const void* data
, size_t size
,
242 wxIPCFormat format
= wxIPC_PRIVATE
);
243 bool Execute(const char* data
);
244 bool Execute(const wchar_t* data
);
245 bool Execute(const wxString data
);
249 Message sent to the client application when the server notifies it of a
250 change in the data associated with the given item.
252 virtual bool OnAdvise(const wxString
& topic
,
253 const wxString
& item
,
259 Message sent to the client or server application when the other
260 application notifies it to delete the connection.
261 Default behaviour is to delete the connection object.
263 virtual bool OnDisconnect();
266 Message sent to the server application when the client notifies it to
267 execute the given data.
268 Note that there is no item associated with this message.
270 virtual bool OnExecute(const wxString
& topic
, const void* data
,
275 Message sent to the server application when the client notifies it to
276 accept the given data.
278 virtual bool OnPoke(const wxString
& topic
, const wxString
& item
,
284 Message sent to the server application when the client calls Request().
286 The server should respond by returning a character string from @b OnRequest,
287 or @NULL to indicate no data.
289 virtual const void* OnRequest(const wxString
& topic
,
290 const wxString
& item
,
295 Message sent to the server application by the client, when the client
296 wishes to start an 'advise loop' for the given topic and item.
297 The server can refuse to participate by returning @false.
299 virtual bool OnStartAdvise(const wxString
& topic
,
300 const wxString
& item
);
303 Message sent to the server application by the client, when the client
304 wishes to stop an 'advise loop' for the given topic and item.
305 The server can refuse to stop the advise loop by returning @false, although
306 this doesn't have much meaning in practice.
308 virtual bool OnStopAdvise(const wxString
& topic
,
309 const wxString
& item
);
313 Called by the client application to poke data into the server.
314 Can be used to transfer arbitrary data to the server. Causes the server
315 connection's OnPoke() member to be called. Returns @true if successful.
317 bool Poke(const wxString
& item
, const void* data
, size_t size
,
318 wxIPCFormat format
= wxIPC_PRIVATE
);
319 bool Poke(const wxString
& item
, const char* data
);
320 bool Poke(const wxString
& item
, const wchar_t* data
);
321 bool Poke(const wxString
& item
, const wxString data
);
325 Called by the client application to request data from the server.
326 Causes the server connection's OnRequest() member to be called.
328 Returns a character string (actually a pointer to the connection's buffer) if
329 successful, @NULL otherwise.
331 virtual const void* Request(const wxString
& item
, size_t* size
= 0,
332 wxIPCFormat format
= wxIPC_TEXT
);
335 Called by the client application to ask if an advise loop can be started
338 Causes the server connection's OnStartAdvise() member to be called.
339 Returns @true if the server okays it, @false otherwise.
341 virtual bool StartAdvise(const wxString
& item
);
344 Called by the client application to ask if an advise loop can be stopped.
345 Causes the server connection's OnStopAdvise() member to be called.
346 Returns @true if the server okays it, @false otherwise.
348 virtual bool StopAdvise(const wxString
& item
);