| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- //====== Copyright ©, Valve Corporation, All rights reserved. =======
- //
- // Purpose: interface to the game coordinator for this application
- //
- //=============================================================================
- #ifndef ISTEAMGAMECOORDINATOR
- #define ISTEAMGAMECOORDINATOR
- #ifdef _WIN32
- #pragma once
- #endif
- #include "steamtypes.h"
- #include "steamclientpublic.h"
- // list of possible return values from the ISteamGameCoordinator API
- enum EGCResults
- {
- k_EGCResultOK = 0,
- k_EGCResultNoMessage = 1, // There is no message in the queue
- k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message
- k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam
- k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage
- };
- //-----------------------------------------------------------------------------
- // Purpose: Functions for sending and receiving messages from the Game Coordinator
- // for this application
- //-----------------------------------------------------------------------------
- class ISteamGameCoordinator
- {
- public:
- // sends a message to the Game Coordinator
- virtual EGCResults SendMessage( uint32 unMsgType, const void *pubData, uint32 cubData ) = 0;
- // returns true if there is a message waiting from the game coordinator
- virtual bool IsMessageAvailable( uint32 *pcubMsgSize ) = 0;
- // fills the provided buffer with the first message in the queue and returns k_EGCResultOK or
- // returns k_EGCResultNoMessage if there is no message waiting. pcubMsgSize is filled with the message size.
- // If the provided buffer is not large enough to fit the entire message, k_EGCResultBufferTooSmall is returned
- // and the message remains at the head of the queue.
- virtual EGCResults RetrieveMessage( uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0;
- };
- #define STEAMGAMECOORDINATOR_INTERFACE_VERSION "SteamGameCoordinator001"
- // callbacks
- #if defined( VALVE_CALLBACK_PACK_SMALL )
- #pragma pack( push, 4 )
- #elif defined( VALVE_CALLBACK_PACK_LARGE )
- #pragma pack( push, 8 )
- #else
- #error isteamclient.h must be included
- #endif
- // callback notification - A new message is available for reading from the message queue
- struct GCMessageAvailable_t
- {
- enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 1 };
- uint32 m_nMessageSize;
- };
- // callback notification - A message failed to make it to the GC. It may be down temporarily
- struct GCMessageFailed_t
- {
- enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 2 };
- };
- #pragma pack( pop )
- #endif // ISTEAMGAMECOORDINATOR
|