167 lines
3.9 KiB
C++
167 lines
3.9 KiB
C++
/******************************************************************************
|
|
|
|
Copyright (c) 2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
Config.cpp
|
|
|
|
Abstract:
|
|
This file contains the implementation of the MPCConfig class,
|
|
that extends the CISAPIconfig class.
|
|
|
|
Revision History:
|
|
Davide Massarenti (Dmassare) 05/02/99
|
|
created
|
|
|
|
******************************************************************************/
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
static MPC::wstring l_DefaultInstance = L"DEFAULT";
|
|
static DWORD l_MaximumPacketSize = 64*1024;
|
|
|
|
|
|
HRESULT Config_GetInstance( /*[in] */ const MPC::wstring& szURL ,
|
|
/*[out]*/ CISAPIinstance*& isapiInstance ,
|
|
/*[out]*/ bool& fFound )
|
|
{
|
|
__ULT_FUNC_ENTRY("Config_GetInstance");
|
|
|
|
HRESULT hr;
|
|
CISAPIconfig::Iter it;
|
|
|
|
isapiInstance = NULL;
|
|
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, g_Config.GetInstance( it, fFound, szURL ));
|
|
|
|
if(fFound == false)
|
|
{
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, g_Config.GetInstance( it, fFound, l_DefaultInstance ));
|
|
}
|
|
|
|
if(fFound)
|
|
{
|
|
isapiInstance = &(*it);
|
|
}
|
|
|
|
hr = S_OK;
|
|
|
|
|
|
__ULT_FUNC_CLEANUP;
|
|
|
|
__ULT_FUNC_EXIT(hr);
|
|
}
|
|
|
|
HRESULT Config_GetProvider( /*[in] */ const MPC::wstring& szURL ,
|
|
/*[in] */ const MPC::wstring& szName ,
|
|
/*[out]*/ CISAPIprovider*& isapiProvider ,
|
|
/*[out]*/ bool& fFound )
|
|
{
|
|
__ULT_FUNC_ENTRY("Config_GetProvider");
|
|
|
|
HRESULT hr;
|
|
CISAPIinstance* isapiInstance;
|
|
CISAPIinstance::ProvIter it;
|
|
|
|
isapiProvider = NULL;
|
|
|
|
//
|
|
// First of all, check if the provider is supplied directly by the instance.
|
|
//
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, ::Config_GetInstance( szURL, isapiInstance, fFound ));
|
|
if(fFound == false)
|
|
{
|
|
__MPC_SET_ERROR_AND_EXIT(hr, S_OK);
|
|
}
|
|
|
|
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, isapiInstance->GetProvider( it, fFound, szName ));
|
|
if(fFound == false)
|
|
{
|
|
//
|
|
// No, the provider is not provided directly by this instance, try using the DEFAULT one.
|
|
//
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, ::Config_GetInstance( l_DefaultInstance, isapiInstance, fFound ));
|
|
if(fFound == false)
|
|
{
|
|
__MPC_SET_ERROR_AND_EXIT(hr, S_OK);
|
|
}
|
|
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, isapiInstance->GetProvider( it, fFound, szName ));
|
|
}
|
|
|
|
if(fFound)
|
|
{
|
|
isapiProvider = &((*it).second);
|
|
}
|
|
|
|
hr = S_OK;
|
|
|
|
|
|
__ULT_FUNC_CLEANUP;
|
|
|
|
__ULT_FUNC_EXIT(hr);
|
|
}
|
|
|
|
HRESULT Config_GetMaximumPacketSize( /*[in] */ const MPC::wstring& szURL ,
|
|
/*[out]*/ DWORD& dwMaximumPacketSize )
|
|
{
|
|
__ULT_FUNC_ENTRY("Config_GetMaximumPacketSize");
|
|
|
|
HRESULT hr;
|
|
CISAPIinstance* isapiInstance;
|
|
bool fFound;
|
|
|
|
|
|
dwMaximumPacketSize = l_MaximumPacketSize;
|
|
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, ::Config_GetInstance( szURL, isapiInstance, fFound ));
|
|
if(fFound)
|
|
{
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, isapiInstance->get_MaximumPacketSize( dwMaximumPacketSize ));
|
|
}
|
|
|
|
hr = S_OK;
|
|
|
|
|
|
__ULT_FUNC_CLEANUP;
|
|
|
|
__ULT_FUNC_EXIT(hr);
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
HRESULT Util_CheckDiskSpace( /*[in] */ const MPC::wstring& szFile ,
|
|
/*[in] */ DWORD dwLowLevel ,
|
|
/*[out]*/ bool& fEnough )
|
|
{
|
|
__ULT_FUNC_ENTRY("Util_CheckDiskSpace");
|
|
|
|
HRESULT hr;
|
|
ULARGE_INTEGER liFree;
|
|
ULARGE_INTEGER liTotal;
|
|
|
|
|
|
fEnough = false;
|
|
|
|
|
|
__MPC_EXIT_IF_METHOD_FAILS(hr, MPC::GetDiskSpace( szFile, liFree, liTotal ));
|
|
|
|
if(liFree.HighPart > 0 ||
|
|
liFree.LowPart > dwLowLevel )
|
|
{
|
|
fEnough = true;
|
|
}
|
|
|
|
hr = S_OK;
|
|
|
|
|
|
__ULT_FUNC_CLEANUP;
|
|
|
|
__ULT_FUNC_EXIT(hr);
|
|
}
|
|
|
|
|
|
|