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.
150 lines
4.1 KiB
150 lines
4.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
#if !defined(AFX_SERVICESDLG_H__FD755233_0A7A_4CBB_BA5E_A5D0B3B5F830__INCLUDED_) |
|
#define AFX_SERVICESDLG_H__FD755233_0A7A_4CBB_BA5E_A5D0B3B5F830__INCLUDED_ |
|
|
|
#if _MSC_VER > 1000 |
|
#pragma once |
|
#endif // _MSC_VER > 1000 |
|
// ServicesDlg.h : header file |
|
// |
|
|
|
#include "iphelpers.h" |
|
#include "idle_dialog.h" |
|
#include "utllinkedlist.h" |
|
#include "resource.h" |
|
#include "window_anchor_mgr.h" |
|
#include "net_view_thread.h" |
|
#include "vmpi_defs.h" |
|
|
|
|
|
class CServiceInfo |
|
{ |
|
public: |
|
|
|
bool IsOff() const; // Returns true if the time since we've heard from this guy is too long. |
|
|
|
|
|
public: |
|
|
|
CString m_ComputerName; |
|
CString m_MasterName; |
|
CString m_Password; |
|
int m_iState; |
|
|
|
// Since the live time is always changing, we only update it every 10 seconds or so. |
|
DWORD m_LiveTimeMS; // How long the service has been running (in milliseconds). |
|
|
|
DWORD m_WorkerAppTimeMS; // How long the worker app has been running (0 if it's not running). |
|
|
|
DWORD m_LastPingTimeMS; // Last time we heard from this machine. Used to detect if the service |
|
// is off or not. |
|
|
|
// Used to detect if we need to re-sort the list. |
|
const char *m_pLastStatusText; |
|
DWORD m_LastLiveTimeMS; |
|
CString m_LastMasterName; |
|
|
|
int m_CPUPercentage; |
|
CString m_ExeName; |
|
CString m_MapName; |
|
int m_MemUsageMB; |
|
|
|
// Last time we updated the service in the listbox.. used to make sure we update its on/off status |
|
// every once in a while. |
|
DWORD m_LastUpdateTime; |
|
|
|
int m_ProtocolVersion; // i.e. the service's VMPI_SERVICE_PROTOCOL_VERSION. |
|
char m_ServiceVersion[32]; // Version string. |
|
|
|
CIPAddr m_Addr; |
|
}; |
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////// |
|
// CServicesDlg dialog |
|
|
|
class CServicesDlg : public CIdleDialog |
|
{ |
|
// Construction |
|
public: |
|
CServicesDlg(CWnd* pParent = NULL); // standard constructor |
|
|
|
// Dialog Data |
|
//{{AFX_DATA(CServicesDlg) |
|
enum { IDD = IDD_SERVICES }; |
|
CStatic m_NumServicesControl; |
|
CStatic m_NumDisabledServicesControl; |
|
CStatic m_NumWorkingServicesControl; |
|
CStatic m_NumWaitingServicesControl; |
|
CStatic m_NumOffServicesControl; |
|
CStatic m_PasswordDisplay; |
|
CListCtrl m_ServicesList; |
|
//}}AFX_DATA |
|
|
|
|
|
// Overrides |
|
// ClassWizard generated virtual function overrides |
|
//{{AFX_VIRTUAL(CServicesDlg) |
|
protected: |
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support |
|
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult); |
|
//}}AFX_VIRTUAL |
|
|
|
// Implementation |
|
protected: |
|
void BuildVMPIPingPacket( CUtlVector<char> &out, char cPacketID, unsigned char cProtocolVersion=VMPI_PROTOCOL_VERSION, bool bIgnorePassword=false ); |
|
|
|
virtual void OnIdle(); |
|
|
|
|
|
CServiceInfo* FindServiceByComputerName( const char *pComputerName ); |
|
void SendToSelectedServices( const char *pData, int len ); |
|
void UpdateServiceInListbox( CServiceInfo *pInfo ); |
|
void UpdateServiceCountDisplay(); |
|
void ResortItems(); |
|
|
|
void UpdateServicesFromNetMessages(); |
|
void UpdateServicesFromNetView(); |
|
void BuildClipboardText( CUtlVector<char> &clipboardText ); |
|
|
|
|
|
ISocket *m_pServicesPingSocket; |
|
DWORD m_dwLastServicesPing; // Last time we pinged all the services. |
|
|
|
// Restricts the password so we only see a particular set of VMPI services. |
|
CString m_Password; |
|
|
|
CUtlLinkedList<CServiceInfo*, int> m_Services; |
|
CNetViewThread m_NetViewThread; |
|
|
|
|
|
CWindowAnchorMgr m_AnchorMgr; |
|
|
|
bool m_bListChanged; // Used to detect if we need to re-sort the list. |
|
|
|
// Generated message map functions |
|
//{{AFX_MSG(CServicesDlg) |
|
virtual BOOL OnInitDialog(); |
|
afx_msg void OnPatchServices(); |
|
afx_msg void OnStopServices(); |
|
afx_msg void OnStopJobs(); |
|
afx_msg void OnFilterByPassword(); |
|
afx_msg void OnForcePassword(); |
|
afx_msg void OnCopyToClipboard(); |
|
afx_msg void OnDblclkServicesList(NMHDR* pNMHDR, LRESULT* pResult); |
|
afx_msg void OnSize(UINT nType, int cx, int cy); |
|
//}}AFX_MSG |
|
DECLARE_MESSAGE_MAP() |
|
}; |
|
|
|
//{{AFX_INSERT_LOCATION}} |
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. |
|
|
|
#endif // !defined(AFX_SERVICESDLG_H__FD755233_0A7A_4CBB_BA5E_A5D0B3B5F830__INCLUDED_)
|
|
|