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.
134 lines
3.3 KiB
134 lines
3.3 KiB
//========= 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_)
|