//========= 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 &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 &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 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_)