1/******************************************************************************
2
3
4Copyright 1993, 1998 The Open Group
5
6Permission to use, copy, modify, distribute, and sell this software and its
7documentation for any purpose is hereby granted without fee, provided that
8the above copyright notice appear in all copies and that both that
9copyright notice and this permission notice appear in supporting
10documentation.
11
12The above copyright notice and this permission notice shall be included in
13all copies or substantial portions of the Software.
14
15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
19AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22Except as contained in this notice, the name of The Open Group shall not be
23used in advertising or otherwise to promote the sale, use or other dealings
24in this Software without prior written authorization from The Open Group.
25
26Author: Ralph Mor, X Consortium
27******************************************************************************/
28
29#ifndef _ICELIB_H_
30#define _ICELIB_H_
31
32#include <X11/ICE/ICE.h>
33#include <X11/Xfuncproto.h>
34
35#define Bool int
36#define Status int
37#define True 1
38#define False 0
39
40typedef void *IcePointer;
41
42typedef enum {
43 IcePoAuthHaveReply,
44 IcePoAuthRejected,
45 IcePoAuthFailed,
46 IcePoAuthDoneCleanup
47} IcePoAuthStatus;
48
49typedef enum {
50 IcePaAuthContinue,
51 IcePaAuthAccepted,
52 IcePaAuthRejected,
53 IcePaAuthFailed
54} IcePaAuthStatus;
55
56typedef enum {
57 IceConnectPending,
58 IceConnectAccepted,
59 IceConnectRejected,
60 IceConnectIOError
61} IceConnectStatus;
62
63typedef enum {
64 IceProtocolSetupSuccess,
65 IceProtocolSetupFailure,
66 IceProtocolSetupIOError,
67 IceProtocolAlreadyActive
68} IceProtocolSetupStatus;
69
70typedef enum {
71 IceAcceptSuccess,
72 IceAcceptFailure,
73 IceAcceptBadMalloc
74} IceAcceptStatus;
75
76typedef enum {
77 IceClosedNow,
78 IceClosedASAP,
79 IceConnectionInUse,
80 IceStartedShutdownNegotiation
81} IceCloseStatus;
82
83typedef enum {
84 IceProcessMessagesSuccess,
85 IceProcessMessagesIOError,
86 IceProcessMessagesConnectionClosed
87} IceProcessMessagesStatus;
88
89typedef struct {
90 unsigned long sequence_of_request;
91 int major_opcode_of_request;
92 int minor_opcode_of_request;
93 IcePointer reply;
94} IceReplyWaitInfo;
95
96typedef struct _IceConn *IceConn;
97typedef struct _IceListenObj *IceListenObj;
98
99typedef void (*IceWatchProc) (
100 IceConn /* iceConn */,
101 IcePointer /* clientData */,
102 Bool /* opening */,
103 IcePointer * /* watchData */
104);
105
106typedef void (*IcePoProcessMsgProc) (
107 IceConn /* iceConn */,
108 IcePointer /* clientData */,
109 int /* opcode */,
110 unsigned long /* length */,
111 Bool /* swap */,
112 IceReplyWaitInfo * /* replyWait */,
113 Bool * /* replyReadyRet */
114);
115
116typedef void (*IcePaProcessMsgProc) (
117 IceConn /* iceConn */,
118 IcePointer /* clientData */,
119 int /* opcode */,
120 unsigned long /* length */,
121 Bool /* swap */
122);
123
124typedef struct {
125 int major_version;
126 int minor_version;
127 IcePoProcessMsgProc process_msg_proc;
128} IcePoVersionRec;
129
130typedef struct {
131 int major_version;
132 int minor_version;
133 IcePaProcessMsgProc process_msg_proc;
134} IcePaVersionRec;
135
136typedef IcePoAuthStatus (*IcePoAuthProc) (
137 IceConn /* iceConn */,
138 IcePointer * /* authStatePtr */,
139 Bool /* cleanUp */,
140 Bool /* swap */,
141 int /* authDataLen */,
142 IcePointer /* authData */,
143 int * /* replyDataLenRet */,
144 IcePointer * /* replyDataRet */,
145 char ** /* errorStringRet */
146);
147
148typedef IcePaAuthStatus (*IcePaAuthProc) (
149 IceConn /* iceConn */,
150 IcePointer * /* authStatePtr */,
151 Bool /* swap */,
152 int /* authDataLen */,
153 IcePointer /* authData */,
154 int * /* replyDataLenRet */,
155 IcePointer * /* replyDataRet */,
156 char ** /* errorStringRet */
157);
158
159typedef Bool (*IceHostBasedAuthProc) (
160 char * /* hostName */
161);
162
163typedef Status (*IceProtocolSetupProc) (
164 IceConn /* iceConn */,
165 int /* majorVersion */,
166 int /* minorVersion */,
167 char * /* vendor */,
168 char * /* release */,
169 IcePointer * /* clientDataRet */,
170 char ** /* failureReasonRet */
171);
172
173typedef void (*IceProtocolActivateProc) (
174 IceConn /* iceConn */,
175 IcePointer /* clientData */
176);
177
178typedef void (*IceIOErrorProc) (
179 IceConn /* iceConn */
180);
181
182typedef void (*IcePingReplyProc) (
183 IceConn /* iceConn */,
184 IcePointer /* clientData */
185);
186
187typedef void (*IceErrorHandler) (
188 IceConn /* iceConn */,
189 Bool /* swap */,
190 int /* offendingMinorOpcode */,
191 unsigned long /* offendingSequence */,
192 int /* errorClass */,
193 int /* severity */,
194 IcePointer /* values */
195);
196
197typedef void (*IceIOErrorHandler) (
198 IceConn /* iceConn */
199);
200
201
202/*
203 * Function prototypes
204 */
205
206_XFUNCPROTOBEGIN
207
208extern int IceRegisterForProtocolSetup (
209 const char * /* protocolName */,
210 const char * /* vendor */,
211 const char * /* release */,
212 int /* versionCount */,
213 IcePoVersionRec * /* versionRecs */,
214 int /* authCount */,
215 const char ** /* authNames */,
216 IcePoAuthProc * /* authProcs */,
217 IceIOErrorProc /* IOErrorProc */
218);
219
220extern int IceRegisterForProtocolReply (
221 const char * /* protocolName */,
222 const char * /* vendor */,
223 const char * /* release */,
224 int /* versionCount */,
225 IcePaVersionRec * /* versionRecs */,
226 int /* authCount */,
227 const char ** /* authNames */,
228 IcePaAuthProc * /* authProcs */,
229 IceHostBasedAuthProc /* hostBasedAuthProc */,
230 IceProtocolSetupProc /* protocolSetupProc */,
231 IceProtocolActivateProc /* protocolActivateProc */,
232 IceIOErrorProc /* IOErrorProc */
233);
234
235extern IceConn IceOpenConnection (
236 char * /* networkIdsList */,
237 IcePointer /* context */,
238 Bool /* mustAuthenticate */,
239 int /* majorOpcodeCheck */,
240 int /* errorLength */,
241 char * /* errorStringRet */
242);
243
244extern IcePointer IceGetConnectionContext (
245 IceConn /* iceConn */
246);
247
248extern Status IceListenForConnections (
249 int * /* countRet */,
250 IceListenObj ** /* listenObjsRet */,
251 int /* errorLength */,
252 char * /* errorStringRet */
253);
254
255extern Status IceListenForWellKnownConnections (
256 char * /* port */,
257 int * /* countRet */,
258 IceListenObj ** /* listenObjsRet */,
259 int /* errorLength */,
260 char * /* errorStringRet */
261);
262
263extern int IceGetListenConnectionNumber (
264 IceListenObj /* listenObj */
265);
266
267extern char *IceGetListenConnectionString (
268 IceListenObj /* listenObj */
269);
270
271extern char *IceComposeNetworkIdList (
272 int /* count */,
273 IceListenObj * /* listenObjs */
274);
275
276extern void IceFreeListenObjs (
277 int /* count */,
278 IceListenObj * /* listenObjs */
279);
280
281extern void IceSetHostBasedAuthProc (
282 IceListenObj /* listenObj */,
283 IceHostBasedAuthProc /* hostBasedAuthProc */
284);
285
286extern IceConn IceAcceptConnection (
287 IceListenObj /* listenObj */,
288 IceAcceptStatus * /* statusRet */
289);
290
291extern void IceSetShutdownNegotiation (
292 IceConn /* iceConn */,
293 Bool /* negotiate */
294);
295
296extern Bool IceCheckShutdownNegotiation (
297 IceConn /* iceConn */
298);
299
300extern IceCloseStatus IceCloseConnection (
301 IceConn /* iceConn */
302);
303
304extern Status IceAddConnectionWatch (
305 IceWatchProc /* watchProc */,
306 IcePointer /* clientData */
307);
308
309extern void IceRemoveConnectionWatch (
310 IceWatchProc /* watchProc */,
311 IcePointer /* clientData */
312);
313
314extern IceProtocolSetupStatus IceProtocolSetup (
315 IceConn /* iceConn */,
316 int /* myOpcode */,
317 IcePointer /* clientData */,
318 Bool /* mustAuthenticate */,
319 int * /* majorVersionRet */,
320 int * /* minorVersionRet */,
321 char ** /* vendorRet */,
322 char ** /* releaseRet */,
323 int /* errorLength */,
324 char * /* errorStringRet */
325);
326
327extern Status IceProtocolShutdown (
328 IceConn /* iceConn */,
329 int /* majorOpcode */
330);
331
332extern IceProcessMessagesStatus IceProcessMessages (
333 IceConn /* iceConn */,
334 IceReplyWaitInfo * /* replyWait */,
335 Bool * /* replyReadyRet */
336);
337
338extern Status IcePing (
339 IceConn /* iceConn */,
340 IcePingReplyProc /* pingReplyProc */,
341 IcePointer /* clientData */
342);
343
344extern char *IceAllocScratch (
345 IceConn /* iceConn */,
346 unsigned long /* size */
347);
348
349extern int IceFlush (
350 IceConn /* iceConn */
351);
352
353extern int IceGetOutBufSize (
354 IceConn /* iceConn */
355);
356
357extern int IceGetInBufSize (
358 IceConn /* iceConn */
359);
360
361extern IceConnectStatus IceConnectionStatus (
362 IceConn /* iceConn */
363);
364
365extern char *IceVendor (
366 IceConn /* iceConn */
367);
368
369extern char *IceRelease (
370 IceConn /* iceConn */
371);
372
373extern int IceProtocolVersion (
374 IceConn /* iceConn */
375);
376
377extern int IceProtocolRevision (
378 IceConn /* iceConn */
379);
380
381extern int IceConnectionNumber (
382 IceConn /* iceConn */
383);
384
385extern char *IceConnectionString (
386 IceConn /* iceConn */
387);
388
389extern unsigned long IceLastSentSequenceNumber (
390 IceConn /* iceConn */
391);
392
393extern unsigned long IceLastReceivedSequenceNumber (
394 IceConn /* iceConn */
395);
396
397extern Bool IceSwapping (
398 IceConn /* iceConn */
399);
400
401extern IceErrorHandler IceSetErrorHandler (
402 IceErrorHandler /* handler */
403);
404
405extern IceIOErrorHandler IceSetIOErrorHandler (
406 IceIOErrorHandler /* handler */
407);
408
409extern char *IceGetPeerName (
410 IceConn /* iceConn */
411);
412
413/*
414 * Multithread Routines
415 */
416
417extern Status IceInitThreads (
418 void
419);
420
421extern void IceAppLockConn (
422 IceConn /* iceConn */
423);
424
425extern void IceAppUnlockConn (
426 IceConn /* iceConn */
427);
428
429_XFUNCPROTOEND
430
431#endif /* _ICELIB_H_ */
432

source code of include/X11/ICE/ICElib.h