//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //=============================================================================// #if !defined(AFX_JOBWATCHDLG_H__761BDEEF_D549_4F10_817C_1C1FAF9FCA47__INCLUDED_) #define AFX_JOBWATCHDLG_H__761BDEEF_D549_4F10_817C_1C1FAF9FCA47__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // JobWatchDlg.h : header file // #include "idle_dialog.h" #include "resource.h" #include "utlvector.h" #include "imysqlwrapper.h" #include "GraphControl.h" #include "window_anchor_mgr.h" #include "mysql_async.h" class CWorkerInfo { public: CWorkerInfo() { m_bConnected = false; m_nWorkUnitsDone = 0; m_JobWorkerID = 0xFFFFFFFF; m_RunningTimeMS = 0; m_ThreadWUs[0] = m_ThreadWUs[1] = m_ThreadWUs[2] = m_ThreadWUs[3] = -1; } CString m_ComputerName; int m_bConnected; int m_nWorkUnitsDone; unsigned long m_JobWorkerID; unsigned long m_RunningTimeMS; CString m_CurrentStage; int m_ThreadWUs[4]; }; ///////////////////////////////////////////////////////////////////////////// // CJobWatchDlg dialog class CJobWatchDlg : public CIdleDialog { // Construction public: CJobWatchDlg( CWnd* pParent = NULL); // standard constructor virtual ~CJobWatchDlg(); // Dialog Data //{{AFX_DATA(CJobWatchDlg) enum { IDD = IDD_JOB_WATCH }; CListCtrl m_Workers; CEdit m_TextOutput; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CJobWatchDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult); //}}AFX_VIRTUAL // Implementation protected: virtual void OnIdle(); void RefreshWorkerStats(); CWorkerInfo* FindWorkerByID( unsigned long jobWorkerID ); CWorkerInfo* FindWorkerByMachineName( const char *pMachineName ); void SetWorkerListItemInt( int nIndex, int iColumn, int value ); void UpdateWorkersList(); void ResortItems(); // Query IDs. enum { QUERY_TEXT=0, QUERY_GRAPH, QUERY_WORKER_STATS, NUM_QUERIES }; void ProcessQueryResults_Graph( IMySQLRowSet *pSet ); void ProcessQueryResults_Text( IMySQLRowSet *pSet ); void ProcessQueryResults_WorkerStats( IMySQLRowSet *pSet ); bool m_bQueriesInProgress[NUM_QUERIES]; // This is our connection to the mysql database. IMySQLAsync *m_pSQL; CSysModule *m_hMySQLDLL; CWindowAnchorMgr m_AnchorMgr; bool GetCurJobWorkerID( unsigned long &id ); CGraphControl m_GraphControl; unsigned long m_JobID; int m_CurGraphTime; int m_CurMessageIndex; int m_CurWorkerTextToken; // used to let it ignore old text in the thread's queue DWORD m_LastQueryTime; // Last time we made a query. // Generated message map functions //{{AFX_MSG(CJobWatchDlg) virtual BOOL OnInitDialog(); afx_msg void OnSelChangeWorkers(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnOdstatechangedWorkers(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnItemchangedWorkers(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_JOBWATCHDLG_H__761BDEEF_D549_4F10_817C_1C1FAF9FCA47__INCLUDED_)