|
|
//====== Copyright (C), Valve Corporation, All rights reserved. =======
//
// Purpose: This file defines all of our over-the-wire net protocols for the
// global system messages used by the GC. These are usually sent by
// the GC Host so be very careful of versioning issues when you consider
// changing them. Note that we never use types with undefined length
// (like int). Always use an explicit type (like int32).
//
//=============================================================================
#ifndef GCSYSTEMMSGS_H
#define GCSYSTEMMSGS_H
#ifdef _WIN32
#pragma once
#endif
namespace GCSDK {
#pragma pack( push, 8 ) // this is a 8 instead of a 1 to maintain backward compatibility with Steam
enum EGCSystemMsg { k_EGCMsgInvalid = 0, k_EGCMsgMulti = 1,
k_EGCMsgGenericReply = 10,
k_EGCMsgSystemBase = 50, k_EGCMsgAchievementAwarded = 51, k_EGCMsgConCommand = 52, // A command from the GC's admin console
k_EGCMsgStartPlaying = 53, k_EGCMsgStopPlaying = 54, k_EGCMsgStartGameserver = 55, k_EGCMsgStopGameserver = 56, k_EGCMsgWGRequest = 57, k_EGCMsgWGResponse = 58, k_EGCMsgGetUserGameStatsSchema = 59, // Gets the user game stats schema for the app
k_EGCMsgGetUserGameStatsSchemaResponse = 60, k_EGCMsgGetUserStatsDEPRECATED = 61, // Gets user game stats for a user
k_EGCMsgGetUserStatsResponse = 62, k_EGCMsgAppInfoUpdated = 63, // Message sent to the GC when there has been an AppInfo update
k_EGCMsgValidateSession = 64, // Message sent by the GC when it wants to make sure a session exists
k_EGCMsgValidateSessionResponse = 65, // Message sent to the GC in response to ValidateSession
k_EGCMsgLookupAccountFromInput = 66, // Sent by the GC to lookup user. Reply is k_EGCMsgGenericReply
k_EGCMsgSendHTTPRequest = 67, // Message sent by the GC to do a generic HTTP request
k_EGCMsgSendHTTPRequestResponse = 68, // Response back to the GC with the results of the HTTP request
k_EGCMsgPreTestSetup = 69, // Reset the GC database (usually for testing purposes)
k_EGCMsgRecordSupportAction = 70, // Logs a support action
k_EGCMsgGetAccountDetails = 71, // Requests the details for an account
k_EGCMsgSendInterAppMessage = 72, // Sends a message to another app's GC
k_EGCMsgReceiveInterAppMessage = 73, // Receives a message from another app's GC
k_EGCMsgFindAccounts = 74, // queries the AMs for accounts by name
k_EGCMsgPostAlert = 75, // posts an alert to Steam
k_EGCMsgGetLicenses = 76, // asks Steam for the user's licenses
k_EGCMsgGetUserStats = 77, // Gets user game stats for a user
k_EGCMsgGetCommands = 78, // request for a list of commands from a gc console
k_EGCMsgGetCommandsResponse = 79, // response with a list of commands for a gc console
k_EGCMsgAddFreeLicense = 80, // request for for Steam to add a license to the specified free package
k_EGCMsgAddFreeLicenseResponse = 81, // response with the result of the attempt to add a free license
k_EGCMsgGetIPLocation = 82, // Get geolocation data for a specific IP
k_EGCMsgGetIPLocationResponse = 83, // Geolocation response
k_EGCMsgSystemStatsSchema = 84, // Message sent by the GC specifying what its stats schema is
k_EGCMsgGetSystemStats = 85, // Message sent to the GC requesting its stats
k_EGCMsgGetSystemStatsResponse = 86, // Message sent by the GC with its stats
k_EGCMsgSendEmail = 87, // Sent by the GC to send an email to a user
k_EGCMsgSendEmailResponse = 88, // Response with the result of the send request
k_EGCMsgGetEmailTemplate = 89, // Sent to the GC to request an email template
k_EGCMsgGetEmailTemplateResponse = 90, // Get email template response
// web API calls
k_EGCMsgWebAPIBase = 100, k_EGCMsgWebAPIRegisterInterfaces = k_EGCMsgWebAPIBase + 1, // sent once at startup to register APIs
k_EGCMsgWebAPIJobRequest = k_EGCMsgWebAPIBase + 2, // sent when an actual request is made
k_EGCMsgWebAPIRegistrationRequested = k_EGCMsgWebAPIBase + 3, // sent by the GC Host when it learns a web API server has started
// Memcached
k_EGCMsgMemCachedBase = 200, // Get key(s) from memcached
k_EGCMsgMemCachedGet = k_EGCMsgMemCachedBase, // Get key(s) from memcached
k_EGCMsgMemCachedGetResponse = k_EGCMsgMemCachedBase + 1, // Retrieved keys
k_EGCMsgMemCachedSet = k_EGCMsgMemCachedBase + 2, // Set key(s) into memcached
k_EGCMsgMemCachedDelete = k_EGCMsgMemCachedBase + 3, // Delete key(s) from memcached
};
// generic zero-length message struct
struct MsgGCEmpty_t {
};
// k_EGCMsgAchievementAwarded
struct MsgGCAchievementAwarded_t { uint16 m_usStatID; uint8 m_ubBit; // var data:
// string data: name of achievement earned
};
// k_EGCMsgConCommand
struct MsgGCConCommand_t { // var data:
// string: the command as typed into the console
};
// k_EGCMsgStartPlaying
struct MsgGCStartPlaying_t { CSteamID m_steamID; CSteamID m_steamIDGS; uint32 m_unServerAddr; uint16 m_usServerPort; };
// k_EGCMsgStartPlaying
// k_EGCMsgStopGameserver
struct MsgGCStopSession_t { CSteamID m_steamID; };
// k_EGCMsgStartGameserver
struct MsgGCStartGameserver_t { CSteamID m_steamID; uint32 m_unServerAddr; uint16 m_usServerPort; };
// k_EGCMsgWGRequest
struct MsgGCWGRequest_t { uint64 m_ulSteamID; //SteamID of auth'd WG user
uint32 m_unPrivilege; // The EGCWebApiPrivilege value that the request was made with
uint32 m_cubKeyValues; // length of the key values data blob in message (starts after string request name data)
// var data -
// request name
// binary key values of web request
};
// k_EGCMsgWGResponse
struct MsgGCWGResponse_t { bool m_bResult; // True if the request was successful
uint32 m_cubKeyValues; // length of the key values data blob in message
// var data -
// binary key values of web response
};
// k_EGCMsgGetUserGameStatsSchemaResponse
struct MsgGetUserGameStatsSchemaResponse_t { bool m_bSuccess; // True is the request was successful
// var data -
// binary key values containing the User Game Stats schema
};
// k_EGCMsgGetUserStats
struct MsgGetUserStats_t { uint64 m_ulSteamID; // SteamID the stats are requested for
uint16 m_cStatIDs; // A count of the number of statIDs requested
// var data -
// Array of m_cStatIDs 16-bit StatIDs
};
// k_EGCMsgGetUserStatsResponse
struct MsgGetUserStatsResponse_t { uint64 m_ulSteamID; // SteamID the stats were requested for
bool m_bSuccess; // True is the request was successful
uint16 m_cStats; // Number of stats returned in the message
// var data -
// m_cStats instances of:
// uint16 usStatID - Stat ID
// uint32 unData - Stat value
};
// k_EGCMsgValidateSession
struct MsgGCValidateSession_t { uint64 m_ulSteamID; // SteamID to validate
};
// k_EGCMsgValidateSessionResponse
struct MsgGCValidateSessionResponse_t { uint64 m_ulSteamID; uint64 m_ulSteamIDGS; uint32 m_unServerAddr; uint16 m_usServerPort; bool m_bOnline; };
// response to k_EGCMsgLookupAccountFromInput
struct MsgGCLookupAccountResponse { uint64 m_ulSteamID; };
// k_EGCMsgSendHTTPRequest
struct MsgGCSendHTTPRequest_t { // Variable data:
// - Serialized CHTTPRequest
};
// k_EGCMsgSendHTTPRequestResponse
struct MsgGCSendHTTPRequestResponse_t { bool m_bCompleted; // Variable data:
// - if m_bCompleted is true, Serialized CHTTPResponse
};
// k_EGCMsgRecordSupportAction
struct MsgGCRecordSupportAction_t { uint32 m_unAccountID; // which account is affected (object)
uint32 m_unActorID; // who made the change (subject)
// Variable data:
// - string - Custom data for the event
// - string - A note with the reason for the change
};
// k_EGCMsgWebAPIRegisterInterfaces
struct MsgGCWebAPIRegisterInterfaces_t { uint32 m_cInterfaces; // Variable data:
// - KeyValues for interface - one per interface
};
// k_EGCMsgGetAccountDetails
struct MsgGCGetAccountDetails_t { uint64 m_ulSteamID; // SteamID to validate
};
// k_EGCMsgSendInterAppMessage
// k_EGCMsgReceiveInterAppMessage
struct MsgGCInterAppMessage_t { AppId_t m_unAppID;
// Variable data:
// The message to send. Both GCs need to agree on the protocol
};
// Used by k_EGCMsgFindAccounts
enum EAccountFindType { k_EFindAccountTypeInvalid = 0, k_EFindAccountTypeAccountName = 1, k_EFindAccountTypeEmail, k_EFindAccountTypePersonaName, k_EFindAccountTypeURL, k_EFindAccountTypeAllOnline, k_EFindAccountTypeAll, k_EFindClanTypeClanName, k_EFindClanTypeURL, k_EFindClanTypeOfficialURL, k_EFindClanTypeAppID, };
extern void InitGCSystemMessageTypes();
} // namespace GCSDK
#pragma pack( pop )
#endif // GCSYSTEMMSGS_H
|