/****************************************************************************** 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); }