windows-nt/Source/XPSP1/NT/admin/hmonitor/snapin/systemgroup.inl
2020-09-26 16:20:57 +08:00

363 lines
8.7 KiB
C++

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
/////////////////////////////////////////////////////////////////////////////
// Clipboard Operations
/////////////////////////////////////////////////////////////////////////////
inline bool CSystemGroup::Cut()
{
TRACEX(_T("CSystemGroup::Cut\n"));
return false;
}
inline bool CSystemGroup::Copy()
{
TRACEX(_T("CSystemGroup::Copy\n"));
return false;
}
inline bool CSystemGroup::Paste()
{
TRACEX(_T("CSystemGroup::Paste\n"));
return false;
}
/////////////////////////////////////////////////////////////////////////////
// Operations
/////////////////////////////////////////////////////////////////////////////
inline bool CSystemGroup::Refresh()
{
TRACEX(_T("CSystemGroup::Refresh\n"));
return false;
}
inline bool CSystemGroup::ResetStatus()
{
TRACEX(_T("CSystemGroup::ResetStatus\n"));
return false;
}
inline CString CSystemGroup::GetUITypeName()
{
TRACEX(_T("CSystemGroup::GetUITypeName\n"));
CString sTypeName;
sTypeName.LoadString(IDS_STRING_SYSTEM_GROUP);
return sTypeName;
}
inline void CSystemGroup::Serialize(CArchive& ar)
{
TRACEX(_T("CSystemGroup::Serialize\n"));
CHMObject::Serialize(ar);
if( ar.IsStoring() )
{
// write out the list of child groups
ar << GetChildCount();
for( int i = 0; i < GetChildCount(); i++ )
{
GetChild(i)->Serialize(ar);
}
// write out the list of shortcuts
ar << (int)m_Shortcuts.GetSize();
for( i = 0; i < m_Shortcuts.GetSize(); i++ )
{
m_Shortcuts[i]->Serialize(ar);
}
}
else
{
// update the scope items to reflect their correct name
for(int i = 0; i < m_ScopeItems.GetSize(); i++)
{
m_ScopeItems[i]->SetDisplayName(0,m_sName);
m_ScopeItems[i]->SetItem();
}
int iChildCount = 0;
ar >> iChildCount;
for( i = 0; i < iChildCount; i++ )
{
CSystemGroup* pNewGroup = new CSystemGroup;
pNewGroup->SetScopePane(GetScopePane());
pNewGroup->SetName(GetUniqueChildName());
AddChild(pNewGroup);
pNewGroup->Serialize(ar);
}
int iShortcutCount = 0;
ar >> iShortcutCount;
CHealthmonScopePane* pPane = (CHealthmonScopePane*)GetScopePane();
CSystemGroup* pASG = pPane->GetAllSystemsGroup();
for( i = 0; i < iShortcutCount; i++ )
{
CString sName;
CString sSystemName;
ar >> sName;
ar >> sSystemName;
AddShortcut(pASG->GetChild(sName));
}
}
}
inline void CAllSystemsGroup::Serialize(CArchive& ar)
{
TRACEX(_T("CAllSystemsGroup::Serialize\n"));
CHMObject::Serialize(ar);
if( ar.IsStoring() )
{
// write out the list of child groups
ar << GetChildCount();
for( int i = 0; i < GetChildCount(); i++ )
{
GetChild(i)->Serialize(ar);
}
}
else
{
int iChildCount = 0;
ar >> iChildCount;
for( int i = 0; i < iChildCount; i++ )
{
CSystem* pNewSystem = new CSystem;
pNewSystem->Serialize(ar);
//----------------------------------------------
// v-marfin 62501 - check to see if successful
/*CString sFailed = pNewSystem->GetSystemName();
if (sFailed.Right(FAILED_STRING.GetLength()) == FAILED_STRING)
{
sFailed = sFailed.Left(sFailed.GetLength() - FAILED_STRING.GetLength());
pNewSystem->SetSystemName(sFailed);
delete pNewSystem;
continue;
}*/
BOOL bFailed=FALSE;
// v-marfin 62501 - check to see if successful
CString sFailed = pNewSystem->GetSystemName();
if (sFailed.Right(FAILED_STRING.GetLength()) == FAILED_STRING)
{
sFailed = sFailed.Left(sFailed.GetLength() - FAILED_STRING.GetLength());
pNewSystem->SetSystemName(sFailed);
bFailed=TRUE;
CString sMsg;
sMsg.Format(IDS_STRING_TRANSPORT_ERROR,sFailed);
AfxMessageBox(sMsg);
}
//----------------------------------------------
//----------------------------------------------
// v-marfin 62501 - check to see if successful.
// When unable to connect to a system, do not even show
// its icon in the tree. We have to do this hack in the BETA
// time frame since there are too many other implications of
// having the icon appear
// in the list (i.e. if the user tries to add groups to it, it
// causes crashes etc.) We should deal with this in the RTM
// time frame however. So for now, place the code here and
// at final fix time, see the code which is commented out below
// and use that instead of this.
if (bFailed)
{
delete pNewSystem;
continue;
}
//----------------------------------------------
pNewSystem->SetScopePane(GetScopePane());
AddChild(pNewSystem);
//----------------------------------------------
// v-marfin 62501 - check to see if successful.
// When unable to connect to a system, at least show its
// icon so the user sees that it is inaccessible. We
// comment out this code for BETA time frame since there
// are too many other implications of having the icon appear
// in the list (i.e. if the user tries to add groups to it, it
// causes crashes etc.) We should deal with this in the RTM
// time frame however. So for now, the code to check the
// success of connecting will be placed just above here.
/*if (bFailed)
{
delete pNewSystem;
continue;
}*/
//----------------------------------------------
pNewSystem->Connect();
CActionPolicy* pPolicy = new CActionPolicy;
pPolicy->SetSystemName(pNewSystem->GetName());
pNewSystem->AddChild(pPolicy);
}
}
}
/////////////////////////////////////////////////////////////////////////////
// State Members
/////////////////////////////////////////////////////////////////////////////
inline void CSystemGroup::TallyChildStates()
{
TRACEX(_T("CSystemGroup::TallyChildStates\n"));
m_lNormalCount = 0L;
m_lWarningCount = 0L;
m_lCriticalCount = 0L;
m_lUnknownCount = 0L;
for( int i = 0; i < m_Children.GetSize(); i++ )
{
switch( m_Children[i]->GetState() )
{
case HMS_NORMAL:
{
m_lNormalCount++;
}
break;
case HMS_WARNING:
{
m_lWarningCount++;
}
break;
case HMS_CRITICAL:
{
m_lCriticalCount++;
}
break;
case HMS_UNKNOWN:
{
m_lUnknownCount++;
}
break;
}
}
for( i = 0; i < m_Shortcuts.GetSize(); i++ )
{
switch( m_Shortcuts[i]->GetState() )
{
case HMS_NORMAL:
{
m_lNormalCount++;
}
break;
case HMS_WARNING:
{
m_lWarningCount++;
}
break;
case HMS_CRITICAL:
{
m_lCriticalCount++;
}
break;
case HMS_UNKNOWN:
{
m_lUnknownCount++;
}
break;
}
}
}
/////////////////////////////////////////////////////////////////////////////
// Scope Item Members
/////////////////////////////////////////////////////////////////////////////
inline CScopePaneItem* CSystemGroup::CreateScopeItem()
{
TRACEX(_T("CSystemGroup::CreateScopeItem\n"));
CSystemGroupScopeItem * pNewItem = new CSystemGroupScopeItem;
pNewItem->SetObjectPtr(this);
return pNewItem;
}
/////////////////////////////////////////////////////////////////////////////
// Scope Item Members
/////////////////////////////////////////////////////////////////////////////
inline CScopePaneItem* CAllSystemsGroup::CreateScopeItem()
{
TRACEX(_T("CAllSystemsGroup::CreateScopeItem\n"));
CAllSystemsScopeItem * pNewItem = new CAllSystemsScopeItem;
pNewItem->SetObjectPtr(this);
return pNewItem;
}
/////////////////////////////////////////////////////////////////////////////
// New Child Creation Members
/////////////////////////////////////////////////////////////////////////////
inline void CSystemGroup::CreateNewChildSystemGroup()
{
TRACEX(_T("CSystemGroup::CreateNewChildSystemGroup\n"));
CString sName = GetUniqueChildName(IDS_STRING_SYSTEMGROUP_FMT);
CSystemGroup* pNewGroup = new CSystemGroup;
pNewGroup->SetName(sName);
CHMObject::AddChild(pNewGroup);
if( pNewGroup->GetScopeItemCount() )
{
CScopePaneItem* pItem = pNewGroup->GetScopeItem(0);
if( pItem )
{
pItem->SelectItem();
pItem->InvokePropertySheet();
}
}
}
/////////////////////////////////////////////////////////////////////////////
// System Child Members
/////////////////////////////////////////////////////////////////////////////
inline CHMObject* CSystemGroup::GetShortcut(const CString& sName)
{
TRACEX(_T("CSystemGroup::GetShortcut\n"));
for( int i = 0; i < m_Shortcuts.GetSize(); i++ )
{
if( m_Shortcuts[i]->GetName().CompareNoCase(sName) == 0 )
{
return m_Shortcuts[i];
}
}
return NULL;
}