Tizen 2.1 base
[framework/uifw/xorg/lib/libice.git] / include / X11 / ICE / ICElib.h
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_ */