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.
92 lines
2.1 KiB
92 lines
2.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef SERVICE_CONN_MGR_H |
|
#define SERVICE_CONN_MGR_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
#include "utllinkedlist.h" |
|
#include "utlvector.h" |
|
#include "tcpsocket.h" |
|
#include "ThreadedTCPSocketEmu.h" |
|
|
|
|
|
class CServiceConn |
|
{ |
|
public: |
|
CServiceConn(); |
|
~CServiceConn(); |
|
|
|
int m_ID; |
|
ITCPSocket *m_pSocket; |
|
DWORD m_LastRecvTime; |
|
}; |
|
|
|
|
|
// ------------------------------------------------------------------------------------------ // |
|
// CServiceConnMgr. This class manages connections to all the UIs (there should only be one UI at |
|
// any given time, but it's conceivable that multiple people can be logged into NT servers |
|
// simultaneously). |
|
// ------------------------------------------------------------------------------------------ // |
|
|
|
class CServiceConnMgr |
|
{ |
|
public: |
|
|
|
CServiceConnMgr(); |
|
~CServiceConnMgr(); |
|
|
|
bool InitServer(); // Registers as a systemwide server. |
|
bool InitClient(); // Connects to the server. |
|
void Term(); |
|
|
|
// Returns true if there are any connections. If you used InitClient() and there are |
|
// no connections, it will continuously try to connect with a server. |
|
bool IsConnected(); |
|
|
|
// This should be called as often as possible. It checks for dead connections and it |
|
// handles incoming packets from UIs. |
|
void Update(); |
|
|
|
// This sends out a message. If id is -1, then it sends to all connections. |
|
void SendPacket( int id, const void *pData, int len ); |
|
|
|
|
|
// Overridables. |
|
public: |
|
|
|
virtual void OnNewConnection( int id ); |
|
virtual void OnTerminateConnection( int id ); |
|
virtual void HandlePacket( const char *pData, int len ); |
|
|
|
|
|
private: |
|
|
|
void AttemptConnect(); |
|
|
|
|
|
private: |
|
|
|
CUtlLinkedList<CServiceConn*, int> m_Connections; |
|
|
|
bool m_bShuttingDown; |
|
|
|
// This tells if we're running as a client or server. |
|
bool m_bServer; |
|
|
|
// If we're a client, this is the last time we tried to connect. |
|
DWORD m_LastConnectAttemptTime; |
|
|
|
// If we're the server, this is the socket we listen on. |
|
ITCPListenSocket *m_pListenSocket; |
|
}; |
|
|
|
|
|
#endif // SERVICE_CONN_MGR_H
|
|
|