Mercurial > pidgin
annotate src/protocols/novell/nmuser.h @ 13967:99b9b58b19dd
[gaim-migrate @ 16523]
Fix a crazy MSN crash. Basically it's possible to have more than one
slplink associated with a given switchboard, but our code did not
allow for that. I think it happens when you're in a multi-user
chat and you do stuff with multiple users that involves slplinks.
Like maybe file transfer and buddy icon related stuff.
Tracking this down took an ungodly amount of time, but thanks to
Meebo for letting me do it :-)
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 20 Jul 2006 07:31:15 +0000 |
parents | d77537e8bfe5 |
children |
rev | line source |
---|---|
8675 | 1 /* |
2 * nmuser.h | |
3 * | |
8933 | 4 * Copyright (c) 2004 Novell, Inc. All Rights Reserved. |
5 * | |
6 * This program is free software; you can redistribute it and/or modify | |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; version 2 of the License. | |
8675 | 9 * |
8933 | 10 * This program is distributed in the hope that it will be useful, |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 * GNU General Public License for more details. | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
14 * |
8933 | 15 * You should have received a copy of the GNU General Public License |
16 * along with this program; if not, write to the Free Software | |
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
8675 | 18 * |
19 */ | |
20 | |
21 #ifndef __NM_USER_H__ | |
22 #define __NM_USER_H__ | |
23 | |
24 #include <glib.h> | |
25 #include <stdio.h> | |
26 #include <stdlib.h> | |
27 | |
28 typedef guint32 NMERR_T; | |
29 typedef int NMSTATUS_T; | |
30 | |
31 typedef struct _NMUser NMUser; | |
32 | |
33 typedef enum | |
34 { | |
35 NMREQUEST_TYPE_LOGIN = 0, | |
36 NMREQUEST_TYPE_LOGOUT, | |
37 NMREQUEST_TYPE_SETSTATUS, | |
38 NMREQUEST_TYPE_GETDETAILS, | |
39 NMREQUEST_TYPE_CREATECONF, | |
40 NMREQUEST_TYPE_SENDMESSAGE, | |
41 NMREQUEST_TYPE_JOINCONF, | |
42 NMREQUEST_TYPE_LEAVECONF, | |
43 NMREQUEST_TYPE_REJECTCONF, | |
44 NMREQUEST_TYPE_SENDTYPING, | |
45 NMREQUEST_TYPE_CREATECONTACT, | |
46 NMREQUEST_TYPE_DELETECONTACT | |
47 | |
48 } NMRequestType; | |
49 | |
50 #include "debug.h" | |
51 #include "nmmessage.h" | |
52 #include "nmconference.h" | |
53 #include "nmcontact.h" | |
54 #include "nmuserrecord.h" | |
55 #include "nmfield.h" | |
56 #include "nmevent.h" | |
57 | |
58 /* Callback typedefs */ | |
59 typedef void (*nm_response_cb) (NMUser * user, NMERR_T ret_code, | |
60 gpointer resp_data, gpointer user_data); | |
61 | |
62 typedef void (*nm_event_cb) (NMUser * user, NMEvent * event); | |
63 | |
64 #include "nmrequest.h" | |
65 #include "nmconn.h" | |
66 | |
67 /* This represents user that we are currently logged in as */ | |
68 struct _NMUser | |
69 { | |
70 | |
71 char *name; | |
72 | |
73 NMSTATUS_T status; | |
74 | |
75 /* A copy of the login response fields */ | |
76 NMField *fields; | |
77 | |
78 /* The user record for this user */ | |
79 NMUserRecord *user_record; | |
80 | |
81 /* Our connection information */ | |
82 NMConn *conn; | |
83 | |
84 /* Our public IP address */ | |
85 char *address; | |
86 | |
87 /* This is the contact list */ | |
88 NMFolder *root_folder; | |
89 | |
90 /* All contacts that we know about hashed by dn */ | |
91 GHashTable *contacts; | |
92 | |
93 /* All user records hashed by dn */ | |
94 GHashTable *user_records; | |
95 | |
96 /* DN lookup */ | |
97 GHashTable *display_id_to_dn; | |
98 | |
99 /* One on one conversations indexed by recipient's dn */ | |
100 GSList *conferences; | |
101 | |
102 guint32 conference_count; | |
103 | |
104 /* Called when we receive an event */ | |
105 nm_event_cb evt_callback; | |
106 | |
8933 | 107 /* Privacy settings */ |
108 gboolean privacy_locked; | |
109 gboolean default_deny; | |
110 GSList *allow_list; | |
111 GSList *deny_list; | |
112 | |
8675 | 113 /* Pending requests. If we need to go to the server to more info |
114 * before processing a request we will queue it up and process when | |
115 * we get a response | |
116 */ | |
117 GSList *pending_requests; | |
118 | |
119 /* Pending events. Same as above except for events. */ | |
120 GSList *pending_events; | |
121 | |
122 /* Generic pointer to data needed by the client | |
123 * using the API | |
124 */ | |
125 gpointer client_data; | |
126 | |
9268 | 127 /* Have the privacy lists been synched yet */ |
128 gboolean privacy_synched; | |
129 | |
9360 | 130 /* Has the contact list been synched */ |
131 gboolean clist_synched; | |
8675 | 132 }; |
133 | |
134 #define NM_STATUS_UNKNOWN 0 | |
135 #define NM_STATUS_OFFLINE 1 | |
136 #define NM_STATUS_AVAILABLE 2 | |
137 #define NM_STATUS_BUSY 3 | |
138 #define NM_STATUS_AWAY 4 | |
139 #define NM_STATUS_AWAY_IDLE 5 | |
140 #define NM_STATUS_INVALID 6 | |
141 | |
142 #define NMERR_BASE 0x2000L | |
143 #define NM_OK 0L | |
144 #define NMERR_BAD_PARM (NMERR_BASE + 0x0001) | |
145 #define NMERR_TCP_WRITE (NMERR_BASE + 0x0002) | |
146 #define NMERR_TCP_READ (NMERR_BASE + 0x0003) | |
147 #define NMERR_PROTOCOL (NMERR_BASE + 0x0004) | |
8933 | 148 #define NMERR_SERVER_REDIRECT (NMERR_BASE + 0x0005) |
8675 | 149 #define NMERR_CONFERENCE_NOT_FOUND (NMERR_BASE + 0x0006) |
150 #define NMERR_CONFERENCE_NOT_INSTANTIATED (NMERR_BASE + 0x0007) | |
151 #define NMERR_FOLDER_EXISTS (NMERR_BASE + 0x0008) | |
152 | |
8933 | 153 /* Errors that are returned from the server */ |
154 #define NMERR_SERVER_BASE 0xD100L | |
155 #define NMERR_ACCESS_DENIED (NMERR_SERVER_BASE + 0x0006) | |
156 #define NMERR_NOT_SUPPORTED (NMERR_SERVER_BASE + 0x000A) | |
157 #define NMERR_PASSWORD_EXPIRED (NMERR_SERVER_BASE + 0x000B) | |
158 #define NMERR_PASSWORD_INVALID (NMERR_SERVER_BASE + 0x000C) | |
159 #define NMERR_USER_NOT_FOUND (NMERR_SERVER_BASE + 0x000D) | |
160 #define NMERR_USER_DISABLED (NMERR_SERVER_BASE + 0x0010) | |
161 #define NMERR_DIRECTORY_FAILURE (NMERR_SERVER_BASE + 0x0011) | |
162 #define NMERR_HOST_NOT_FOUND (NMERR_SERVER_BASE + 0x0019) | |
163 #define NMERR_ADMIN_LOCKED (NMERR_SERVER_BASE + 0x001C) | |
164 #define NMERR_DUPLICATE_PARTICIPANT (NMERR_SERVER_BASE + 0x001F) | |
165 #define NMERR_SERVER_BUSY (NMERR_SERVER_BASE + 0x0023) | |
166 #define NMERR_OBJECT_NOT_FOUND (NMERR_SERVER_BASE + 0x0024) | |
167 #define NMERR_DIRECTORY_UPDATE (NMERR_SERVER_BASE + 0x0025) | |
168 #define NMERR_DUPLICATE_FOLDER (NMERR_SERVER_BASE + 0x0026) | |
169 #define NMERR_DUPLICATE_CONTACT (NMERR_SERVER_BASE + 0x0027) | |
170 #define NMERR_USER_NOT_ALLOWED (NMERR_SERVER_BASE + 0x0028) | |
171 #define NMERR_TOO_MANY_CONTACTS (NMERR_SERVER_BASE + 0x0029) | |
172 #define NMERR_CONFERENCE_NOT_FOUND_2 (NMERR_SERVER_BASE + 0x002B) | |
173 #define NMERR_TOO_MANY_FOLDERS (NMERR_SERVER_BASE + 0x002C) | |
174 #define NMERR_SERVER_PROTOCOL (NMERR_SERVER_BASE + 0x0030) | |
175 #define NMERR_CONVERSATION_INVITE (NMERR_SERVER_BASE + 0x0035) | |
176 #define NMERR_USER_BLOCKED (NMERR_SERVER_BASE + 0x0039) | |
177 #define NMERR_MASTER_ARCHIVE_MISSING (NMERR_SERVER_BASE + 0x003A) | |
178 #define NMERR_PASSWORD_EXPIRED_2 (NMERR_SERVER_BASE + 0x0042) | |
179 #define NMERR_CREDENTIALS_MISSING (NMERR_SERVER_BASE + 0x0046) | |
180 #define NMERR_AUTHENTICATION_FAILED (NMERR_SERVER_BASE + 0x0049) | |
181 #define NMERR_EVAL_CONNECTION_LIMIT (NMERR_SERVER_BASE + 0x004A) | |
8675 | 182 |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
183 /** |
8675 | 184 * Initialize the user that we are going to login to the system as. |
185 * | |
186 * @param name The userid of the user | |
187 * @param server IP Address of server | |
188 * @param port Port to connect to on the server | |
189 * @param data Client data to associate with the user | |
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8684
diff
changeset
|
190 * @param event_callback Function to call when we receive an event |
8675 | 191 * |
192 * @return The initialized user object. Must be freed by calling | |
193 * nm_deinitialize_user | |
194 */ | |
195 NMUser *nm_initialize_user(const char *name, const char *server, int port, | |
196 gpointer data, nm_event_cb event_callback); | |
197 | |
198 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
199 /** |
8675 | 200 * Free up resources associated with the user object. |
201 * | |
202 * @param user The user to deinitialize | |
203 */ | |
204 void nm_deinitialize_user(NMUser * user); | |
205 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
206 /** |
8675 | 207 * Send a login request to the server. |
208 * | |
209 * The response data sent to the callback will be NULL. | |
210 * | |
211 * @param user The User to login -- must be initialized | |
212 * @param pwd The password of the user | |
213 * @param my_addr The address of the client machine | |
214 * @param user_agent String describing the client (eg. "Gaim/0.76 (Linux; 2.4.20)") | |
215 * @param callback Function to call when we get the response from the server | |
216 * @param data User defined data to be passed to the callback function | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
217 * |
8675 | 218 * |
219 * @return NM_OK if login is sent successfully, error otherwise. | |
220 */ | |
221 NMERR_T nm_send_login(NMUser * user, const char *pwd, const char *my_addr, | |
222 const char *user_agent, nm_response_cb callback, | |
223 gpointer data); | |
224 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
225 /** |
8675 | 226 * Send a set status request to the server. |
227 * | |
228 * The response data sent to the callback will be NULL. | |
229 * | |
230 * @param user The logged in User | |
231 * @param dn The DN of the user (if known, or NULL if not known) | |
232 * @param address IP Address of server | |
233 * @param callback Function to call when we get the response from the server | |
234 * | |
235 * | |
236 * @return NM_OK if successfully sent, error otherwise | |
237 */ | |
238 NMERR_T nm_send_set_status(NMUser * user, int status, const char *text, | |
239 const char *auto_resp, nm_response_cb callback, | |
240 gpointer data); | |
241 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
242 /** |
8675 | 243 * Send a create conference to the server. |
244 * | |
245 * The response data sent to the callback will be NULL. | |
246 * | |
8933 | 247 * @param user The logged in User |
248 * @param conference Conference to create | |
249 * @param add_participants Add participant list on create? | |
250 * @param callback Function to call when we get the response from the server | |
251 * @param data User defined data to be passed to the callback function | |
8675 | 252 * |
253 * @return NM_OK if successfully sent, error otherwise | |
254 */ | |
255 NMERR_T nm_send_create_conference(NMUser * user, NMConference * conference, | |
256 nm_response_cb callback, gpointer data); | |
257 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
258 /** |
8675 | 259 * Tell server we have left the conference. |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
260 * |
8675 | 261 * The response data sent to the callback will be NULL. |
262 * | |
263 * @param user The logged in User | |
264 * @param conference Conference the user is leaving | |
265 * @param callback Function to call when we get the response from the server | |
266 * @param data User defined data to be passed to the callback function | |
267 * | |
268 * @return NM_OK if successfully sent, error otherwise | |
269 */ | |
270 NMERR_T nm_send_leave_conference(NMUser * user, NMConference * conference, | |
271 nm_response_cb callback, gpointer data); | |
272 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
273 /** |
8675 | 274 * Send a join conference request to the server. |
275 * | |
276 * The response data sent to the callback will be NULL. | |
277 * | |
278 * @param user The logged in User | |
279 * @param conference Conference the user is joining | |
280 * @param callback Function to call when we get the response from the server | |
281 * @param data User defined data to be passed to the callback function | |
282 * | |
283 * | |
284 * @return NM_OK if successfully sent, error otherwise | |
285 */ | |
286 NMERR_T nm_send_join_conference(NMUser * user, NMConference * conference, | |
287 nm_response_cb callback, gpointer data); | |
288 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
289 /** |
8675 | 290 * Send a conference reject request to the server. |
291 * | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
292 * The response data sent to the callback will be NULL. |
8675 | 293 * |
294 * @param user The logged in User | |
295 * @param conference Conference the user is rejecting | |
296 * @param callback Function to call when we get the response from the server | |
297 * @param data User defined data to be passed to the callback function | |
298 * | |
299 * | |
300 * @return NM_OK if successfully sent, error otherwise | |
301 */ | |
302 NMERR_T nm_send_reject_conference(NMUser * user, NMConference * conference, | |
303 nm_response_cb callback, gpointer data); | |
304 | |
8933 | 305 |
306 /** | |
307 * Send a conference invitation to the server. | |
308 * | |
309 * The response data sent to the callback will be NULL. | |
310 * | |
311 * @param user The logged in User | |
312 * @param conference Conference the user is rejecting | |
313 * @param user_record The user to invite | |
314 * @param message The invite message if there is one, NULL otherwise | |
315 * @param callback Function to call when we get the response from the server | |
316 * @param data User defined data to be passed to the callback function | |
317 * | |
318 * | |
319 * @return NM_OK if successfully sent, error otherwise | |
320 */ | |
321 NMERR_T nm_send_conference_invite(NMUser *user, NMConference *conference, NMUserRecord *user_record, | |
322 const char *message, nm_response_cb callback, gpointer data); | |
323 | |
324 /** | |
325 * Get details for a more than one user from the server. | |
326 * | |
327 * The response data sent to the callback will be an NMUserRecord which should be | |
328 * freed with nm_release_user_record | |
329 * | |
330 * @param user The logged in User | |
331 * @param names Link list of user id's or dn's | |
332 * @param callback Function to call when we get the response from the server | |
333 * @param data User defined data to be passed to the callback function | |
334 * | |
335 * @return NM_OK if successfully sent, error otherwise | |
336 */ | |
337 NMERR_T nm_send_multiple_get_details(NMUser * user, GSList *names, | |
338 nm_response_cb callback, gpointer data); | |
339 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
340 /** |
8675 | 341 * Get details for a user from the server. |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
342 * |
8675 | 343 * The response data sent to the callback will be an NMUserRecord which should be |
344 * freed with nm_release_user_record | |
345 * | |
346 * @param user The logged in User | |
347 * @param name Userid or DN of the user to look up | |
348 * @param callback Function to call when we get the response from the server | |
349 * @param data User defined data to be passed to the callback function | |
350 * | |
351 * @return NM_OK if successfully sent, error otherwise | |
352 */ | |
353 NMERR_T nm_send_get_details(NMUser * user, const char *name, | |
354 nm_response_cb callback, gpointer data); | |
355 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
356 /** |
8675 | 357 * Send a message. |
358 * | |
359 * The response data sent to the callback will be NULL. | |
360 * | |
361 * @param user The logged in User | |
362 * @param message The message to send. | |
363 * @param callback Function to call when we get the response from the server | |
364 * | |
365 * @return NM_OK if successfully sent, error otherwise | |
366 */ | |
367 NMERR_T nm_send_message(NMUser * user, NMMessage * message, | |
368 nm_response_cb callback); | |
369 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
370 /** |
8675 | 371 * Sends a typing event to the server. |
372 * | |
373 * The response data sent to the callback will be NULL. | |
374 * | |
375 * @param user The logged in User | |
376 * @param conf The conference that corresponds to the typing event | |
377 * @param typing TRUE if the user is typing | |
378 * FALSE if the user has stopped typing | |
379 * @param callback Function to call when we get the response from the server | |
380 * | |
381 * @return NM_OK if successfully sent, error otherwise | |
382 */ | |
383 NMERR_T nm_send_typing(NMUser * user, NMConference * conf, | |
384 gboolean typing, nm_response_cb callback); | |
385 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
386 /** |
8675 | 387 * Send a create contact request to the server. |
388 * | |
389 * The given folder should already exist on the server. If not, | |
390 * the call will fail. | |
391 * | |
392 * The response data sent to the callback will be a NMContact which should | |
393 * be released with nm_release_contact | |
394 * | |
395 * @param user The logged in User | |
396 * @param folder The folder that the contact should be created in | |
397 * @param contact The contact to add | |
398 * @param callback Function to call when we get the response from the server | |
399 * @param data User defined data | |
400 * | |
401 * @return NM_OK if successfully sent, error otherwise | |
402 */ | |
403 NMERR_T nm_send_create_contact(NMUser * user, NMFolder * folder, | |
404 NMContact * contact, nm_response_cb callback, | |
405 gpointer data); | |
406 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
407 /** |
8675 | 408 * Send a remove contact request to the server. |
409 * | |
410 * The response data sent to the callback will be NULL. | |
411 * | |
412 * @param user The logged in User | |
413 * @param folder The folder to remove contact from | |
414 * @param contact The contact to remove | |
415 * @param callback Function to call when we get the response from the server | |
416 * @param data User defined data | |
417 * | |
418 * @return NM_OK if successfully sent, error otherwise | |
419 */ | |
420 NMERR_T nm_send_remove_contact(NMUser * user, NMFolder * folder, | |
421 NMContact * contact, nm_response_cb callback, | |
422 gpointer data); | |
423 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
424 /** |
8675 | 425 * Send a create folder request to the server. |
426 * | |
427 * The response data sent to the callback will be a NMFolder which should be | |
428 * released with nm_release_folder | |
429 * | |
430 * @param user The logged in User | |
431 * @param name The name of the folder to create | |
432 * @param callback Function to call when we get the response from the server | |
433 * @param data User defined data | |
434 * | |
435 * @return NM_OK if successfully sent, error otherwise | |
436 */ | |
437 NMERR_T nm_send_create_folder(NMUser * user, const char *name, | |
438 nm_response_cb callback, gpointer data); | |
439 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
440 /** |
8675 | 441 * Send a delete folder request to the server. |
442 * | |
443 * The response data sent to the callback will be NULL. | |
444 * | |
445 * @param user The logged in User | |
446 * @param folder The name of the folder to remove | |
447 * @param callback Function to call when we get the response from the server | |
448 * @param data User defined data | |
449 * | |
450 * @return NM_OK if successfully sent, error otherwise | |
451 */ | |
452 NMERR_T nm_send_remove_folder(NMUser * user, NMFolder * folder, | |
453 nm_response_cb callback, gpointer data); | |
454 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
455 /** |
8675 | 456 * Send a rename contact request to the server. |
457 * | |
458 * The response data sent to the callback will be NULL. | |
459 * | |
460 * @param user The logged in User | |
461 * @param contact The contact to rename | |
462 * @param new_name The new display name for the contact | |
463 * @param callback Function to call when we get the response from the server | |
464 * @param data User defined data | |
465 * | |
466 * @return NM_OK if successfully sent, error otherwise | |
467 */ | |
468 NMERR_T nm_send_rename_contact(NMUser * user, NMContact * contact, | |
469 const char *new_name, nm_response_cb callback, | |
470 gpointer data); | |
471 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
472 /** |
8675 | 473 * Send a rename folder request to the server. |
474 * | |
475 * The response data sent to the callback will be NULL. | |
476 * | |
477 * @param user The logged in User | |
478 * @param folder The folder to rename | |
479 * @param new_name The new name of the folder | |
480 * @param callback Function to call when we get the response from the server | |
481 * @param data User defined data | |
482 * | |
483 * @return NM_OK if successfully sent, error otherwise | |
484 */ | |
485 NMERR_T nm_send_rename_folder(NMUser * user, NMFolder * folder, | |
486 const char *new_name, nm_response_cb callback, | |
487 gpointer data); | |
488 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
489 /** |
8675 | 490 * Send a move contact request to the server. |
491 * | |
492 * The response data sent to the callback will be NULL. | |
493 * | |
494 * @param user The logged in User | |
495 * @param contact The contact to move | |
496 * @param folder The folder to move the contact to | |
497 * @param callback Function to call when we get the response from the server | |
498 * @param data User defined data | |
499 * | |
500 * @return NM_OK if successfully sent, error otherwise | |
501 */ | |
502 NMERR_T nm_send_move_contact(NMUser * user, NMContact * contact, | |
503 NMFolder * folder, nm_response_cb callback, | |
504 gpointer data); | |
505 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
506 /** |
8675 | 507 * Send a get status request to the server. |
508 * | |
509 * The response data sent to the callback will be a NMUserRecord. | |
510 * | |
511 * @param user The logged in User | |
512 * @param contact The contact to move | |
513 * @param folder The folder to move the contact to | |
514 * @param callback Function to call when we get the response from the server | |
515 * @param data User defined data | |
516 * | |
517 * @return NM_OK if successfully sent, error otherwise | |
518 */ | |
519 NMERR_T nm_send_get_status(NMUser * user, NMUserRecord * user_record, | |
520 nm_response_cb callback, gpointer data); | |
521 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
522 /** |
8933 | 523 * Send a request to add an item to the allow or deny list. |
524 * | |
525 * @param user The logged in User | |
526 * @param who The userid or DN of the user to add to list | |
527 * @param allow_list TRUE if adding to allow list, FALSE if adding to deny list | |
528 * @param callback Function to call when we get the response from the server | |
529 * @param data User defined data | |
530 * | |
531 * @return NM_OK if successfully sent, error otherwise | |
532 */ | |
533 NMERR_T | |
534 nm_send_create_privacy_item(NMUser *user, const char *who, gboolean is_allowed, | |
535 nm_response_cb callback, gpointer data); | |
536 | |
537 /** | |
538 * Send a request to remove an item from the allow or deny list. | |
539 * | |
540 * @param user The logged in User | |
541 * @param who The userid or DN of the user to add to list | |
542 * @param allow_list TRUE if removing from allow list, FALSE if removing from deny list | |
543 * @param callback Function to call when we get the response from the server | |
544 * @param data User defined data | |
545 * | |
546 * @return NM_OK if successfully sent, error otherwise | |
547 */ | |
548 NMERR_T | |
549 nm_send_remove_privacy_item(NMUser *user, const char *dn, gboolean allow_list, | |
550 nm_response_cb callback, gpointer data); | |
551 | |
552 /** | |
553 * Send a request to change the default privacy setting to deny all or allow all | |
554 * | |
555 * @param user The logged in User | |
556 * @param default_deny TRUE if default should be changed to deny all | |
557 * @param callback Function to call when we get the response from the server | |
558 * @param data User defined data | |
559 * | |
560 * @return NM_OK if successfully sent, error otherwise | |
561 */ | |
562 NMERR_T | |
563 nm_send_set_privacy_default(NMUser *user, gboolean default_deny, | |
564 nm_response_cb callback, gpointer data); | |
565 | |
566 /** | |
9268 | 567 * Send a ping to the server |
568 * | |
569 * @param user The logged in User | |
570 * @param callback Function to call when we get the response from the server | |
571 * @param data User defined data | |
572 * | |
573 * @return NM_OK if successfully sent, error otherwise | |
574 */ | |
575 NMERR_T | |
576 nm_send_keepalive(NMUser *user, nm_response_cb callback, gpointer data); | |
577 | |
578 /** | |
8675 | 579 * Reads a response/event from the server and processes it. |
580 * | |
581 * @param user The logged in User | |
582 */ | |
583 NMERR_T nm_process_new_data(NMUser * user); | |
584 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
585 /** |
8675 | 586 * Return the root folder of the contact list |
587 * | |
588 * @param user The logged in User | |
589 * | |
590 * @return Root folder | |
591 */ | |
592 NMFolder *nm_get_root_folder(NMUser * user); | |
593 | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
594 /** |
8675 | 595 * Create the contact list based on the login fields |
596 * | |
597 * @param user The logged in User | |
598 * | |
599 */ | |
600 NMERR_T nm_create_contact_list(NMUser * user); | |
601 | |
602 void nm_destroy_contact_list(NMUser * user); | |
603 | |
604 void nm_user_add_contact(NMUser * user, NMContact * contact); | |
605 | |
606 void nm_user_add_user_record(NMUser * user, NMUserRecord * user_record); | |
607 | |
608 NMContact *nm_find_contact(NMUser * user, const char *dn); | |
609 | |
610 GList *nm_find_contacts(NMUser * user, const char *dn); | |
611 | |
612 NMUserRecord *nm_find_user_record(NMUser * user, const char *dn); | |
613 | |
614 NMFolder *nm_find_folder(NMUser * user, const char *name); | |
615 | |
616 NMFolder *nm_find_folder_by_id(NMUser * user, int object_id); | |
617 | |
618 NMConference *nm_find_conversation(NMUser * user, const char *who); | |
619 | |
620 void nm_conference_list_add(NMUser * user, NMConference * conf); | |
621 | |
622 void nm_conference_list_remove(NMUser * user, NMConference * conf); | |
623 | |
624 void nm_conference_list_free(NMUser * user); | |
625 | |
626 NMConference *nm_conference_list_find(NMUser * user, const char *guid); | |
627 | |
628 const char *nm_lookup_dn(NMUser * user, const char *display_id); | |
629 | |
630 nm_event_cb nm_user_get_event_callback(NMUser * user); | |
631 | |
632 NMConn *nm_user_get_conn(NMUser * user); | |
633 | |
8933 | 634 gboolean nm_user_is_privacy_locked(NMUser *user); |
635 | |
8675 | 636 /** Some utility functions **/ |
637 | |
638 /** | |
8684
046dd8ef2920
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
639 * Check to see if the conference GUIDs are equivalent. |
8675 | 640 * |
641 * @param guid1 First guid to compare | |
642 * @param guid2 Second guid to compare | |
643 * | |
644 * @return TRUE if conference GUIDs are equivalent, FALSE otherwise. | |
645 * | |
646 */ | |
647 gboolean nm_are_guids_equal(const char *guid1, const char *guid2); | |
648 | |
649 | |
650 /** | |
651 * Case insensitive compare for utf8 strings | |
652 * | |
653 * @param guid1 First string to compare | |
654 * @param guid2 Second string to compare | |
655 * | |
656 * @return -1 if str1 < str2, 0 if str1 = str2, 1 if str1 > str2 | |
657 * | |
658 */ | |
659 gint nm_utf8_strcasecmp(gconstpointer str1, gconstpointer str2); | |
660 | |
661 /** | |
662 * Compare UTF8 strings for equality only (case insensitive) | |
663 * | |
664 * @param guid1 First string to compare | |
665 * @param guid2 Second string to compare | |
666 * | |
667 * @return TRUE if strings are equal, FALSE otherwise | |
668 * | |
669 */ | |
670 gboolean nm_utf8_str_equal(gconstpointer str1, gconstpointer str2); | |
671 | |
672 /** | |
673 * Convert a fully typed LDAP DN to dotted, untype notation | |
674 * e.g. cn=mike,o=novell -> mike.novell | |
675 * | |
676 * @param typed Fully typed dn | |
677 * | |
678 * @return Dotted equivalent of typed (must be freed). | |
679 * | |
680 */ | |
681 char *nm_typed_to_dotted(const char *typed); | |
682 | |
8933 | 683 /** |
684 * Return a string representation of the error code. | |
685 * | |
686 * @param error NMERR_T to convert to string | |
687 * | |
688 * @return String representation. | |
689 */ | |
690 const char *nm_error_to_string (NMERR_T err); | |
691 | |
8675 | 692 #endif |