//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Holds all the protocol bits and defines used in tracker networking // // $NoKeywords: $ //============================================================================= #ifndef TRACKERPROTOCOL_H #define TRACKERPROTOCOL_H #ifdef _WIN32 #pragma once #endif // failed return versions of the messages are the TMSG_FAIL_OFFSET + 10000 #define TMSG_FAIL_OFFSET 10000 //----------------------------------------------------------------------------- // Purpose: List of all the tracker messages used // msgID's are 32bits big //----------------------------------------------------------------------------- enum TrackerMsgID_t { // generic messages TMSG_NONE = 0, // no message id TMSG_ACK = 1, // packet acknowledgement // server -> Client messages TSVC_BASE = 1000, TSVC_CHALLENGE, TSVC_LOGINOK, TSVC_LOGINFAIL, TSVC_DISCONNECT, TSVC_FRIENDS, TSVC_FRIENDUPDATE, TSVC_HEARTBEAT, TSVC_PINGACK, // acknowledgement of TCLS_PING packet TSVC_FRIENDINFO, TSVC_USERVALID, TSVC_FRIENDSFOUND, TSVC_NOFRIENDS, TSVC_MESSAGE, // message passed through from another client TSVC_GAMEINFO, // information about a friends' game TSVC_AUTHREQUEST, // a user requesting auth from the receiving user TSVC_CONNECTIONKEEPALIVE, // information that an attemption connect is taking time, and the user should wait TSVC_ROUTEMESSAGEFAILED, // chat message failed to be routed through the servers TSVC_REDIRECTLOGIN, // tells the client to redirect their login attempt to a different server // Client -> server messages TCLS_BASE = 2000, TCLS_LOGIN, // login message TCLS_RESPONSE, // response to login challenge TCLS_PING, TCLS_FRIENDSEARCH, TCLS_HEARTBEAT, TCLS_AUTHUSER, TCLS_REQAUTH, TCLS_FRIENDINFO, // friend info request TCLS_SETINFO, TCLS_ROUTETOFRIEND, // generic reroute of a message to a friend // Client -> Client messages TCL_BASE = 3000, TCL_MESSAGE, // chat text message TCL_USERBLOCK, // soon to be obselete TCL_ADDEDTOCHAT, TCL_CHATADDUSER, TCL_CHATUSERLEAVE, TCL_TYPINGMESSAGE, TCL_FRIENDNETMESSAGE, // server -> server messages TSV_BASE = 4000, TSV_WHOISPRIMARY, TSV_PRIMARYSRV, TSV_REQUESTINFO, TSV_TOPOLOGYINFO, TSV_REQUESTTOPOLOGYINFO, TSV_SERVERPING, TSV_MONITORINFO, TSV_LOCKUSERRANGE, TSV_UNLOCKUSERRANGE, TSV_REDIRECTTOUSER, TSV_FORCEDISCONNECTUSER, TSV_USERCHECKMESSAGES, TSV_USERAUTHREQUEST, TSV_USERSTATUSCHANGED, TSV_USERRELOADFRIENDSLIST, TSV_REGISTERSERVERINNETWORK, TSV_SERVERSHUTTINGDOWN, TSV_UPDATEACTIVEUSERRANGESTATUS, // game server -> Client TCLG_BASE = 5000, // common msg failed ID's TSVC_HEARTBEAT_FAIL = TSVC_HEARTBEAT + TMSG_FAIL_OFFSET, TCLS_HEARTBEAT_FAIL = TCLS_HEARTBEAT + TMSG_FAIL_OFFSET, TCL_MESSAGE_FAIL = TCL_MESSAGE + TMSG_FAIL_OFFSET, }; //----------------------------------------------------------------------------- // Purpose: List of reasons explaining to user why they have been disconnected // from the friends network //----------------------------------------------------------------------------- enum TrackerLogoffReason_t { TRACKER_LOGOFF_NOREASON, // server reasons for disconnecting user TRACKER_LOGOFF_LOGGEDINELSEWHERE, // user has logged into friends at a different location TRACKER_LOGOFF_SERVERWORK, // server needs to do work (like lock the user range) TRACKER_LOGOFF_SERVERSHUTDOWN, // server has been shutdown TRACKER_LOGOFF_TIMEDOUT, // user hasn't heartbeat'd to server recently enough TRACKER_LOGOFF_REQUESTED, // user has requested to logoff TRACKER_LOGOFF_FIREWALL, // users' firewall won't allow enough packets through TRACKER_LOGOFF_NOTCONNECTED, // user sent server a packet that implied they think they're logged in but they're not TRACKER_LOGOFF_INVALIDSTEAMTICKET, // users steam ticket is invalid // client reasons for being disconnected TRACKER_LOGOFF_JOINEDGAME, // user has logged off because they joined a game TRACKER_LOGOFF_CONNECTIONTIMEOUT, // user connection has timed out TRACKER_LOGOFF_SERVERMESSAGEFAIL, // a message to the server was not successfully transmitted TRACKER_LOGOFF_TOOMANYATTEMPTS, // too many login attempts have been performed TRACKER_LOGOFF_OFFLINE, // steam is in offline mode so don't try to connect }; //----------------------------------------------------------------------------- // Purpose: List of all the reasons a login attempt may fail //----------------------------------------------------------------------------- enum TrackerLoginFailReason_t { TRACKER_LOGINFAIL_NOREASON = 0, TRACKER_LOGINFAIL_NOSUCHUSER = -2, TRACKER_LOGINFAIL_ALREADLOGGEDIN = -3, TRACKER_LOGINFAIL_INVALIDSTEAMTICKET = -4, TRACKER_LOGINFAIL_BUILDOUTOFDATE = -5, TRACKER_LOGINFAIL_PLATFORMOUTOFDATE = -6, }; //----------------------------------------------------------------------------- // Purpose: Holds basic status for a friend //----------------------------------------------------------------------------- struct FriendStatus_t { unsigned int friendID; int status; unsigned int sessionID; unsigned int ip; unsigned int port; unsigned int serverID; }; #endif // TRACKERPROTOCOL_H