/*------------------------------------------------------------------------- client.h Per client stuff on lobby side Owner: Copyright 1986-2000 Microsoft Corporation, All Rights Reserved *-----------------------------------------------------------------------*/ #ifndef _CLIENT_H_ #define _CLIENT_H_ // There shld be a one-to-one mapping between connections on the servers session and CFLServer objects, // but there's not, since each connection can (for now) actually support more than one game). // CFLServer is more of a server "game" than a server "connection" class CFLClient : public IObject { public: CFLClient(CFMConnection * pcnxn) : m_dwID(c_dwID), m_pcnxn(pcnxn) { assert(pcnxn); m_pcnxn->SetPrivateData((DWORD) this); // set up two-way link between connection and this } ~CFLClient() { m_pcnxn->SetPrivateData(0); // disconnect two-way link between connection and this } bool IsValidThisPtr() // this { bool fValid = this && (c_dwID == m_dwID); assert (fValid); // this should only be false if either a bug in the client, or hacked client return fValid; } static CFLClient * FromConnection(CFMConnection & cnxn) { return (CFLClient *)cnxn.GetPrivateData(); } CFMConnection * GetConnection() { return m_pcnxn; } private: static const DWORD c_dwID; static const int c_cMaxPlayers; CFMConnection * m_pcnxn; DWORD m_dwID; }; #endif