windows-nt/Source/XPSP1/NT/admin/admt/migdrvr/servlist.hpp
2020-09-26 16:20:57 +08:00

142 lines
4.9 KiB
C++

#ifndef __SERVERLIST_HPP__
#define __SERVERLIST_HPP__
/*---------------------------------------------------------------------------
File: ...
Comments: ...
(c) Copyright 1999, Mission Critical Software, Inc., All Rights Reserved
Proprietary and confidential to Mission Critical Software, Inc.
REVISION LOG ENTRY
Revision By: Christy Boles
Revised on 03/04/99 17:10:38
---------------------------------------------------------------------------
*/
//#import "\bin\MCSEADCTAgent.tlb" no_namespace, named_guids
#import "Engine.tlb" no_namespace, named_guids
#include "Common.hpp"
#include "UString.hpp"
#include "TNode.hpp"
#define Agent_Status_Unknown (0x00000000)
#define Agent_Status_Installed (0x00000001)
#define Agent_Status_Started (0x00000002)
#define Agent_Status_Finished (0x00000004)
#define Agent_Status_Failed (0x80000000)
#define Agent_Status_QueryFailed (0x40000000)
class TServerNode : public TNode
{
BOOL bInclude;
WCHAR guid[100];
WCHAR serverName[100];
WCHAR resultpath[MAX_PATH];
WCHAR jobpath[MAX_PATH];
WCHAR logpath[MAX_PATH];
WCHAR timestamp[30];
IDCTAgent * pAgent;
int errSeverity;
DWORD status;
WCHAR errMsg[500];
int listNdx;
public:
TServerNode(WCHAR const * server)
{
safecopy(serverName,server);
guid[0] = 0;
pAgent = NULL;
errSeverity = 0;
errMsg[0] = 0;
timestamp[0] = 0;
resultpath[0] = 0;
jobpath[0] = 0;
logpath[0] = 0;
bInclude = FALSE;
status = 0;
listNdx = -1;
}
~TServerNode()
{
if ( pAgent )
pAgent->Release();
}
WCHAR * GetServer() { return serverName; }
WCHAR * GetJobID() { return guid; }
WCHAR * GetMessageText() { return errMsg; }
int GetSeverity() { return errSeverity; }
IDCTAgent * GetInterface() { return pAgent; }
WCHAR * GetTimeStamp() { return timestamp; }
WCHAR * GetJobFile() { return resultpath; }
WCHAR * GetJobPath() { return jobpath; }
WCHAR * GetLogPath() { return logpath; }
BOOL Include() { return bInclude; }
DWORD GetStatus() { return status; }
BOOL IsInstalled() { return status & Agent_Status_Installed; }
BOOL IsStarted() { return status & Agent_Status_Started; }
BOOL IsFinished() { return status & Agent_Status_Finished; }
BOOL IsRunning() { return ( (status & Agent_Status_Started) && !(status & (Agent_Status_Finished|Agent_Status_Failed))); }
BOOL HasFailed() { return status & Agent_Status_Failed; }
BOOL QueryFailed() { return status & Agent_Status_QueryFailed; }
void SetJobID(WCHAR const * id) { safecopy(guid,id); }
void SetSeverity(int s) { if ( s > errSeverity ) errSeverity = s; }
void SetInterface(IDCTAgent* p) { if ( p ) p->AddRef(); pAgent = p; }
void SetMessageText(WCHAR const * txt) { safecopy(errMsg,txt); }
void SetTimeStamp(WCHAR const * t) { safecopy(timestamp,t); }
void SetJobFile(WCHAR const * filename) { safecopy(resultpath,filename); }
void SetJobPath(WCHAR const * filename) { safecopy(jobpath,filename); safecopy(resultpath,filename); }
void SetLogPath(WCHAR const * filename) { safecopy(logpath,filename); }
void SetIncluded(BOOL v) { bInclude = v; }
void SetStatus(DWORD val) { status = val; }
void SetInstalled() { status |= Agent_Status_Installed; }
void SetStarted() { status |= Agent_Status_Started; }
void SetFinished() { status |= Agent_Status_Finished; }
void SetFailed() { status |= Agent_Status_Failed; }
void SetQueryFailed() { status |= Agent_Status_QueryFailed; }
};
int static CompareNames(TNode const * t1, TNode const * t2)
{
TServerNode * server1 = (TServerNode*)t1;
TServerNode * server2 = (TServerNode*)t2;
WCHAR * name1 = server1->GetServer();
WCHAR * name2 = server2->GetServer();
return UStrICmp(name1,name2);
}
int static CompareVal(TNode const * t, void const * v)
{
TServerNode * server = (TServerNode*)t;
WCHAR * name1 = server->GetServer();
WCHAR * name2 = (WCHAR*)v;
return UStrICmp(name1,name2);
}
class TServerList : public TNodeListSortable
{
public:
TServerList()
{
TypeSetSorted();
CompareSet(&CompareNames);
}
~TServerList()
{
DeleteAllListItems(TServerNode);
}
void Clear() { DeleteAllListItems(TServerNode); }
TServerNode * FindServer(WCHAR const * serverName) { return (TServerNode*)Find(&CompareVal,(void*)serverName); }
TServerNode * AddServer(WCHAR const * serverName) { TServerNode * p = new TServerNode(serverName); Insert(p); return p; }
};
#endif //__SERVERLIST_HPP__