17#include "../common/gsCommon.h"
18#include "../Chat/chat.h"
19#include "../qr2/qr2.h"
20#include "../serverbrowsing/sb_internal.h"
37#define PEER_COMPLETE 4
44#define PEER_UNIQUENICK_EXPIRED 3
45#define PEER_NO_UNIQUENICK 4
46#define PEER_INVALID_UNIQUENICK 5
47#define PEER_NICK_TOO_LONG 6
51#define PEER_DISCONNECTED 0
52#define PEER_NICK_ERROR 1
53#define PEER_LOGIN_FAILED 2
57#define PEER_PASSWORD_LEN 24
61#define PEER_FLAG_STAGING 0x01
62#define PEER_FLAG_READY 0x02
63#define PEER_FLAG_PLAYING 0x04
64#define PEER_FLAG_AWAY 0x08
65#define PEER_FLAG_HOST 0x10
66#define PEER_FLAG_OP 0x20
67#define PEER_FLAG_VOICE 0x40
71#define PEER_KEEP_REPORTING 0
72#define PEER_STOP_REPORTING 1
73#define PEER_REPORT_INFO 2
74#define PEER_REPORT_PLAYERS 4
146} PEERAutoMatchStatus;
153typedef void (* peerDisconnectedCallback)
156 const gsi_char * reason,
162typedef void (* peerRoomMessageCallback)
166 const gsi_char * nick,
167 const gsi_char * message,
168 MessageType messageType,
174typedef void (* peerRoomUTMCallback)
178 const gsi_char * nick,
179 const gsi_char * command,
180 const gsi_char * parameters,
181 PEERBool authenticated,
189typedef void (* peerRoomNameChangedCallback)
199typedef void (* peerRoomModeChangedCallback)
209typedef void (* peerPlayerMessageCallback)
212 const gsi_char * nick,
213 const gsi_char * message,
214 MessageType messageType,
220typedef void (* peerPlayerUTMCallback)
223 const gsi_char * nick,
224 const gsi_char * command,
225 const gsi_char * parameters,
226 PEERBool authenticated,
233typedef void (* peerReadyChangedCallback)
236 const gsi_char * nick,
246typedef void (* peerGameStartedCallback)
250 const gsi_char * message,
256typedef void (* peerPlayerJoinedCallback)
260 const gsi_char * nick,
266typedef void (* peerPlayerLeftCallback)
270 const gsi_char * nick,
271 const gsi_char * reason,
277typedef void (* peerKickedCallback)
281 const gsi_char * nick,
282 const gsi_char * reason,
288typedef void (* peerNewPlayerListCallback)
297typedef void (* peerPlayerChangedNickCallback)
301 const gsi_char * oldNick,
302 const gsi_char * newNick,
312typedef void (* peerPlayerInfoCallback)
316 const gsi_char * nick,
324typedef void (* peerPlayerFlagsChangedCallback)
328 const gsi_char * nick,
336typedef void (* peerPingCallback)
339 const gsi_char * nick,
346typedef void (* peerCrossPingCallback)
349 const gsi_char * nick1,
350 const gsi_char * nick2,
359typedef void (* peerGlobalKeyChangedCallback)
362 const gsi_char * nick,
363 const gsi_char * key,
364 const gsi_char * value,
372typedef void (* peerRoomKeyChangedCallback)
376 const gsi_char * nick,
377 const gsi_char * key,
378 const gsi_char * value,
386typedef void (* peerQRServerKeyCallback)
398typedef void (* peerQRPlayerKeyCallback)
411typedef void (* peerQRTeamKeyCallback)
426typedef void (* peerQRKeyListCallback)
430 qr2_keybuffer_t keyBuffer,
436typedef int (* peerQRCountCallback)
445typedef void (* peerQRAddErrorCallback)
449 gsi_char * errorString,
455typedef void (* peerQRNatNegotiateCallback)
464typedef void (* peerQRPublicAddressCallback)
477 peerDisconnectedCallback disconnected;
478 peerRoomMessageCallback roomMessage;
479 peerRoomUTMCallback roomUTM;
480 peerRoomNameChangedCallback roomNameChanged;
481 peerRoomModeChangedCallback roomModeChanged;
482 peerPlayerMessageCallback playerMessage;
483 peerPlayerUTMCallback playerUTM;
484 peerReadyChangedCallback readyChanged;
485 peerGameStartedCallback gameStarted;
486 peerPlayerJoinedCallback playerJoined;
487 peerPlayerLeftCallback playerLeft;
488 peerKickedCallback kicked;
489 peerNewPlayerListCallback newPlayerList;
490 peerPlayerChangedNickCallback playerChangedNick;
491 peerPlayerInfoCallback playerInfo;
492 peerPlayerFlagsChangedCallback playerFlagsChanged;
493 peerPingCallback ping;
494 peerCrossPingCallback crossPing;
495 peerGlobalKeyChangedCallback globalKeyChanged;
496 peerRoomKeyChangedCallback roomKeyChanged;
497 peerQRServerKeyCallback qrServerKey;
498 peerQRPlayerKeyCallback qrPlayerKey;
499 peerQRTeamKeyCallback qrTeamKey;
500 peerQRKeyListCallback qrKeyList;
501 peerQRCountCallback qrCount;
502 peerQRAddErrorCallback qrAddError;
503 peerQRNatNegotiateCallback qrNatNegotiateCallback;
504 peerQRPublicAddressCallback qrPublicAddressCallback;
512#define peerConnect peerConnectA
513#define peerConnectLogin peerConnectLoginA
514#define peerConnectPreAuth peerConnectPreAuthA
515#define peerRetryWithNick peerRetryWithNickA
516#define peerRegisterUniqueNick peerRegisterUniqueNickA
517#define peerSetTitle peerSetTitleA
518#define peerGetTitle peerGetTitleA
519#define peerGetNick peerGetNickA
520#define peerFixNick peerFixNickA
521#define peerTranslateNick peerTranslateNickA
522#define peerChangeNick peerChangeNickA
523#define peerSetAwayMode peerSetAwayModeA
524#define peerParseQuery peerParseQueryA
525#define peerAuthenticateCDKey peerAuthenticateCDKeyA
526#define peerJoinTitleRoom peerJoinTitleRoomA
527#define peerJoinStagingRoom peerJoinStagingRoomA
528#define peerJoinStagingRoomByChannel peerJoinStagingRoomByChannelA
529#define peerCreateStagingRoom peerCreateStagingRoomA
530#define peerCreateStagingRoomWithSocket peerCreateStagingRoomWithSocketA
531#define peerLeaveRoom peerLeaveRoomA
532#define peerListGroupRooms peerListGroupRoomsA
533#define peerStartListingGames peerStartListingGamesA
534#define peerMessageRoom peerMessageRoomA
535#define peerUTMRoom peerUTMRoomA
536#define peerSetPassword peerSetPasswordA
537#define peerSetRoomName peerSetRoomNameA
538#define peerGetRoomName peerGetRoomNameA
539#define peerGetRoomChannel peerGetRoomChannelA
540#define peerSetTitleRoomChannel peerSetTitleRoomChannelA
541#define peerMessagePlayer peerMessagePlayerA
542#define peerUTMPlayer peerUTMPlayerA
543#define peerKickPlayer peerKickPlayerA
544#define peerGetPlayerPing peerGetPlayerPingA
545#define peerGetPlayersCrossPing peerGetPlayersCrossPingA
546#define peerPingPlayer peerPingPlayerA
547#define peerGetPlayerInfoNoWait peerGetPlayerInfoNoWaitA
548#define peerGetPlayerInfo peerGetPlayerInfoA
549#define peerGetPlayerProfileID peerGetPlayerProfileIDA
550#define peerGetPlayerIP peerGetPlayerIPA
551#define peerIsPlayerHost peerIsPlayerHostA
552#define peerGetPlayerFlags peerGetPlayerFlagsA
553#define peerGetReady peerGetReadyA
554#define peerStartGame peerStartGameA
555#define peerSetGlobalKeys peerSetGlobalKeysA
556#define peerGetPlayerGlobalKeys peerGetPlayerGlobalKeysA
557#define peerGetRoomGlobalKeys peerGetRoomGlobalKeysA
558#define peerSetRoomKeys peerSetRoomKeysA
559#define peerGetRoomKeys peerGetRoomKeysA
560#define peerSetGlobalWatchKeys peerSetGlobalWatchKeysA
561#define peerSetRoomWatchKeys peerSetRoomWatchKeysA
562#define peerGetGlobalWatchKey peerGetGlobalWatchKeyA
563#define peerGetRoomWatchKey peerGetRoomWatchKeyA
564#define peerStartAutoMatch peerStartAutoMatchA
565#define peerStartAutoMatchWithSocket peerStartAutoMatchWithSocketA
567#define peerConnect peerConnectW
568#define peerConnectLogin peerConnectLoginW
569#define peerConnectPreAuth peerConnectPreAuthW
570#define peerRetryWithNick peerRetryWithNickW
571#define peerRegisterUniqueNick peerRegisterUniqueNickW
572#define peerSetTitle peerSetTitleW
573#define peerGetTitle peerGetTitleW
574#define peerGetNick peerGetNickW
575#define peerFixNick peerFixNickW
576#define peerTranslateNick peerTranslateNickW
577#define peerChangeNick peerChangeNickW
578#define peerSetAwayMode peerSetAwayModeW
579#define peerParseQuery peerParseQueryA
580#define peerAuthenticateCDKey peerAuthenticateCDKeyW
581#define peerJoinTitleRoom peerJoinTitleRoomW
582#define peerJoinStagingRoom peerJoinStagingRoomW
583#define peerJoinStagingRoomByChannel peerJoinStagingRoomByChannelW
584#define peerCreateStagingRoom peerCreateStagingRoomW
585#define peerCreateStagingRoomWithSocket peerCreateStagingRoomWithSocketW
586#define peerLeaveRoom peerLeaveRoomW
587#define peerListGroupRooms peerListGroupRoomsW
588#define peerStartListingGames peerStartListingGamesW
589#define peerMessageRoom peerMessageRoomW
590#define peerUTMRoom peerUTMRoomW
591#define peerSetPassword peerSetPasswordW
592#define peerSetRoomName peerSetRoomNameW
593#define peerGetRoomName peerGetRoomNameW
594#define peerGetRoomChannel peerGetRoomChannelW
595#define peerSetTitleRoomChannel peerSetTitleRoomChannelW
596#define peerMessagePlayer peerMessagePlayerW
597#define peerUTMPlayer peerUTMPlayerW
598#define peerKickPlayer peerKickPlayerW
599#define peerGetPlayerPing peerGetPlayerPingW
600#define peerGetPlayersCrossPing peerGetPlayersCrossPingW
601#define peerPingPlayer peerPingPlayerW
602#define peerGetPlayerInfoNoWait peerGetPlayerInfoNoWaitW
603#define peerGetPlayerInfo peerGetPlayerInfoW
604#define peerGetPlayerProfileID peerGetPlayerProfileIDW
605#define peerGetPlayerIP peerGetPlayerIPW
606#define peerIsPlayerHost peerIsPlayerHostW
607#define peerGetPlayerFlags peerGetPlayerFlagsW
608#define peerGetReady peerGetReadyW
609#define peerStartGame peerStartGameW
610#define peerSetGlobalKeys peerSetGlobalKeysW
611#define peerGetPlayerGlobalKeys peerGetPlayerGlobalKeysW
612#define peerGetRoomGlobalKeys peerGetRoomGlobalKeysW
613#define peerSetRoomKeys peerSetRoomKeysW
614#define peerGetRoomKeys peerGetRoomKeysW
615#define peerSetGlobalWatchKeys peerSetGlobalWatchKeysW
616#define peerSetRoomWatchKeys peerSetRoomWatchKeysW
617#define peerGetGlobalWatchKey peerGetGlobalWatchKeyW
618#define peerGetRoomWatchKey peerGetRoomWatchKeyW
619#define peerStartAutoMatch peerStartAutoMatchW
620#define peerStartAutoMatchWithSocket peerStartAutoMatchWithSocketW
639typedef void (* peerConnectCallback)
656typedef void (* peerNickErrorCallback)
660 const gsi_char * nick,
661 int numSuggestedNicks,
662 const gsi_char ** suggestedNicks,
673 const gsi_char * nick,
675 peerNickErrorCallback nickErrorCallback,
676 peerConnectCallback connectCallback,
688 const gsi_char * email,
689 const gsi_char * profilenick,
690 const gsi_char * uniquenick,
691 const gsi_char * password,
692 peerNickErrorCallback nickErrorCallback,
693 peerConnectCallback connectCallback,
701void peerConnectPreAuth
704 const gsi_char * authtoken,
705 const gsi_char * partnerchallenge,
706 peerNickErrorCallback nickErrorCallback,
707 peerConnectCallback connectCallback,
717void peerRetryWithNick
720 const gsi_char * nick
729void peerRegisterUniqueNick
733 const gsi_char * uniquenick,
734 const gsi_char * cdkey
740PEERBool peerIsConnected(PEER peer);
751 const gsi_char * title,
752 const gsi_char * qrSecretKey,
753 const gsi_char * sbName,
754 const gsi_char * sbSecretKey,
757 PEERBool natNegotiate,
758 PEERBool pingRooms[NumRooms],
759 PEERBool crossPingRooms[NumRooms]
764void peerClearTitle(PEER peer);
769const gsi_char * peerGetTitle(PEER peer);
773void peerDisconnect(PEER peer);
778void peerShutdown(PEER peer);
784void peerThink(PEER peer);
789CHAT peerGetChat(PEER peer);
793const gsi_char * peerGetNick(PEER peer);
800 const gsi_char * oldNick
807const gsi_char * peerTranslateNick
810 const gsi_char * extension
817#define peerGetLocalIP peerGetPublicIP
822unsigned int peerGetPublicIP(PEER peer);
826unsigned int peerGetPrivateIP(PEER peer);
831int peerGetUserID(PEER peer);
836int peerGetProfileID(PEER peer);
840typedef void (* peerChangeNickCallback)
844 const gsi_char * oldNick,
845 const gsi_char * newNick,
854 const gsi_char * newNick,
855 peerChangeNickCallback callback,
888 const gsi_char * reason
900 struct sockaddr * sender
907typedef void (* peerAuthenticateCDKeyCallback)
911 const gsi_char * message,
921void peerAuthenticateCDKey
924 const gsi_char * cdkey,
925 peerAuthenticateCDKeyCallback callback,
932void peerSendNatNegotiateCookie
942void peerSendMessageToServer
956void peerAlwaysGetPlayerInfo
967typedef void (* peerJoinRoomCallback)
971 PEERJoinResult result,
978void peerJoinTitleRoom
981 const gsi_char password[PEER_PASSWORD_LEN],
982 peerJoinRoomCallback callback,
990void peerJoinGroupRoom
994 peerJoinRoomCallback callback,
1025void peerJoinStagingRoom
1029 const gsi_char password[PEER_PASSWORD_LEN],
1030 peerJoinRoomCallback callback,
1041void peerJoinStagingRoomByChannel
1044 const gsi_char * channel,
1045 const gsi_char password[PEER_PASSWORD_LEN],
1046 peerJoinRoomCallback callback,
1061void peerCreateStagingRoom
1064 const gsi_char * name,
1066 const gsi_char password[PEER_PASSWORD_LEN],
1067 peerJoinRoomCallback callback,
1077void peerCreateStagingRoomWithSocket
1080 const gsi_char * name,
1082 const gsi_char password[PEER_PASSWORD_LEN],
1084 unsigned short port,
1085 peerJoinRoomCallback callback,
1098 const gsi_char * reason
1105typedef void (* peerListGroupRoomsCallback)
1111 const gsi_char * name,
1123void peerListGroupRooms
1126 const gsi_char * fields,
1127 peerListGroupRoomsCallback callback,
1146typedef void (* peerListingGamesCallback)
1150 const gsi_char * name,
1179void peerStartListingGames
1182 const unsigned char * fields,
1184 const gsi_char * filter,
1185 peerListingGamesCallback callback,
1194void peerStopListingGames
1218void peerUpdateGameByMaster
1230void peerUpdateGamePing(PEER peer, SBServer server);
1238 const gsi_char * message,
1239 MessageType messageType
1248 const gsi_char * command,
1249 const gsi_char * parameters,
1250 PEERBool authenticate
1262 const gsi_char password[PEER_PASSWORD_LEN]
1273 const gsi_char * name
1279const gsi_char * peerGetRoomName
1288const gsi_char * peerGetRoomChannel
1305void peerSetTitleRoomChannel
1308 const gsi_char * channel
1315SBServer peerGetHostServer(PEER peer);
1319void peerSetStagingRoomMaxPlayers
1331typedef void (* peerEnumPlayersCallback)
1337 const gsi_char * nick,
1348 peerEnumPlayersCallback callback,
1354void peerMessagePlayer
1357 const gsi_char * nick,
1358 const gsi_char * message,
1359 MessageType messageType
1367 const gsi_char * nick,
1368 const gsi_char * command,
1369 const gsi_char * parameters,
1370 PEERBool authenticate
1380 const gsi_char * nick,
1381 const gsi_char * reason
1387PEERBool peerGetPlayerPing
1390 const gsi_char * nick,
1397PEERBool peerGetPlayersCrossPing
1400 const gsi_char * nick1,
1401 const gsi_char * nick2,
1412PEERBool peerPingPlayer
1415 const gsi_char * nick
1421PEERBool peerGetPlayerInfoNoWait
1424 const gsi_char * nick,
1431typedef void (* peerGetPlayerInfoCallback)
1435 const gsi_char * nick,
1443void peerGetPlayerInfo
1446 const gsi_char * nick,
1447 peerGetPlayerInfoCallback callback,
1454typedef void (* peerGetPlayerProfileIDCallback)
1458 const gsi_char * nick,
1466void peerGetPlayerProfileID
1469 const gsi_char * nick,
1470 peerGetPlayerProfileIDCallback callback,
1477typedef void (* peerGetPlayerIPCallback)
1481 const gsi_char * nick,
1492 const gsi_char * nick,
1493 peerGetPlayerIPCallback callback,
1501PEERBool peerIsPlayerHost
1504 const gsi_char * nick,
1511PEERBool peerGetPlayerFlags
1514 const gsi_char * nick,
1540PEERBool peerGetReady
1543 const gsi_char * nick,
1549PEERBool peerAreAllReady
1570 const gsi_char * message,
1571 int reportingOptions
1577PEERBool peerStartReporting
1587PEERBool peerStartReportingWithSocket
1598void peerStartPlaying
1605PEERBool peerIsPlaying
1622void peerStateChanged
1632void peerSetGlobalKeys
1636 const gsi_char ** keys,
1637 const gsi_char ** values
1642typedef void (* peerGetGlobalKeysCallback)
1646 const gsi_char * nick,
1648 const gsi_char ** keys,
1649 const gsi_char ** values,
1655void peerGetPlayerGlobalKeys
1658 const gsi_char * nick,
1660 const gsi_char ** keys,
1661 peerGetGlobalKeysCallback callback,
1668void peerGetRoomGlobalKeys
1673 const gsi_char ** keys,
1674 peerGetGlobalKeysCallback callback,
1686 const gsi_char * nick,
1688 const gsi_char ** keys,
1689 const gsi_char ** values
1694typedef void (* peerGetRoomKeysCallback)
1699 const gsi_char * nick,
1714 const gsi_char * nick,
1716 const gsi_char ** keys,
1717 peerGetRoomKeysCallback callback,
1730void peerSetGlobalWatchKeys
1735 const gsi_char ** keys,
1747void peerSetRoomWatchKeys
1752 const gsi_char ** keys,
1761const gsi_char * peerGetGlobalWatchKey
1764 const gsi_char * nick,
1765 const gsi_char * key
1773const gsi_char * peerGetRoomWatchKey
1777 const gsi_char * nick,
1778 const gsi_char * key
1787typedef void (* peerAutoMatchStatusCallback)
1790 PEERAutoMatchStatus status,
1806typedef int (* peerAutoMatchRateCallback)
1819void peerStartAutoMatch
1823 const gsi_char * filter,
1824 peerAutoMatchStatusCallback statusCallback,
1825 peerAutoMatchRateCallback rateCallback,
1835void peerStartAutoMatchWithSocket
1839 const gsi_char * filter,
1841 unsigned short port,
1842 peerAutoMatchStatusCallback statusCallback,
1843 peerAutoMatchRateCallback rateCallback,
1851void peerStopAutoMatch(PEER peer);
1855PEERBool peerIsAutoMatching(PEER peer);
1860PEERAutoMatchStatus peerGetAutoMatchStatus(PEER peer);