OpenMoHAA 0.82.0
Loading...
Searching...
No Matches
chat.h
1/*
2GameSpy Chat SDK
3Dan "Mr. Pants" Schoenblum
4dan@gamespy.com
5
6Copyright 1999-2007 GameSpy Industries, Inc
7
8devsupport@gamespy.com
9*/
10
11#ifndef _CHAT_H_
12#define _CHAT_H_
13
16#include "../common/gsCommon.h"
17
18
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25/************
26** DEFINES **
27************/
28// User and channel message types.
30#define CHAT_MESSAGE 0
31#define CHAT_ACTION 1
32#define CHAT_NOTICE 2
33#define CHAT_UTM 3
34#define CHAT_ATM 4
35
36// User modes.
37// PANTS|03.12.01 - These are now bitflags!
38// Both CHAT_VOICE and CHAT_OP can be set at the same time.
40#define CHAT_NORMAL 0
41#define CHAT_VOICE 1
42#define CHAT_OP 2
43
44// Part reasons (see the chatUserParted callback).
46#define CHAT_LEFT 0 // The user left the channel.
47#define CHAT_QUIT 1 // The user quit the chat network.
48#define CHAT_KICKED 2 // The user was kicked from the channel.
49#define CHAT_KILLED 3 // The user was kicked off the chat network.
50
51// Possible nick errors while connecting.
53#define CHAT_NICK_OK 0
54#define CHAT_IN_USE 1
55#define CHAT_INVALID 2
56#define CHAT_UNIQUENICK_EXPIRED 3
57#define CHAT_NO_UNIQUENICK 4
58#define CHAT_INVALID_UNIQUENICK 5
59#define CHAT_NICK_TOO_LONG 6
60
61// Reasons why a connect attempt could fail.
63#define CHAT_DISCONNECTED 0
64#define CHAT_NICK_ERROR 1
65#define CHAT_LOGIN_FAILED 2
66
67/**********
68** TYPES **
69**********/
70// Boolean type.
72typedef enum { CHATFalse, CHATTrue } CHATBool;
73
74// A CHAT object represents a client connection to a chat server.
76typedef void * CHAT;
77
78// Object representing a channel's mode.
80typedef struct CHATChannelMode
81{
82 CHATBool InviteOnly;
83 CHATBool Private;
84 CHATBool Secret;
85 CHATBool Moderated;
86 CHATBool NoExternalMessages;
87 CHATBool OnlyOpsChangeTopic;
88 CHATBool OpsObeyChannelLimit;
89 int Limit;
91
92// The result of a channel enter attempt,
93// passed into the chatEnterChannelCallback().
95typedef enum
96{
97 CHATEnterSuccess, // The channel was successfully entered.
98 CHATBadChannelName, // The channel name was invalid.
99 CHATChannelIsFull, // The channel is at its user limit.
100 CHATInviteOnlyChannel, // The channel is invite only.
101 CHATBannedFromChannel, // The local user is banned from this channel.
102 CHATBadChannelPassword, // The channel has a password, and a bad password (or none) was given.
103 CHATTooManyChannels, // The server won't allow this user in any more channels.
104 CHATEnterTimedOut, // The attempt to enter timed out.
105 CHATBadChannelMask // Not sure if any servers use this, or what it means! (ERR_BADCHANMASK)
106} CHATEnterResult;
107
108
111#ifndef GSI_UNICODE
112#define chatConnect chatConnectA
113#define chatConnectSpecial chatConnectSpecialA
114#define chatConnectSecure chatConnectSecureA
115#define chatConnectLogin chatConnectLoginA
116#define chatConnectPreAuth chatConnectPreAuthA
117#define chatRetryWithNick chatRetryWithNickA
118#define chatRegisterUniqueNick chatRegisterUniqueNickA
119#define chatSendRaw chatSendRawA
120#define chatChangeNick chatChangeNickA
121#define chatFixNick chatFixNickA
122#define chatTranslateNick chatTranslateNickA
123#define chatAuthenticateCDKey chatAuthenticateCDKeyA
124#define chatEnumChannels chatEnumChannelsA
125#define chatEnterChannel chatEnterChannelA
126#define chatLeaveChannel chatLeaveChannelA
127#define chatSendChannelMessage chatSendChannelMessageA
128#define chatSetChannelTopic chatSetChannelTopicA
129#define chatGetChannelTopic chatGetChannelTopicA
130#define chatSetChannelMode chatSetChannelModeA
131#define chatGetChannelMode chatGetChannelModeA
132#define chatSetChannelPassword chatSetChannelPasswordA
133#define chatGetChannelPassword chatGetChannelPasswordA
134#define chatSetChannelLimit chatSetChannelLimitA
135#define chatEnumChannelBans chatEnumChannelBansA
136#define chatAddChannelBan chatAddChannelBanA
137#define chatRemoveChannelBan chatRemoveChannelBanA
138#define chatSetChannelGroup chatSetChannelGroupA
139#define chatGetChannelNumUsers chatGetChannelNumUsersA
140#define chatInChannel chatInChannelA
141#define chatEnumUsers chatEnumUsersA
142#define chatSendUserMessage chatSendUserMessageA
143#define chatGetUserInfo chatGetUserInfoA
144#define chatGetBasicUserInfo chatGetBasicUserInfoA
145#define chatGetBasicUserInfoNoWait chatGetBasicUserInfoNoWaitA
146#define chatGetChannelBasicUserInfo chatGetChannelBasicUserInfoA
147#define chatInviteUser chatInviteUserA
148#define chatKickUser chatKickUserA
149#define chatBanUser chatBanUserA
150#define chatSetUserMode chatSetUserModeA
151#define chatGetUserMode chatGetUserModeA
152#define chatGetUserModeNoWait chatGetUserModeNoWaitA
153#define chatSetGlobalKeys chatSetGlobalKeysA
154#define chatSetChannelKeys chatSetChannelKeysA
155#define chatGetGlobalKeys chatGetGlobalKeysA
156#define chatGetChannelKeys chatGetChannelKeysA
157#define chatGetNick chatGetNickA
158#define chatGetUdpRelay chatGetUdpRelayA
159#else
160#define chatConnect chatConnectW
161#define chatConnectSpecial chatConnectSpecialW
162#define chatConnectSecure chatConnectSecureW
163#define chatConnectLogin chatConnectLoginW
164#define chatConnectPreAuth chatConnectPreAuthW
165#define chatRetryWithNick chatRetryWithNickW
166#define chatRegisterUniqueNick chatRegisterUniqueNickW
167#define chatSendRaw chatSendRawW
168#define chatChangeNick chatChangeNickW
169#define chatFixNick chatFixNickW
170#define chatTranslateNick chatTranslateNickW
171#define chatAuthenticateCDKey chatAuthenticateCDKeyW
172#define chatEnumChannels chatEnumChannelsW
173#define chatEnterChannel chatEnterChannelW
174#define chatLeaveChannel chatLeaveChannelW
175#define chatSendChannelMessage chatSendChannelMessageW
176#define chatSetChannelTopic chatSetChannelTopicW
177#define chatGetChannelTopic chatGetChannelTopicW
178#define chatSetChannelMode chatSetChannelModeW
179#define chatGetChannelMode chatGetChannelModeW
180#define chatSetChannelPassword chatSetChannelPasswordW
181#define chatGetChannelPassword chatGetChannelPasswordW
182#define chatSetChannelLimit chatSetChannelLimitW
183#define chatEnumChannelBans chatEnumChannelBansW
184#define chatAddChannelBan chatAddChannelBanW
185#define chatRemoveChannelBan chatRemoveChannelBanW
186#define chatSetChannelGroup chatSetChannelGroupW
187#define chatGetChannelNumUsers chatGetChannelNumUsersW
188#define chatInChannel chatInChannelW
189#define chatEnumUsers chatEnumUsersW
190#define chatSendUserMessage chatSendUserMessageW
191#define chatGetUserInfo chatGetUserInfoW
192#define chatGetBasicUserInfo chatGetBasicUserInfoW
193#define chatGetBasicUserInfoNoWait chatGetBasicUserInfoNoWaitW
194#define chatGetChannelBasicUserInfo chatGetChannelBasicUserInfoW
195#define chatInviteUser chatInviteUserW
196#define chatKickUser chatKickUserW
197#define chatBanUser chatBanUserW
198#define chatSetUserMode chatSetUserModeW
199#define chatGetUserMode chatGetUserModeW
200#define chatGetUserModeNoWait chatGetUserModeNoWaitW
201#define chatSetGlobalKeys chatSetGlobalKeysW
202#define chatSetChannelKeys chatSetChannelKeysW
203#define chatGetGlobalKeys chatGetGlobalKeysW
204#define chatGetChannelKeys chatGetChannelKeysW
205#define chatGetNick chatGetNickW
206#define chatGetUdpRelay chatGetUdpRelayW
207#endif
208
209
212/**********************
213** GLOBALS CALLBACKS **
214**********************/
215// Gets raw incoming network traffic.
217typedef void (* chatRaw)(CHAT chat,
218 const gsi_char * raw,
219 void * param);
220
221// Called when the client has been disconnected.
223typedef void (* chatDisconnected)(CHAT chat,
224 const gsi_char * reason,
225 void * param);
226
227// Called when a private message from another user is received.
228// If user==NULL, this is a message from the server.
230typedef void (* chatPrivateMessage)(CHAT chat,
231 const gsi_char * user,
232 const gsi_char * message,
233 int type, // See defined message types above.
234 void * param);
235
236// Called when invited into a channel.
238typedef void (* chatInvited)(CHAT chat,
239 const gsi_char * channel,
240 const gsi_char * user,
241 void * param);
242
243// A connection's global callbacks.
246{
247 chatRaw raw;
248 chatDisconnected disconnected;
249 chatPrivateMessage privateMessage;
250 chatInvited invited;
251 void * param;
253
254/**********************
255** CHANNEL CALLBACKS **
256**********************/
257// Called when a message is received in a channel.
259typedef void (* chatChannelMessage)(CHAT chat,
260 const gsi_char * channel,
261 const gsi_char * user,
262 const gsi_char * message,
263 int type, // See defined message types above.
264 void * param);
265
266// Called when the local client is kicked from a channel.
268typedef void (* chatKicked)(CHAT chat,
269 const gsi_char * channel,
270 const gsi_char * user,
271 const gsi_char * reason,
272 void * param);
273
274// Called when a user joins a channel we're in.
276typedef void (* chatUserJoined)(CHAT chat,
277 const gsi_char * channel,
278 const gsi_char * user,
279 int mode, // See defined user modes above.
280 void * param);
281
282// Called when a user parts a channel we're in.
284typedef void (* chatUserParted)(CHAT chat,
285 const gsi_char * channel,
286 const gsi_char * user,
287 int why, // See defined part reasons above.
288 const gsi_char * reason,
289 const gsi_char * kicker,
290 void * param);
291
292// Called when a user in a channel we're in changes nicks.
294typedef void (* chatUserChangedNick)(CHAT chat,
295 const gsi_char * channel,
296 const gsi_char * oldNick,
297 const gsi_char * newNick,
298 void * param);
299
300// Called when the topic changes in a channel we're in.
302typedef void (* chatTopicChanged)(CHAT chat,
303 const gsi_char * channel,
304 const gsi_char * topic,
305 void * param);
306
307// Called when the mode changes in a channel we're in.
309typedef void (* chatChannelModeChanged)(CHAT chat,
310 const gsi_char * channel,
311 CHATChannelMode * mode,
312 void * param);
313
314// Called when a user's mode changes in a channel we're in.
316typedef void (* chatUserModeChanged)(CHAT chat,
317 const gsi_char * channel,
318 const gsi_char * user,
319 int mode, // See defined user modes above.
320 void * param);
321
322// Called when the user list changes (due to a join or a part) in a channel we're in.
324typedef void (* chatUserListUpdated)(CHAT chat,
325 const gsi_char * channel,
326 void * param);
327
328// Called when the chat server sends an entire new user list for a channel we're in.
330typedef void (* chatNewUserList)(CHAT chat,
331 const gsi_char * channel,
332 int num,
333 const gsi_char ** users,
334 int * modes,
335 void * param);
336
337// Called when a user changes a broadcast key in a channel we're in.
339typedef void (* chatBroadcastKeyChanged)(CHAT chat,
340 const gsi_char * channel,
341 const gsi_char * user,
342 const gsi_char * key,
343 const gsi_char * value,
344 void * param);
345
346// A channel's callbacks.
349{
350 chatChannelMessage channelMessage;
351 chatKicked kicked;
352 chatUserJoined userJoined;
353 chatUserParted userParted;
354 chatUserChangedNick userChangedNick;
355 chatTopicChanged topicChanged;
356 chatChannelModeChanged channelModeChanged;
357 chatUserModeChanged userModeChanged;
358 chatUserListUpdated userListUpdated;
359 chatNewUserList newUserList;
360 chatBroadcastKeyChanged broadcastKeyChanged;
361 void * param;
363
364/************
365** GENERAL **
366************/
367// Called when a connect attempt completes.
368// failureReason is only set if success is CHATFalse.
370typedef void (* chatConnectCallback)(CHAT chat,
371 CHATBool success,
372 int failureReason, // CHAT_DISCONNECTED, CHAT_NICK_ERROR, etc.
373 void * param);
374// Called if there is an error with the nick while connecting.
375// To retry with a new nick, call chatRetryWithNick.
376// Otherwise, call chatDisconnect to stop the connection.
377// Suggested nicks are only provided if type is CHAT_INVALID_UNIQUENICK.
379typedef void (* chatNickErrorCallback)(CHAT chat,
380 int type, // CHAT_IN_USE, CHAT_INVALID, etc.
381 const gsi_char * nick,
382 int numSuggestedNicks,
383 const gsi_char ** suggestedNicks,
384 void * param);
385typedef void (* chatFillInUserCallback)(CHAT chat,
386 unsigned int IP, // PANTS|08.21.00 - changed from unsigned long
387 gsi_char user[128],
388 void * param);
389// Connects you to a chat server and returns a CHAT object.
391CHAT chatConnect(const gsi_char * serverAddress,
392 int port,
393 const gsi_char * nick,
394 const gsi_char * user,
395 const gsi_char * name,
396 chatGlobalCallbacks * callbacks,
397 chatNickErrorCallback nickErrorCallback,
398 chatConnectCallback connectCallback,
399 void * param,
400 CHATBool blocking);
401CHAT chatConnectSpecial(const gsi_char * serverAddress,
402 int port,
403 const gsi_char * nick,
404 const gsi_char * name,
405 chatGlobalCallbacks * callbacks,
406 chatNickErrorCallback nickErrorCallback,
407 chatFillInUserCallback fillInUserCallback,
408 chatConnectCallback connectCallback,
409 void * param,
410 CHATBool blocking);
411CHAT chatConnectSecure(const gsi_char * serverAddress,
412 int port,
413 const gsi_char * nick,
414 const gsi_char * name,
415 const gsi_char * gamename,
416 const gsi_char * secretKey,
417 chatGlobalCallbacks * callbacks,
418 chatNickErrorCallback nickErrorCallback,
419 chatFillInUserCallback fillInUserCallback,
420 chatConnectCallback connectCallback,
421 void * param,
422 CHATBool blocking);
423CHAT chatConnectLogin(const gsi_char * serverAddress,
424 int port,
425 int namespaceID,
426 const gsi_char * email,
427 const gsi_char * profilenick,
428 const gsi_char * uniquenick,
429 const gsi_char * password,
430 const gsi_char * name,
431 const gsi_char * gamename,
432 const gsi_char * secretKey,
433 chatGlobalCallbacks * callbacks,
434 chatNickErrorCallback nickErrorCallback,
435 chatFillInUserCallback fillInUserCallback,
436 chatConnectCallback connectCallback,
437 void * param,
438 CHATBool blocking);
439CHAT chatConnectPreAuth(const gsi_char * serverAddress,
440 int port,
441 const gsi_char * authtoken,
442 const gsi_char * partnerchallenge,
443 const gsi_char * name,
444 const gsi_char * gamename,
445 const gsi_char * secretKey,
446 chatGlobalCallbacks * callbacks,
447 chatNickErrorCallback nickErrorCallback,
448 chatFillInUserCallback fillInUserCallback,
449 chatConnectCallback connectCallback,
450 void * param,
451 CHATBool blocking);
452// If the chatNickErrorCallback gets called, then this can be called
453// with a new nick to retry. If this isn't called, the connection can be
454// disconnected with chatDisconnect. If the new nick is successful, then
455// the chatConnectCallback will get called. If there's another nick
456// error, the chatNickErrorCallback will get called again.
458void chatRetryWithNick(CHAT chat,
459 const gsi_char * nick);
460// Register a uniquenick.
461// Should be called in response to the chatNickErrorCallback being called
462// with a type of CHAT_UNIQUENICK_EXPIRED or CHAT_NO_UNIQUENICK.
463// If the uniquenick cannot be registered, the chatNickErrorCallback will
464// be called again with a type of CHAT_IN_USE or CHAT_INVALID.
466void chatRegisterUniqueNick(CHAT chat,
467 int namespaceID,
468 const gsi_char * uniquenick,
469 const gsi_char * cdkey);
470
471// Disconnect the chat connection.
473void chatDisconnect(CHAT chat);
474
475// Processes the chat connection.
477void chatThink(CHAT chat);
478
479// Sends raw data, without any interpretation.
481void chatSendRaw(CHAT chat,
482 const gsi_char * command);
483
484// Called as a result of a nick change attempt.
486typedef void (* chatChangeNickCallback)(CHAT chat,
487 CHATBool success,
488 const gsi_char * oldNick,
489 const gsi_char * newNick,
490 void * param);
491// Change the local user's nick.
493void chatChangeNick(CHAT chat,
494 const gsi_char * newNick,
495 chatChangeNickCallback callback,
496 void * param,
497 CHATBool blocking);
498
499// Get our local nickname.
501const gsi_char * chatGetNick(CHAT chat);
502
503// Copies the oldNick to the newNick, replacing any invalid characters with legal ones.
505void chatFixNick(gsi_char * newNick,
506 const gsi_char * oldNick);
507
508// Removes the namespace extension from a chat nick.
510const gsi_char * chatTranslateNick(gsi_char * nick,
511 const gsi_char * extension);
512
513// Gets the local userID.
514// Only valid if connected with chatConnectLogin or chatConnectPreAuth.
516int chatGetUserID(CHAT chat);
517
518// Gets the local profileID.
519// Only valid if connected with chatConnectLogin or chatConnectPreAuth.
521int chatGetProfileID(CHAT chat);
522
523// Turn on/off quiet mode.
525void chatSetQuietMode(CHAT chat,
526 CHATBool quiet);
527
528// Called as a result of an authenticate CD key attempt.
530typedef void (* chatAuthenticateCDKeyCallback)(CHAT chat,
531 int result,
532 const gsi_char * message,
533 void * param);
534
535// Attempts to authenticates a CD key.
537void chatAuthenticateCDKey(CHAT chat,
538 const gsi_char * cdkey,
539 chatAuthenticateCDKeyCallback callback,
540 void * param,
541 CHATBool blocking);
542
543/*************
544** CHANNELS **
545*************/
546// Gets called for each channel enumerated.
548typedef void (* chatEnumChannelsCallbackEach)(CHAT chat,
549 CHATBool success,
550 int index,
551 const gsi_char * channel,
552 const gsi_char * topic,
553 int numUsers,
554 void * param);
555// Gets called after all channels have been enumerated.
557typedef void (* chatEnumChannelsCallbackAll)(CHAT chat,
558 CHATBool success,
559 int numChannels,
560 const gsi_char ** channels,
561 const gsi_char ** topics,
562 int * numUsers,
563 void * param);
564// Enumerates the channels available on a chat server.
566void chatEnumChannels(CHAT chat,
567 const gsi_char * filter,
568 chatEnumChannelsCallbackEach callbackEach,
569 chatEnumChannelsCallbackAll callbackAll,
570 void * param,
571 CHATBool blocking);
572
573// Gets called for each channel enumerated.
575typedef void (* chatEnumJoinedChannelsCallback)(CHAT chat,
576 int index,
577 const gsi_char * channel,
578 void * param);
579
580// Enumerates the channels that we are joined to
582void chatEnumJoinedChannels(CHAT chat,
583 chatEnumJoinedChannelsCallback callback,
584 void * param);
585
586
587
588// Gets called when a channel has been entered.
590typedef void (* chatEnterChannelCallback)(CHAT chat,
591 CHATBool success,
592 CHATEnterResult result,
593 const gsi_char * channel,
594 void * param);
595// Enters a channel.
597void chatEnterChannel(CHAT chat,
598 const gsi_char * channel,
599 const gsi_char * password,
600 chatChannelCallbacks * callbacks,
601 chatEnterChannelCallback callback,
602 void * param,
603 CHATBool blocking);
604
605// Leaves a channel.
607void chatLeaveChannel(CHAT chat,
608 const gsi_char * channel,
609 const gsi_char * reason); // PANTS|03.13.01
610
611// Sends a message to a channel.
613void chatSendChannelMessage(CHAT chat,
614 const gsi_char * channel,
615 const gsi_char * message,
616 int type);
617
618// Sets the topic in a channel.
620void chatSetChannelTopic(CHAT chat,
621 const gsi_char * channel,
622 const gsi_char * topic);
623
624// Gets called when a channel's topic has been retrieved.
626typedef void (* chatGetChannelTopicCallback)(CHAT chat,
627 CHATBool success,
628 const gsi_char * channel,
629 const gsi_char * topic,
630 void * param);
631// Gets a channel's topic.
633void chatGetChannelTopic(CHAT chat,
634 const gsi_char * channel,
635 chatGetChannelTopicCallback callback,
636 void * param,
637 CHATBool blocking);
638
639// Sets a channel's mode.
641void chatSetChannelMode(CHAT chat,
642 const gsi_char * channel,
643 CHATChannelMode * mode);
644
645// Gets called when a channel's mode has been retrieved.
647typedef void (* chatGetChannelModeCallback)(CHAT chat,
648 CHATBool success,
649 const gsi_char * channel,
650 CHATChannelMode * mode,
651 void * param);
652// Gets a channel's mode.
654void chatGetChannelMode(CHAT chat,
655 const gsi_char * channel,
656 chatGetChannelModeCallback callback,
657 void * param,
658 CHATBool blocking);
659
660// Sets the password in a channel.
662void chatSetChannelPassword(CHAT chat,
663 const gsi_char * channel,
664 CHATBool enable,
665 const gsi_char * password);
666
667// Called when the channel's password has been retrieved.
669typedef void (* chatGetChannelPasswordCallback)(CHAT chat,
670 CHATBool success,
671 const gsi_char * channel,
672 CHATBool enabled,
673 const gsi_char * password,
674 void * param);
675// Gets the password in a channel.
677void chatGetChannelPassword(CHAT chat,
678 const gsi_char * channel,
679 chatGetChannelPasswordCallback callback,
680 void * param,
681 CHATBool blocking);
682
683// Set the maximum number of users allowed in a channel.
685void chatSetChannelLimit(CHAT chat,
686 const gsi_char * channel,
687 int limit);
688
689// Called with the list of bans in a channel.
691typedef void (* chatEnumChannelBansCallback)(CHAT chat,
692 CHATBool success,
693 const gsi_char * channel,
694 int numBans,
695 const gsi_char ** bans,
696 void * param);
697// Enumerate through the bans in a channel.
699void chatEnumChannelBans(CHAT chat,
700 const gsi_char * channel,
701 chatEnumChannelBansCallback callback,
702 void * param,
703 CHATBool blocking);
704
705// Adds a channel ban.
707void chatAddChannelBan(CHAT chat,
708 const gsi_char * channel,
709 const gsi_char * ban);
710
711// Removes a ban string from a channel.
713void chatRemoveChannelBan(CHAT chat,
714 const gsi_char * channel,
715 const gsi_char * ban);
716
717// Set the group this channel is a part of.
719void chatSetChannelGroup(CHAT chat,
720 const gsi_char * channel,
721 const gsi_char * group);
722
723// Get the number of users in the channel.
724// Returns -1 if we are not in the channel.
726int chatGetChannelNumUsers(CHAT chat,
727 const gsi_char * channel);
728
729
730// Returns CHATTrue if we are in the channel
732CHATBool chatInChannel(CHAT chat,
733 const gsi_char * channel);
734
735
736/**********
737** USERS **
738**********/
739// Called with the list of users in a channel.
741typedef void (* chatEnumUsersCallback)(CHAT chat,
742 CHATBool success,
743 const gsi_char * channel, //PANTS|02.11.00|added paramater
744 int numUsers,
745 const gsi_char ** users,
746 int * modes,
747 void * param);
748// Enumerate through the users in a channel.
750void chatEnumUsers(CHAT chat,
751 const gsi_char * channel,
752 chatEnumUsersCallback callback,
753 void * param,
754 CHATBool blocking);
755
756// Send a private message to a user.
758void chatSendUserMessage(CHAT chat,
759 const gsi_char * user,
760 const gsi_char * message,
761 int type);
762
763// Called with a user's info.
765typedef void (* chatGetUserInfoCallback)(CHAT chat,
766 CHATBool success,
767 const gsi_char * nick, //PANTS|02.14.2000|added nick and user
768 const gsi_char * user,
769 const gsi_char * name,
770 const gsi_char * address,
771 int numChannels,
772 const gsi_char ** channels,
773 void * param);
774// Get a user's info.
776void chatGetUserInfo(CHAT chat,
777 const gsi_char * user,
778 chatGetUserInfoCallback callback,
779 void * param,
780 CHATBool blocking);
781
782// Called with a user's basic info.
784typedef void (* chatGetBasicUserInfoCallback)(CHAT chat,
785 CHATBool success,
786 const gsi_char * nick,
787 const gsi_char * user,
788 const gsi_char * address,
789 void * param);
790
791// Get some basic info on the user.
792// PANTS|12.08.2000
794void chatGetBasicUserInfo(CHAT chat,
795 const gsi_char * user,
796 chatGetBasicUserInfoCallback callback,
797 void * param,
798 CHATBool blocking);
799
800// Get basic info without waiting.
801// Returns CHATFalse if the info isn't available.
803CHATBool chatGetBasicUserInfoNoWait(CHAT chat,
804 const gsi_char * nick,
805 const gsi_char ** user,
806 const gsi_char ** address);
807
808// Called with a user's basic info for everyone in a channel.
809// Called with a NULL nick/user/address at the end.
811typedef void (* chatGetChannelBasicUserInfoCallback)(CHAT chat,
812 CHATBool success,
813 const gsi_char * channel,
814 const gsi_char * nick,
815 const gsi_char * user,
816 const gsi_char * address,
817 void * param);
818
819// Get basic info on all the users in a channel.
820// PANTS|12.19.00
822void chatGetChannelBasicUserInfo(CHAT chat,
823 const gsi_char * channel,
824 chatGetChannelBasicUserInfoCallback callback,
825 void * param,
826 CHATBool blocking);
827
828// Invite a user into a channel.
830void chatInviteUser(CHAT chat,
831 const gsi_char * channel,
832 const gsi_char * user);
833
834// Kick a user from a channel.
836void chatKickUser(CHAT chat,
837 const gsi_char * channel,
838 const gsi_char * user,
839 const gsi_char * reason);
840
841// Ban a user from a channel.
843void chatBanUser(CHAT chat,
844 const gsi_char * channel,
845 const gsi_char * user);
846
847// Sets a user's mode in a channel.
849void chatSetUserMode(CHAT chat,
850 const gsi_char * channel,
851 const gsi_char * user,
852 int mode);
853
854// Called with the user's mode.
856typedef void (* chatGetUserModeCallback)(CHAT chat,
857 CHATBool success,
858 const gsi_char * channel,
859 const gsi_char * user,
860 int mode,
861 void * param);
862// Gets a user's mode in a channel.
864void chatGetUserMode(CHAT chat,
865 const gsi_char * channel,
866 const gsi_char * user,
867 chatGetUserModeCallback callback,
868 void * param,
869 CHATBool blocking);
870
871// Gets a user's mode in a channel.
873CHATBool chatGetUserModeNoWait(CHAT chat,
874 const gsi_char * channel,
875 const gsi_char * user,
876 int * mode);
877
878
879// Called in response to a request for the UDP relay for a channel
881typedef void (* chatGetUdpRelayCallback)(CHAT chat,
882 const gsi_char * channel,
883 const gsi_char * udpIp,
884 unsigned short udpPort,
885 int udpKey,
886 void * param);
887
888// Get the UDP relay address for a channel
890void chatGetUdpRelay(CHAT chat,
891 const gsi_char * channel,
892 chatGetUdpRelayCallback callback,
893 void * param,
894 CHATBool blocking);
895
896
897/*********
898** KEYS **
899*********/
900// Sets global key/values for the local user.
901// Set a value to NULL or "" to clear that key.
903void chatSetGlobalKeys(CHAT chat,
904 int num,
905 const gsi_char ** keys,
906 const gsi_char ** values);
907
908// Called with a user's global key/values.
909// If used for a set of users, will be
910// called with user==NULL when done.
912typedef void (* chatGetGlobalKeysCallback)(CHAT chat,
913 CHATBool success,
914 const gsi_char * user,
915 int num,
916 const gsi_char ** keys,
917 const gsi_char ** values,
918 void * param);
919// Gets global key/values for a user or users.
920// To get the global key/values for one user, pass in that
921// user's nick as the target. To get the global key/values
922// for every user in a channel, use the channel name as the target.
924void chatGetGlobalKeys(CHAT chat,
925 const gsi_char * target,
926 int num,
927 const gsi_char ** keys,
928 chatGetGlobalKeysCallback callback,
929 void * param,
930 CHATBool blocking);
931
932// Sets channel key/values.
933// If user is NULL or "", the keys will be set on the channel.
934// Otherwise, they will be set on the user,
935// Only ops can set channel keys on other users.
936// Set a value to NULL or "" to clear that key.
938void chatSetChannelKeys(CHAT chat,
939 const gsi_char * channel,
940 const gsi_char * user,
941 int num,
942 const gsi_char ** keys,
943 const gsi_char ** values);
944
945// Called with a user's channel key/values, or a channel's key/values.
946// If used for a set of users, will be called with user==NULL when done.
947// If used for a channel, will be called once with user==NULL.
949typedef void (* chatGetChannelKeysCallback)(CHAT chat,
950 CHATBool success,
951 const gsi_char * channel,
952 const gsi_char * user,
953 int num,
954 const gsi_char ** keys,
955 const gsi_char ** values,
956 void * param);
957// Gets channel key/values for a user or users, or for a channel.
958// To get the channel key/values for every user in
959// a channel, pass in "*" as the user. To get the keys for a channel,
960// pass in NULL or "".
962void chatGetChannelKeys(CHAT chat,
963 const gsi_char * channel,
964 const gsi_char * user,
965 int num,
966 const gsi_char ** keys,
967 chatGetChannelKeysCallback callback,
968 void * param,
969 CHATBool blocking);
970
971
974// This ASCII versions must be available even when GSI_UNICODE is defined
975#ifdef GSI_UNICODE
976CHATBool chatGetBasicUserInfoNoWaitA(CHAT chat,
977 const char * nick,
978 const char ** user,
979 const char ** address);
980#endif
981/*
982void chatGetBasicUserInfoA(CHAT chat,
983 const char * user,
984 chatGetBasicUserInfoCallback callback,
985 void * param,
986 CHATBool blocking);
987*/
988
991#ifdef __cplusplus
992} // extern "C"
993#endif
994
995
998#endif // _CHAT_H_
Definition chat.h:81
Definition chat.h:349
Definition chat.h:246