1 | /****************************************************************************** |
2 | |
3 | |
4 | Copyright 1993, 1998 The Open Group |
5 | |
6 | Permission to use, copy, modify, distribute, and sell this software and its |
7 | documentation for any purpose is hereby granted without fee, provided that |
8 | the above copyright notice appear in all copies and that both that |
9 | copyright notice and this permission notice appear in supporting |
10 | documentation. |
11 | |
12 | The above copyright notice and this permission notice shall be included in |
13 | all copies or substantial portions of the Software. |
14 | |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
18 | OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
19 | AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
21 | |
22 | Except as contained in this notice, the name of The Open Group shall not be |
23 | used in advertising or otherwise to promote the sale, use or other dealings |
24 | in this Software without prior written authorization from The Open Group. |
25 | |
26 | Author: 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 | |
40 | typedef void *IcePointer; |
41 | |
42 | typedef enum { |
43 | IcePoAuthHaveReply, |
44 | IcePoAuthRejected, |
45 | IcePoAuthFailed, |
46 | IcePoAuthDoneCleanup |
47 | } IcePoAuthStatus; |
48 | |
49 | typedef enum { |
50 | IcePaAuthContinue, |
51 | IcePaAuthAccepted, |
52 | IcePaAuthRejected, |
53 | IcePaAuthFailed |
54 | } IcePaAuthStatus; |
55 | |
56 | typedef enum { |
57 | IceConnectPending, |
58 | IceConnectAccepted, |
59 | IceConnectRejected, |
60 | IceConnectIOError |
61 | } IceConnectStatus; |
62 | |
63 | typedef enum { |
64 | IceProtocolSetupSuccess, |
65 | IceProtocolSetupFailure, |
66 | IceProtocolSetupIOError, |
67 | IceProtocolAlreadyActive |
68 | } IceProtocolSetupStatus; |
69 | |
70 | typedef enum { |
71 | IceAcceptSuccess, |
72 | IceAcceptFailure, |
73 | IceAcceptBadMalloc |
74 | } IceAcceptStatus; |
75 | |
76 | typedef enum { |
77 | IceClosedNow, |
78 | IceClosedASAP, |
79 | IceConnectionInUse, |
80 | IceStartedShutdownNegotiation |
81 | } IceCloseStatus; |
82 | |
83 | typedef enum { |
84 | IceProcessMessagesSuccess, |
85 | IceProcessMessagesIOError, |
86 | IceProcessMessagesConnectionClosed |
87 | } IceProcessMessagesStatus; |
88 | |
89 | typedef 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 | |
96 | typedef struct _IceConn *IceConn; |
97 | typedef struct _IceListenObj *IceListenObj; |
98 | |
99 | typedef void (*IceWatchProc) ( |
100 | IceConn /* iceConn */, |
101 | IcePointer /* clientData */, |
102 | Bool /* opening */, |
103 | IcePointer * /* watchData */ |
104 | ); |
105 | |
106 | typedef 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 | |
116 | typedef void (*IcePaProcessMsgProc) ( |
117 | IceConn /* iceConn */, |
118 | IcePointer /* clientData */, |
119 | int /* opcode */, |
120 | unsigned long /* length */, |
121 | Bool /* swap */ |
122 | ); |
123 | |
124 | typedef struct { |
125 | int major_version; |
126 | int minor_version; |
127 | IcePoProcessMsgProc process_msg_proc; |
128 | } IcePoVersionRec; |
129 | |
130 | typedef struct { |
131 | int major_version; |
132 | int minor_version; |
133 | IcePaProcessMsgProc process_msg_proc; |
134 | } IcePaVersionRec; |
135 | |
136 | typedef 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 | |
148 | typedef 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 | |
159 | typedef Bool (*IceHostBasedAuthProc) ( |
160 | char * /* hostName */ |
161 | ); |
162 | |
163 | typedef 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 | |
173 | typedef void (*IceProtocolActivateProc) ( |
174 | IceConn /* iceConn */, |
175 | IcePointer /* clientData */ |
176 | ); |
177 | |
178 | typedef void (*IceIOErrorProc) ( |
179 | IceConn /* iceConn */ |
180 | ); |
181 | |
182 | typedef void (*IcePingReplyProc) ( |
183 | IceConn /* iceConn */, |
184 | IcePointer /* clientData */ |
185 | ); |
186 | |
187 | typedef 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 | |
197 | typedef void (*IceIOErrorHandler) ( |
198 | IceConn /* iceConn */ |
199 | ); |
200 | |
201 | |
202 | /* |
203 | * Function prototypes |
204 | */ |
205 | |
206 | _XFUNCPROTOBEGIN |
207 | |
208 | extern 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 | |
220 | extern 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 | |
235 | extern IceConn IceOpenConnection ( |
236 | char * /* networkIdsList */, |
237 | IcePointer /* context */, |
238 | Bool /* mustAuthenticate */, |
239 | int /* majorOpcodeCheck */, |
240 | int /* errorLength */, |
241 | char * /* errorStringRet */ |
242 | ); |
243 | |
244 | extern IcePointer IceGetConnectionContext ( |
245 | IceConn /* iceConn */ |
246 | ); |
247 | |
248 | extern Status IceListenForConnections ( |
249 | int * /* countRet */, |
250 | IceListenObj ** /* listenObjsRet */, |
251 | int /* errorLength */, |
252 | char * /* errorStringRet */ |
253 | ); |
254 | |
255 | extern Status IceListenForWellKnownConnections ( |
256 | char * /* port */, |
257 | int * /* countRet */, |
258 | IceListenObj ** /* listenObjsRet */, |
259 | int /* errorLength */, |
260 | char * /* errorStringRet */ |
261 | ); |
262 | |
263 | extern int IceGetListenConnectionNumber ( |
264 | IceListenObj /* listenObj */ |
265 | ); |
266 | |
267 | extern char *IceGetListenConnectionString ( |
268 | IceListenObj /* listenObj */ |
269 | ); |
270 | |
271 | extern char *IceComposeNetworkIdList ( |
272 | int /* count */, |
273 | IceListenObj * /* listenObjs */ |
274 | ); |
275 | |
276 | extern void IceFreeListenObjs ( |
277 | int /* count */, |
278 | IceListenObj * /* listenObjs */ |
279 | ); |
280 | |
281 | extern void IceSetHostBasedAuthProc ( |
282 | IceListenObj /* listenObj */, |
283 | IceHostBasedAuthProc /* hostBasedAuthProc */ |
284 | ); |
285 | |
286 | extern IceConn IceAcceptConnection ( |
287 | IceListenObj /* listenObj */, |
288 | IceAcceptStatus * /* statusRet */ |
289 | ); |
290 | |
291 | extern void IceSetShutdownNegotiation ( |
292 | IceConn /* iceConn */, |
293 | Bool /* negotiate */ |
294 | ); |
295 | |
296 | extern Bool IceCheckShutdownNegotiation ( |
297 | IceConn /* iceConn */ |
298 | ); |
299 | |
300 | extern IceCloseStatus IceCloseConnection ( |
301 | IceConn /* iceConn */ |
302 | ); |
303 | |
304 | extern Status IceAddConnectionWatch ( |
305 | IceWatchProc /* watchProc */, |
306 | IcePointer /* clientData */ |
307 | ); |
308 | |
309 | extern void IceRemoveConnectionWatch ( |
310 | IceWatchProc /* watchProc */, |
311 | IcePointer /* clientData */ |
312 | ); |
313 | |
314 | extern 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 | |
327 | extern Status IceProtocolShutdown ( |
328 | IceConn /* iceConn */, |
329 | int /* majorOpcode */ |
330 | ); |
331 | |
332 | extern IceProcessMessagesStatus IceProcessMessages ( |
333 | IceConn /* iceConn */, |
334 | IceReplyWaitInfo * /* replyWait */, |
335 | Bool * /* replyReadyRet */ |
336 | ); |
337 | |
338 | extern Status IcePing ( |
339 | IceConn /* iceConn */, |
340 | IcePingReplyProc /* pingReplyProc */, |
341 | IcePointer /* clientData */ |
342 | ); |
343 | |
344 | extern char *IceAllocScratch ( |
345 | IceConn /* iceConn */, |
346 | unsigned long /* size */ |
347 | ); |
348 | |
349 | extern int IceFlush ( |
350 | IceConn /* iceConn */ |
351 | ); |
352 | |
353 | extern int IceGetOutBufSize ( |
354 | IceConn /* iceConn */ |
355 | ); |
356 | |
357 | extern int IceGetInBufSize ( |
358 | IceConn /* iceConn */ |
359 | ); |
360 | |
361 | extern IceConnectStatus IceConnectionStatus ( |
362 | IceConn /* iceConn */ |
363 | ); |
364 | |
365 | extern char *IceVendor ( |
366 | IceConn /* iceConn */ |
367 | ); |
368 | |
369 | extern char *IceRelease ( |
370 | IceConn /* iceConn */ |
371 | ); |
372 | |
373 | extern int IceProtocolVersion ( |
374 | IceConn /* iceConn */ |
375 | ); |
376 | |
377 | extern int IceProtocolRevision ( |
378 | IceConn /* iceConn */ |
379 | ); |
380 | |
381 | extern int IceConnectionNumber ( |
382 | IceConn /* iceConn */ |
383 | ); |
384 | |
385 | extern char *IceConnectionString ( |
386 | IceConn /* iceConn */ |
387 | ); |
388 | |
389 | extern unsigned long IceLastSentSequenceNumber ( |
390 | IceConn /* iceConn */ |
391 | ); |
392 | |
393 | extern unsigned long IceLastReceivedSequenceNumber ( |
394 | IceConn /* iceConn */ |
395 | ); |
396 | |
397 | extern Bool IceSwapping ( |
398 | IceConn /* iceConn */ |
399 | ); |
400 | |
401 | extern IceErrorHandler IceSetErrorHandler ( |
402 | IceErrorHandler /* handler */ |
403 | ); |
404 | |
405 | extern IceIOErrorHandler IceSetIOErrorHandler ( |
406 | IceIOErrorHandler /* handler */ |
407 | ); |
408 | |
409 | extern char *IceGetPeerName ( |
410 | IceConn /* iceConn */ |
411 | ); |
412 | |
413 | /* |
414 | * Multithread Routines |
415 | */ |
416 | |
417 | extern Status IceInitThreads ( |
418 | void |
419 | ); |
420 | |
421 | extern void IceAppLockConn ( |
422 | IceConn /* iceConn */ |
423 | ); |
424 | |
425 | extern void IceAppUnlockConn ( |
426 | IceConn /* iceConn */ |
427 | ); |
428 | |
429 | _XFUNCPROTOEND |
430 | |
431 | #endif /* _ICELIB_H_ */ |
432 | |