src/protocols/sametime/meanwhile/mw_srvc_resolve.h

Fri, 20 Jan 2006 00:19:53 +0000

author
Ethan Blanton <elb@pidgin.im>
date
Fri, 20 Jan 2006 00:19:53 +0000
changeset 12956
39a4efae983c
permissions
-rw-r--r--

[gaim-migrate @ 15309]
Add .cvsignore actions to meanwhile so cvs shuts up about it.

12956
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2 /*
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
3 Meanwhile - Unofficial Lotus Sametime Community Client Library
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
4 Copyright (C) 2004 Christopher (siege) O'Brien
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
5
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
6 This library is free software; you can redistribute it and/or
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
7 modify it under the terms of the GNU Library General Public
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
8 License as published by the Free Software Foundation; either
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
9 version 2 of the License, or (at your option) any later version.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
10
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
11 This library is distributed in the hope that it will be useful,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
14 Library General Public License for more details.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
15
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
16 You should have received a copy of the GNU Library General Public
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
17 License along with this library; if not, write to the Free
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
19 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
20
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
21 #ifndef _MW_SRVC_RESOLVE_H
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
22 #define _MW_SRVC_RESOLVE_H
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
23
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
24
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
25 #include <glib.h>
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
26 #include <glib/glist.h>
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
27
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
28
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
29 /** Type identifier for the conference service */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
30 #define mwService_RESOLVE 0x00000015
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
31
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
32
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
33 /** Return value of mwServiceResolve_search indicating an error */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
34 #define SEARCH_ERROR 0x00
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
35
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
36
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
37 /** @struct mwServiceResolve
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
38 User lookup service */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
39 struct mwServiceResolve;
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
40
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
41
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
42 enum mwResolveFlag {
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
43 /** return unique results or none at all */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
44 mwResolveFlag_UNIQUE = 0x00000001,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
45
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
46 /** return only the first result */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
47 mwResolveFlag_FIRST = 0x00000002,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
48
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
49 /** search all directories, not just the first with a match */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
50 mwResolveFlag_ALL_DIRS = 0x00000004,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
51
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
52 /** search for users */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
53 mwResolveFlag_USERS = 0x00000008,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
54
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
55 /** search for groups */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
56 mwResolveFlag_GROUPS = 0x00000010,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
57 };
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
58
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
59
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
60 /** @see mwResolveResult */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
61 enum mwResolveCode {
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
62 /** successful search */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
63 mwResolveCode_SUCCESS = 0x00000000,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
64
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
65 /** only some of the nested searches were successful */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
66 mwResolveCode_PARTIAL = 0x00010000,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
67
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
68 /** more than one result (occurs when mwResolveFlag_UNIQUE is used
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
69 and more than one result would have been otherwise returned) */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
70 mwResolveCode_MULTIPLE = 0x80020000,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
71
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
72 /** the name is not resolvable due to its format */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
73 mwResolveCode_BAD_FORMAT = 0x80030000,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
74 };
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
75
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
76
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
77 enum mwResolveMatchType {
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
78 mwResolveMatch_USER = 0x00000001,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
79 mwResolveMatch_GROUP = 0x00000002,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
80 };
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
81
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
82
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
83 struct mwResolveMatch {
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
84 char *id; /**< user id */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
85 char *name; /**< user name */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
86 char *desc; /**< description */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
87 guint32 type; /**< @see mwResolveMatchType */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
88 };
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
89
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
90
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
91 struct mwResolveResult {
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
92 guint32 code; /**< @see mwResolveCode */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
93 char *name; /**< name of the result */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
94 GList *matches; /**< list of mwResolveMatch */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
95 };
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
96
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
97
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
98 /** Handle the results of a resolve request. If there was a cleanup
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
99 function specified to mwServiceResolve_search, it will be called
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
100 upon the user data after this callback returns.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
101
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
102 @param srvc the resolve service
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
103 @param id the resolve request ID
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
104 @param code return code
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
105 @param results list of mwResolveResult
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
106 @param data optional user data attached to the request
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
107 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
108 typedef void (*mwResolveHandler)
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
109 (struct mwServiceResolve *srvc,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
110 guint32 id, guint32 code, GList *results,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
111 gpointer data);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
112
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
113
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
114 /** Allocate a new resolve service */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
115 struct mwServiceResolve *mwServiceResolve_new(struct mwSession *);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
116
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
117
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
118 /** Inisitate a resolve request.
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
119
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
120 @param srvc the resolve service
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
121 @param queries list query strings
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
122 @param flags search flags
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
123 @param handler result handling function
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
124 @param data optional user data attached to the request
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
125 @param cleanup optional function to clean up user data
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
126 @return generated ID for the search request, or SEARCH_ERROR
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
127 */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
128 guint32 mwServiceResolve_resolve(struct mwServiceResolve *srvc,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
129 GList *queries, enum mwResolveFlag flags,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
130 mwResolveHandler handler,
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
131 gpointer data, GDestroyNotify cleanup);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
132
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
133
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
134 /** Cancel a resolve request by its generated ID. The handler function
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
135 will not be called, and the optional cleanup function will be
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
136 called upon the optional user data for the request */
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
137 void mwServiceResolve_cancelResolve(struct mwServiceResolve *, guint32);
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
138
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
139
39a4efae983c [gaim-migrate @ 15309]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
140 #endif

mercurial