Leaked source code of windows server 2003
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.
 
 
 
 
 
 

164 lines
4.7 KiB

//
// MODULE: APGTSCFG.CPP
// Fully implements class CDBLoadConfiguration
//
// PURPOSE:
// Brings together the persistent pieces of the online troubleshooter configuration:
// - the Topic Shop
// - the registry
// - the threads that maintain these.
// - the template file for error reporting
// Provides functions to get latest values on registry variables and to acquire a
// smart pointer to a CTopic based on its name.
//
// PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint
//
// COMPANY: Saltmine Creative, Inc. (206)-284-7511 [email protected]
//
// AUTHOR: Roman Mach
//
// ORIGINAL DATE: 8-2-96
//
// NOTES:
// 1. Based on Print Troubleshooter DLL
//
// Version Date By Comments
//--------------------------------------------------------------------
// V0.1 - RM Original
// V3.0 9/14/98 JM Major revisions as classes for file management have
// all been rewritten
//
#pragma warning(disable:4786)
#include "stdafx.h"
#include "apgtscfg.h"
//
//
CDBLoadConfiguration::CDBLoadConfiguration(HMODULE hModule,
CThreadPool * pThreadPool,
const CString& strTopicName,
CHTMLLog *pLog)
: m_TopicShop(),
m_pThreadPool(pThreadPool),
m_DirectoryMonitor(m_TopicShop ,strTopicName ),
m_RegistryMonitor(m_DirectoryMonitor, pThreadPool, strTopicName, pLog )
{
}
//
//
CDBLoadConfiguration::~CDBLoadConfiguration()
{
}
CString CDBLoadConfiguration::GetFullResource()
{
CString str;
m_RegistryMonitor.GetStringInfo(CAPGTSRegConnector::eResourcePath, str);
return str;
}
CString CDBLoadConfiguration::GetLogDir()
{
CString str;
m_RegistryMonitor.GetStringInfo(CAPGTSRegConnector::eLogFilePath, str);
return str;
}
CString CDBLoadConfiguration::GetVrootPath()
{
CString str;
m_RegistryMonitor.GetStringInfo(CAPGTSRegConnector::eVrootPath, str);
return str;
}
DWORD CDBLoadConfiguration::GetMaxThreads()
{
DWORD dw;
m_RegistryMonitor.GetNumericInfo(CAPGTSRegConnector::eMaxThreads, dw);
return dw;
}
// cookie life in minutes (before V3.0, was hours)
DWORD CDBLoadConfiguration::GetCookieLife()
{
DWORD dw;
m_RegistryMonitor.GetNumericInfo(CAPGTSRegConnector::eCookieLife, dw);
return dw;
}
DWORD CDBLoadConfiguration::GetReloadDelay()
{
DWORD dw;
m_RegistryMonitor.GetNumericInfo(CAPGTSRegConnector::eReloadDelay, dw);
return dw;
}
DWORD CDBLoadConfiguration::GetThreadsPP()
{
DWORD dw;
m_RegistryMonitor.GetNumericInfo(CAPGTSRegConnector::eThreadsPP, dw);
return dw;
}
DWORD CDBLoadConfiguration::GetMaxWQItems()
{
DWORD dw;
m_RegistryMonitor.GetNumericInfo(CAPGTSRegConnector::eMaxWQItems, dw);
return dw;
}
bool CDBLoadConfiguration::HasDetailedEventLogging()
{
DWORD dw;
m_RegistryMonitor.GetNumericInfo(CAPGTSRegConnector::eDetailedEventLogging, dw);
return dw ? true : false;
}
void CDBLoadConfiguration::GetListOfTopicNames(vector<CString>&arrstrTopic)
{
m_TopicShop.GetListOfTopicNames(arrstrTopic);
}
// Call this function to obtain a CP_TOPIC as a pointer to the topic (identified by
// strTopic) that you want to operate on. As long as the CP_TOPIC remains undeleted,
// the associated CTopic is guaranteed to remain undeleted.
// Warning: this function can wait a long time for the topic to be built.
CP_TOPIC & CDBLoadConfiguration::GetTopic(
const CString & strTopic, CP_TOPIC & cpTopic, bool bNewCookie)
{
return m_TopicShop.GetTopic(strTopic, cpTopic, bNewCookie);
}
// Call this function to obtain a CP_TEMPLATE as a pointer to the template (identified by
// strTopic) that you want to operate on. As long as the CP_TEMPLATE remains undeleted,
// the associated CAPGTSHTIReader is guaranteed to remain undeleted.
// Warning: this function can wait a long time for the template to be built.
CP_TEMPLATE & CDBLoadConfiguration::GetTemplate(
const CString & strTemplate, CP_TEMPLATE & cpTemplate, bool bNewCookie)
{
return m_TopicShop.GetTemplate(strTemplate, cpTemplate, bNewCookie);
}
// Call this function to add a template to the topic shop catalog of templates and
// to add it to the directory monitor list of templates to track for changes.
void CDBLoadConfiguration::AddTemplate( const CString & strTemplateName )
{
m_TopicShop.AddTemplate( strTemplateName );
// Notify the directory monitor to track this file.
m_DirectoryMonitor.AddTemplateToTrack( strTemplateName );
return;
}
bool CDBLoadConfiguration::RetTemplateInCatalogStatus( const CString & strTemplate, bool & bValid )
{
return( m_TopicShop.RetTemplateInCatalogStatus( strTemplate, bValid ) );
}
void CDBLoadConfiguration::CreateErrorPage(const CString & strError, CString& out)
{
m_DirectoryMonitor.CreateErrorPage(strError, out);
}