26#define usleep(x) Sleep((x)/100000)
43 Global.GetString(key, res);
50 FILE *fp = fopen(
"logIt.txt",
"w");
58 Global.config.getInt(
"ROTATEDELAY", delay);
59 DBGMSG(
"ROTATEDELAY: " << delay);
63 static time_t lastLogTime = 0;
65 if (now > lastLogTime + 300)
68 INFMSG(
"still here" << endl);
74 logIt(
"peerIsConnected\n");
75 if (peerIsConnected(
m_peer))
77 logIt(
"checkMatches()\n");
79 logIt(
"checkMatches() done\n");
96 time_t timeofday = curtime % (delay);
97 if ((timeofday > 0) && (timeofday <= 300))
106 DBGMSG(
"Bailing out of readLoop!" << endl);
107 INFMSG(
"Bailing out of readLoop!" << endl);
108 ERRMSG(
"Bailing out of readLoop!" << endl);
113static void DisconnectedCallback ( PEER peer,
const char * reason,
void * param)
115 DBGMSG(
"Disconnected: " << reason);
121static void RoomMessageCallback ( PEER peer, RoomType roomType,
const char * nick,
const char * message, MessageType messageType,
void * param)
123 DBGMSG(
"(PUBLIC) " << nick <<
": " << message);
129static void PlayerMessageCallback ( PEER peer,
const char * nick,
const char * message, MessageType messageType,
void * param)
131 DBGMSG(
"(PRIVATE) " << nick <<
": " << message);
137static void PlayerJoinedCallback ( PEER peer, RoomType roomType,
const char * nick,
void * param)
139 DBGMSG(nick <<
" joined the room");
145static void PlayerLeftCallback ( PEER peer, RoomType roomType,
const char * nick,
const char * reason,
void * param)
147 DBGMSG(nick <<
" left the room");
153static void PlayerChangedNickCallback ( PEER peer, RoomType roomType,
const char * oldNick,
const char * newNick,
void * param)
155 INFMSG(oldNick <<
" changed nicks to " << newNick);
161static void EnumPlayersCallback ( PEER peer, PEERBool success, RoomType roomType,
int index,
const char * nick,
int flags,
void * param)
168static int s_groupID = 0;
169static void ListGroupRoomsCallback ( PEER peer, PEERBool success,
int groupID, SBServer server,
const char * name,
int numWaiting,
int maxWaiting,
int numGames,
int numPlaying,
void * param)
171 if (success && name && !strcasecmp(name,
"QuickMatch"))
177static void ConnectCallback ( PEER peer, PEERBool success,
void * param)
184static void JoinCallback ( PEER peer, PEERBool success, PEERJoinResult result, RoomType roomType,
void * param)
191static void NickErrorCallback ( PEER peer,
int type,
const char * badNick,
void * param)
193 ERRMSG(
"Nick error with " << badNick);
195 if(type == PEER_IN_USE)
197 int len = strlen(badNick);
198 std::string nickStr = badNick;
200 if (badNick[len-1] ==
'}' && badNick[len-3] ==
'{' && isdigit(badNick[len-2]))
202 newVal = badNick[len-2] -
'0' + 1;
203 nickStr.erase(len-3, 3);
212 DBGMSG(
"Nickname taken: was "<<badNick<<
", new val = "<<newVal<<
", new nick = "<<nickStr.c_str());
217 peerRetryWithNick(peer, nickStr.c_str());
222 peerRetryWithNick(peer,
NULL);
231 peerRetryWithNick(peer,
NULL);
240void callbackEach( CHAT chat, CHATBool success,
int index,
const char *channel,
241 const char *topic,
int numUsers,
void *param )
243 DEBUG_LOG((
"Chat channel success: %d\n", success));
248 DEBUG_LOG((
"Channel[%d]: %s (%s), %d users\n",
249 index, channel, topic, numUsers));
252void callbackAll( CHAT chat, CHATBool success,
int numChannels,
const char **channels,
253 const char **topics,
int *numUsers,
void *param )
255 DEBUG_LOG((
"Chat channels success: %d\n", success));
261 DEBUG_LOG((
"%d channels found\n", numChannels));
263 for (
int i=0; i<numChannels; ++i)
265 DEBUG_LOG((
"Channel[%d]: %s (%s), %d users\n",
266 i, channels[i], topics[i], numUsers[i]));
288 DBGMSG(
"Joined room - listing players");
289 peerEnumPlayers(
m_peer, GroupRoom, EnumPlayersCallback,
this);
298static void AuthenticateCDKeyCallback
302 const char * message,
306 bool *val = (
bool *)param;
309 *val = (result >= 1);
331 Global.config.getString(
"Title", title,
"LOGIN");
332 Global.config.getString(
"SecretKey", secretKey,
"LOGIN");
334 Global.config.getString(
"CDKey", serialNo,
"LOGIN");
335 PEERCallbacks callbacks;
336 PEERBool pingRooms[NumRooms];
337 PEERBool crossPingRooms[NumRooms];
341 memset(&callbacks, 0,
sizeof(PEERCallbacks));
342 callbacks.disconnected = DisconnectedCallback;
343 callbacks.playerChangedNick = PlayerChangedNickCallback;
344 callbacks.playerJoined = PlayerJoinedCallback;
345 callbacks.playerLeft = PlayerLeftCallback;
348 callbacks.param =
this;
352 m_peer = peerInitialize(&callbacks);
355 ERRMSG(
"Failed to init peer object" << endl);
361 pingRooms[TitleRoom] = PEERFalse;
362 pingRooms[GroupRoom] = PEERFalse;
363 pingRooms[StagingRoom] = PEERFalse;
364 crossPingRooms[TitleRoom] = PEERFalse;
365 crossPingRooms[GroupRoom] = PEERFalse;
366 crossPingRooms[StagingRoom] = PEERFalse;
370 if(!peerSetTitle(
m_peer, title.
get(), secretKey.
get(), title.
get(), secretKey.
get(), 0, 30, PEERTrue, pingRooms, crossPingRooms))
373 ERRMSG(
"Failed to set the title" << endl);
385 ERRMSG(
"Failed to connect" << endl);
390 peerAuthenticateCDKey(
m_peer, serialNo.
get(), AuthenticateCDKeyCallback, &cdOk, PEERTrue);
394 ERRMSG(
"Failed to auth CDKey " << serialNo.
get() << endl);
411 ERRMSG(
"Failed to join the title room" << endl);
void PlayerMessageCallback(PEER peer, const char *nick, const char *message, MessageType messageType, void *param)
Called when a private message is received from another player.
void RoomMessageCallback(PEER peer, RoomType roomType, const char *nick, const char *message, MessageType messageType, void *param)
Called when a message arrives in a room.
virtual void handlePlayerEnum(bool success, int gameSpyIndex, const char *nick, int flags)
void connectAndLoop(void)
virtual void handleDisconnect(const char *reason)
void handleConnect(bool success)
Wstring getString(const Wstring &key)
virtual void handlePlayerLeft(const char *nick)
virtual void handlePlayerJoined(const char *nick)
virtual void handlePlayerChangedNick(const char *oldNick, const char *newNick)
virtual void handlePlayerMessage(const char *nick, const char *message, MessageType messageType)
virtual void handleRoomMessage(const char *nick, const char *message, MessageType messageType)
void handleGroupRoomList(bool success, int groupID, const char *name)
virtual void checkMatches(void)
void handleNickError(const char *badNick)
void handleJoin(bool success)
void logIt(const char *Txt)
void callbackEach(CHAT chat, CHATBool success, int index, const char *channel, const char *topic, int numUsers, void *param)
void callbackAll(CHAT chat, CHATBool success, int numChannels, const char **channels, const char **topics, int *numUsers, void *param)