ICElib.h revision 266e564d
1266e564dSmrg/* $Xorg: ICElib.h,v 1.5 2001/02/09 02:03:26 xorgcvs Exp $ */
2266e564dSmrg/******************************************************************************
3266e564dSmrg
4266e564dSmrg
5266e564dSmrgCopyright 1993, 1998  The Open Group
6266e564dSmrg
7266e564dSmrgPermission to use, copy, modify, distribute, and sell this software and its
8266e564dSmrgdocumentation for any purpose is hereby granted without fee, provided that
9266e564dSmrgthe above copyright notice appear in all copies and that both that
10266e564dSmrgcopyright notice and this permission notice appear in supporting
11266e564dSmrgdocumentation.
12266e564dSmrg
13266e564dSmrgThe above copyright notice and this permission notice shall be included in
14266e564dSmrgall copies or substantial portions of the Software.
15266e564dSmrg
16266e564dSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17266e564dSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18266e564dSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
19266e564dSmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
20266e564dSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21266e564dSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22266e564dSmrg
23266e564dSmrgExcept as contained in this notice, the name of The Open Group shall not be
24266e564dSmrgused in advertising or otherwise to promote the sale, use or other dealings
25266e564dSmrgin this Software without prior written authorization from The Open Group.
26266e564dSmrg
27266e564dSmrgAuthor: Ralph Mor, X Consortium
28266e564dSmrg******************************************************************************/
29266e564dSmrg/* $XFree86: xc/lib/ICE/ICElib.h,v 3.4 2001/12/14 19:53:35 dawes Exp $ */
30266e564dSmrg
31266e564dSmrg#ifndef _ICELIB_H_
32266e564dSmrg#define _ICELIB_H_
33266e564dSmrg
34266e564dSmrg#include <X11/ICE/ICE.h>
35266e564dSmrg#include <X11/Xfuncproto.h>
36266e564dSmrg
37266e564dSmrg#define Bool int
38266e564dSmrg#define Status int
39266e564dSmrg#define True 1
40266e564dSmrg#define False 0
41266e564dSmrg
42266e564dSmrgtypedef void *IcePointer;
43266e564dSmrg
44266e564dSmrgtypedef enum {
45266e564dSmrg    IcePoAuthHaveReply,
46266e564dSmrg    IcePoAuthRejected,
47266e564dSmrg    IcePoAuthFailed,
48266e564dSmrg    IcePoAuthDoneCleanup
49266e564dSmrg} IcePoAuthStatus;
50266e564dSmrg
51266e564dSmrgtypedef enum {
52266e564dSmrg    IcePaAuthContinue,
53266e564dSmrg    IcePaAuthAccepted,
54266e564dSmrg    IcePaAuthRejected,
55266e564dSmrg    IcePaAuthFailed
56266e564dSmrg} IcePaAuthStatus;
57266e564dSmrg
58266e564dSmrgtypedef enum {
59266e564dSmrg    IceConnectPending,
60266e564dSmrg    IceConnectAccepted,
61266e564dSmrg    IceConnectRejected,
62266e564dSmrg    IceConnectIOError
63266e564dSmrg} IceConnectStatus;
64266e564dSmrg
65266e564dSmrgtypedef enum {
66266e564dSmrg    IceProtocolSetupSuccess,
67266e564dSmrg    IceProtocolSetupFailure,
68266e564dSmrg    IceProtocolSetupIOError,
69266e564dSmrg    IceProtocolAlreadyActive
70266e564dSmrg} IceProtocolSetupStatus;
71266e564dSmrg
72266e564dSmrgtypedef enum {
73266e564dSmrg    IceAcceptSuccess,
74266e564dSmrg    IceAcceptFailure,
75266e564dSmrg    IceAcceptBadMalloc
76266e564dSmrg} IceAcceptStatus;
77266e564dSmrg
78266e564dSmrgtypedef enum {
79266e564dSmrg    IceClosedNow,
80266e564dSmrg    IceClosedASAP,
81266e564dSmrg    IceConnectionInUse,
82266e564dSmrg    IceStartedShutdownNegotiation
83266e564dSmrg} IceCloseStatus;
84266e564dSmrg
85266e564dSmrgtypedef enum {
86266e564dSmrg    IceProcessMessagesSuccess,
87266e564dSmrg    IceProcessMessagesIOError,
88266e564dSmrg    IceProcessMessagesConnectionClosed
89266e564dSmrg} IceProcessMessagesStatus;
90266e564dSmrg
91266e564dSmrgtypedef struct {
92266e564dSmrg    unsigned long	sequence_of_request;
93266e564dSmrg    int			major_opcode_of_request;
94266e564dSmrg    int			minor_opcode_of_request;
95266e564dSmrg    IcePointer		reply;
96266e564dSmrg} IceReplyWaitInfo;
97266e564dSmrg
98266e564dSmrgtypedef struct _IceConn *IceConn;
99266e564dSmrgtypedef struct _IceListenObj *IceListenObj;
100266e564dSmrg
101266e564dSmrgtypedef void (*IceWatchProc) (
102266e564dSmrg    IceConn		/* iceConn */,
103266e564dSmrg    IcePointer		/* clientData */,
104266e564dSmrg    Bool		/* opening */,
105266e564dSmrg    IcePointer *	/* watchData */
106266e564dSmrg);
107266e564dSmrg
108266e564dSmrgtypedef void (*IcePoProcessMsgProc) (
109266e564dSmrg    IceConn 		/* iceConn */,
110266e564dSmrg    IcePointer		/* clientData */,
111266e564dSmrg    int			/* opcode */,
112266e564dSmrg    unsigned long	/* length */,
113266e564dSmrg    Bool		/* swap */,
114266e564dSmrg    IceReplyWaitInfo *  /* replyWait */,
115266e564dSmrg    Bool *		/* replyReadyRet */
116266e564dSmrg);
117266e564dSmrg
118266e564dSmrgtypedef void (*IcePaProcessMsgProc) (
119266e564dSmrg    IceConn 		/* iceConn */,
120266e564dSmrg    IcePointer		/* clientData */,
121266e564dSmrg    int			/* opcode */,
122266e564dSmrg    unsigned long	/* length */,
123266e564dSmrg    Bool		/* swap */
124266e564dSmrg);
125266e564dSmrg
126266e564dSmrgtypedef struct {
127266e564dSmrg    int			 major_version;
128266e564dSmrg    int			 minor_version;
129266e564dSmrg    IcePoProcessMsgProc  process_msg_proc;
130266e564dSmrg} IcePoVersionRec;
131266e564dSmrg
132266e564dSmrgtypedef struct {
133266e564dSmrg    int			 major_version;
134266e564dSmrg    int			 minor_version;
135266e564dSmrg    IcePaProcessMsgProc  process_msg_proc;
136266e564dSmrg} IcePaVersionRec;
137266e564dSmrg
138266e564dSmrgtypedef IcePoAuthStatus (*IcePoAuthProc) (
139266e564dSmrg    IceConn		/* iceConn */,
140266e564dSmrg    IcePointer *	/* authStatePtr */,
141266e564dSmrg    Bool		/* cleanUp */,
142266e564dSmrg    Bool		/* swap */,
143266e564dSmrg    int			/* authDataLen */,
144266e564dSmrg    IcePointer		/* authData */,
145266e564dSmrg    int *		/* replyDataLenRet */,
146266e564dSmrg    IcePointer *	/* replyDataRet */,
147266e564dSmrg    char **		/* errorStringRet */
148266e564dSmrg);
149266e564dSmrg
150266e564dSmrgtypedef IcePaAuthStatus (*IcePaAuthProc) (
151266e564dSmrg    IceConn		/* iceConn */,
152266e564dSmrg    IcePointer *	/* authStatePtr */,
153266e564dSmrg    Bool		/* swap */,
154266e564dSmrg    int			/* authDataLen */,
155266e564dSmrg    IcePointer		/* authData */,
156266e564dSmrg    int *		/* replyDataLenRet */,
157266e564dSmrg    IcePointer *	/* replyDataRet */,
158266e564dSmrg    char **		/* errorStringRet */
159266e564dSmrg);
160266e564dSmrg
161266e564dSmrgtypedef Bool (*IceHostBasedAuthProc) (
162266e564dSmrg    char *		/* hostName */
163266e564dSmrg);
164266e564dSmrg
165266e564dSmrgtypedef Status (*IceProtocolSetupProc) (
166266e564dSmrg    IceConn 		/* iceConn */,
167266e564dSmrg    int			/* majorVersion */,
168266e564dSmrg    int			/* minorVersion */,
169266e564dSmrg    char *		/* vendor */,
170266e564dSmrg    char *		/* release */,
171266e564dSmrg    IcePointer *	/* clientDataRet */,
172266e564dSmrg    char **		/* failureReasonRet */
173266e564dSmrg);
174266e564dSmrg
175266e564dSmrgtypedef void (*IceProtocolActivateProc) (
176266e564dSmrg    IceConn 		/* iceConn */,
177266e564dSmrg    IcePointer		/* clientData */
178266e564dSmrg);
179266e564dSmrg
180266e564dSmrgtypedef void (*IceIOErrorProc) (
181266e564dSmrg    IceConn 		/* iceConn */
182266e564dSmrg);
183266e564dSmrg
184266e564dSmrgtypedef void (*IcePingReplyProc) (
185266e564dSmrg    IceConn 		/* iceConn */,
186266e564dSmrg    IcePointer		/* clientData */
187266e564dSmrg);
188266e564dSmrg
189266e564dSmrgtypedef void (*IceErrorHandler) (
190266e564dSmrg    IceConn 		/* iceConn */,
191266e564dSmrg    Bool		/* swap */,
192266e564dSmrg    int			/* offendingMinorOpcode */,
193266e564dSmrg    unsigned long 	/* offendingSequence */,
194266e564dSmrg    int 		/* errorClass */,
195266e564dSmrg    int			/* severity */,
196266e564dSmrg    IcePointer		/* values */
197266e564dSmrg);
198266e564dSmrg
199266e564dSmrgtypedef void (*IceIOErrorHandler) (
200266e564dSmrg    IceConn 		/* iceConn */
201266e564dSmrg);
202266e564dSmrg
203266e564dSmrg
204266e564dSmrg/*
205266e564dSmrg * Function prototypes
206266e564dSmrg */
207266e564dSmrg
208266e564dSmrg_XFUNCPROTOBEGIN
209266e564dSmrg
210266e564dSmrgextern int IceRegisterForProtocolSetup (
211266e564dSmrg    char *			/* protocolName */,
212266e564dSmrg    char *			/* vendor */,
213266e564dSmrg    char *			/* release */,
214266e564dSmrg    int				/* versionCount */,
215266e564dSmrg    IcePoVersionRec *		/* versionRecs */,
216266e564dSmrg    int				/* authCount */,
217266e564dSmrg    char **			/* authNames */,
218266e564dSmrg    IcePoAuthProc *		/* authProcs */,
219266e564dSmrg    IceIOErrorProc		/* IOErrorProc */
220266e564dSmrg);
221266e564dSmrg
222266e564dSmrgextern int IceRegisterForProtocolReply (
223266e564dSmrg    char *			/* protocolName */,
224266e564dSmrg    char *			/* vendor */,
225266e564dSmrg    char *			/* release */,
226266e564dSmrg    int				/* versionCount */,
227266e564dSmrg    IcePaVersionRec *		/* versionRecs */,
228266e564dSmrg    int				/* authCount */,
229266e564dSmrg    char **			/* authNames */,
230266e564dSmrg    IcePaAuthProc *		/* authProcs */,
231266e564dSmrg    IceHostBasedAuthProc	/* hostBasedAuthProc */,
232266e564dSmrg    IceProtocolSetupProc	/* protocolSetupProc */,
233266e564dSmrg    IceProtocolActivateProc	/* protocolActivateProc */,
234266e564dSmrg    IceIOErrorProc		/* IOErrorProc */
235266e564dSmrg);
236266e564dSmrg
237266e564dSmrgextern IceConn IceOpenConnection (
238266e564dSmrg    char *		/* networkIdsList */,
239266e564dSmrg    IcePointer		/* context */,
240266e564dSmrg    Bool		/* mustAuthenticate */,
241266e564dSmrg    int			/* majorOpcodeCheck */,
242266e564dSmrg    int			/* errorLength */,
243266e564dSmrg    char *		/* errorStringRet */
244266e564dSmrg);
245266e564dSmrg
246266e564dSmrgextern IcePointer IceGetConnectionContext (
247266e564dSmrg    IceConn		/* iceConn */
248266e564dSmrg);
249266e564dSmrg
250266e564dSmrgextern Status IceListenForConnections (
251266e564dSmrg    int *		/* countRet */,
252266e564dSmrg    IceListenObj **	/* listenObjsRet */,
253266e564dSmrg    int			/* errorLength */,
254266e564dSmrg    char *		/* errorStringRet */
255266e564dSmrg);
256266e564dSmrg
257266e564dSmrgextern Status IceListenForWellKnownConnections (
258266e564dSmrg    char *		/* port */,
259266e564dSmrg    int *		/* countRet */,
260266e564dSmrg    IceListenObj **	/* listenObjsRet */,
261266e564dSmrg    int			/* errorLength */,
262266e564dSmrg    char *		/* errorStringRet */
263266e564dSmrg);
264266e564dSmrg
265266e564dSmrgextern int IceGetListenConnectionNumber (
266266e564dSmrg    IceListenObj	/* listenObj */
267266e564dSmrg);
268266e564dSmrg
269266e564dSmrgextern char *IceGetListenConnectionString (
270266e564dSmrg    IceListenObj	/* listenObj */
271266e564dSmrg);
272266e564dSmrg
273266e564dSmrgextern char *IceComposeNetworkIdList (
274266e564dSmrg    int			/* count */,
275266e564dSmrg    IceListenObj *	/* listenObjs */
276266e564dSmrg);
277266e564dSmrg
278266e564dSmrgextern void IceFreeListenObjs (
279266e564dSmrg    int			/* count */,
280266e564dSmrg    IceListenObj *	/* listenObjs */
281266e564dSmrg);
282266e564dSmrg
283266e564dSmrgextern void IceSetHostBasedAuthProc (
284266e564dSmrg    IceListenObj		/* listenObj */,
285266e564dSmrg    IceHostBasedAuthProc   	/* hostBasedAuthProc */
286266e564dSmrg);
287266e564dSmrg
288266e564dSmrgextern IceConn IceAcceptConnection (
289266e564dSmrg    IceListenObj	/* listenObj */,
290266e564dSmrg    IceAcceptStatus *	/* statusRet */
291266e564dSmrg);
292266e564dSmrg
293266e564dSmrgextern void IceSetShutdownNegotiation (
294266e564dSmrg    IceConn		/* iceConn */,
295266e564dSmrg    Bool		/* negotiate */
296266e564dSmrg);
297266e564dSmrg
298266e564dSmrgextern Bool IceCheckShutdownNegotiation (
299266e564dSmrg    IceConn		/* iceConn */
300266e564dSmrg);
301266e564dSmrg
302266e564dSmrgextern IceCloseStatus IceCloseConnection (
303266e564dSmrg    IceConn		/* iceConn */
304266e564dSmrg);
305266e564dSmrg
306266e564dSmrgextern Status IceAddConnectionWatch (
307266e564dSmrg    IceWatchProc		/* watchProc */,
308266e564dSmrg    IcePointer			/* clientData */
309266e564dSmrg);
310266e564dSmrg
311266e564dSmrgextern void IceRemoveConnectionWatch (
312266e564dSmrg    IceWatchProc		/* watchProc */,
313266e564dSmrg    IcePointer			/* clientData */
314266e564dSmrg);
315266e564dSmrg
316266e564dSmrgextern IceProtocolSetupStatus IceProtocolSetup (
317266e564dSmrg    IceConn		/* iceConn */,
318266e564dSmrg    int 		/* myOpcode */,
319266e564dSmrg    IcePointer		/* clientData */,
320266e564dSmrg    Bool		/* mustAuthenticate */,
321266e564dSmrg    int	*		/* majorVersionRet */,
322266e564dSmrg    int	*		/* minorVersionRet */,
323266e564dSmrg    char **		/* vendorRet */,
324266e564dSmrg    char **		/* releaseRet */,
325266e564dSmrg    int			/* errorLength */,
326266e564dSmrg    char *		/* errorStringRet */
327266e564dSmrg);
328266e564dSmrg
329266e564dSmrgextern Status IceProtocolShutdown (
330266e564dSmrg    IceConn		/* iceConn */,
331266e564dSmrg    int			/* majorOpcode */
332266e564dSmrg);
333266e564dSmrg
334266e564dSmrgextern IceProcessMessagesStatus IceProcessMessages (
335266e564dSmrg    IceConn		/* iceConn */,
336266e564dSmrg    IceReplyWaitInfo *	/* replyWait */,
337266e564dSmrg    Bool *		/* replyReadyRet */
338266e564dSmrg);
339266e564dSmrg
340266e564dSmrgextern Status IcePing (
341266e564dSmrg   IceConn		/* iceConn */,
342266e564dSmrg   IcePingReplyProc	/* pingReplyProc */,
343266e564dSmrg   IcePointer		/* clientData */
344266e564dSmrg);
345266e564dSmrg
346266e564dSmrgextern char *IceAllocScratch (
347266e564dSmrg   IceConn		/* iceConn */,
348266e564dSmrg   unsigned long	/* size */
349266e564dSmrg);
350266e564dSmrg
351266e564dSmrgextern int IceFlush (
352266e564dSmrg   IceConn		/* iceConn */
353266e564dSmrg);
354266e564dSmrg
355266e564dSmrgextern int IceGetOutBufSize (
356266e564dSmrg   IceConn		/* iceConn */
357266e564dSmrg);
358266e564dSmrg
359266e564dSmrgextern int IceGetInBufSize (
360266e564dSmrg   IceConn		/* iceConn */
361266e564dSmrg);
362266e564dSmrg
363266e564dSmrgextern IceConnectStatus IceConnectionStatus (
364266e564dSmrg    IceConn		/* iceConn */
365266e564dSmrg);
366266e564dSmrg
367266e564dSmrgextern char *IceVendor (
368266e564dSmrg    IceConn		/* iceConn */
369266e564dSmrg);
370266e564dSmrg
371266e564dSmrgextern char *IceRelease (
372266e564dSmrg    IceConn		/* iceConn */
373266e564dSmrg);
374266e564dSmrg
375266e564dSmrgextern int IceProtocolVersion (
376266e564dSmrg    IceConn		/* iceConn */
377266e564dSmrg);
378266e564dSmrg
379266e564dSmrgextern int IceProtocolRevision (
380266e564dSmrg    IceConn		/* iceConn */
381266e564dSmrg);
382266e564dSmrg
383266e564dSmrgextern int IceConnectionNumber (
384266e564dSmrg    IceConn		/* iceConn */
385266e564dSmrg);
386266e564dSmrg
387266e564dSmrgextern char *IceConnectionString (
388266e564dSmrg    IceConn		/* iceConn */
389266e564dSmrg);
390266e564dSmrg
391266e564dSmrgextern unsigned long IceLastSentSequenceNumber (
392266e564dSmrg    IceConn		/* iceConn */
393266e564dSmrg);
394266e564dSmrg
395266e564dSmrgextern unsigned long IceLastReceivedSequenceNumber (
396266e564dSmrg    IceConn		/* iceConn */
397266e564dSmrg);
398266e564dSmrg
399266e564dSmrgextern Bool IceSwapping (
400266e564dSmrg    IceConn		/* iceConn */
401266e564dSmrg);
402266e564dSmrg
403266e564dSmrgextern IceErrorHandler IceSetErrorHandler (
404266e564dSmrg    IceErrorHandler 	/* handler */
405266e564dSmrg);
406266e564dSmrg
407266e564dSmrgextern IceIOErrorHandler IceSetIOErrorHandler (
408266e564dSmrg    IceIOErrorHandler 	/* handler */
409266e564dSmrg);
410266e564dSmrg
411266e564dSmrgextern char *IceGetPeerName (
412266e564dSmrg    IceConn		/* iceConn */
413266e564dSmrg);
414266e564dSmrg
415266e564dSmrg/*
416266e564dSmrg * Multithread Routines
417266e564dSmrg */
418266e564dSmrg
419266e564dSmrgextern Status IceInitThreads (
420266e564dSmrg    void
421266e564dSmrg);
422266e564dSmrg
423266e564dSmrgextern void IceAppLockConn (
424266e564dSmrg    IceConn		/* iceConn */
425266e564dSmrg);
426266e564dSmrg
427266e564dSmrgextern void IceAppUnlockConn (
428266e564dSmrg    IceConn		/* iceConn */
429266e564dSmrg);
430266e564dSmrg
431266e564dSmrg_XFUNCPROTOEND
432266e564dSmrg
433266e564dSmrg#endif /* _ICELIB_H_ */
434