Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

161 lines
5.1 KiB

//========= 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