|
|
/******************************************************************************
Copyright (c) 1999 Microsoft Corporation
Module Name: ISAPIprovider.cpp
Abstract: This file contains the implementation of the CISAPIprovider class, the support class for accessing and modifying the configuration of the ISAPI extension used by the Upload Library.
Revision History: Davide Massarenti (Dmassare) 04/28/99 created
******************************************************************************/
#include "stdafx.h"
static const WCHAR text_FINAL_DESTINATIONS[] = L"FINAL_DESTINATIONS"; static const WCHAR text_MAX_JOBS_PER_DAY [] = L"MAX_JOBS_PER_DAY" ; static const WCHAR text_MAX_BYTES_PER_DAY [] = L"MAX_BYTES_PER_DAY" ; static const WCHAR text_MAX_JOB_SIZE [] = L"MAX_JOB_SIZE" ; static const WCHAR text_AUTHENTICATED [] = L"AUTHENTICATED" ; static const WCHAR text_PROCESSING_MODE [] = L"PROCESSING_MODE" ; static const WCHAR text_LOGON_URL [] = L"LOGON_URL" ; static const WCHAR text_PROVIDER_CLASS [] = L"PROVIDER_CLASS" ;
CISAPIprovider::CISAPIprovider() { __ULT_FUNC_ENTRY( "CISAPIprovider::CISAPIprovider" );
// MPC::wstring m_szName;
//
// PathList m_lstFinalDestinations;
//
m_dwMaxJobsPerDay = 100; // DWORD m_dwMaxJobsPerDay;
m_dwMaxBytesPerDay = 10*1024*1024; // DWORD m_dwMaxBytesPerDay;
m_dwMaxJobSize = 2*1024*1024; // DWORD m_dwMaxJobSize;
//
m_fAuthenticated = FALSE; // BOOL m_fAuthenticated;
m_fProcessingMode = 0; // DWORD m_fProcessingMode;
//
// MPC::wstring m_szLogonURL;
// MPC::wstring m_szProviderGUID;
}
CISAPIprovider::CISAPIprovider( /*[in]*/ MPC::wstring szName ) { __ULT_FUNC_ENTRY( "CISAPIprovider::CISAPIprovider" );
m_szName = szName; // MPC::wstring m_szName;
//
// PathList m_lstFinalDestinations;
//
m_dwMaxJobsPerDay = 100; // DWORD m_dwMaxJobsPerDay;
m_dwMaxBytesPerDay = 10*1024*1024; // DWORD m_dwMaxBytesPerDay;
m_dwMaxJobSize = 2*1024*1024; // DWORD m_dwMaxJobSize;
//
m_fAuthenticated = FALSE; // BOOL m_fAuthenticated;
m_fProcessingMode = 0; // DWORD m_fProcessingMode;
//
// MPC::wstring m_szLogonURL;
// MPC::wstring m_szProviderGUID;
}
bool CISAPIprovider::operator==( /*[in]*/ const MPC::wstring& rhs ) { __ULT_FUNC_ENTRY("CISAPIprovider::operator==");
MPC::NocaseCompare cmp; bool fRes;
fRes = cmp( m_szName, rhs );
__ULT_FUNC_EXIT(fRes); }
/////////////////////////////////////////////////////////////////////////////
HRESULT CISAPIprovider::Load( /*[in]*/ MPC::RegKey& rkBase ) { __ULT_FUNC_ENTRY( "CISAPIprovider::Load" );
HRESULT hr; MPC::RegKey rkRoot; CComVariant vValue; bool fFound;
m_lstFinalDestinations.clear();
//
// If the registry key doesn't exist, simply exit.
//
__MPC_EXIT_IF_METHOD_FAILS(hr, rkBase.SubKey( m_szName.c_str(), rkRoot )); __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.Exists( fFound )); if(fFound == false) { __MPC_SET_ERROR_AND_EXIT(hr, S_OK); }
__MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.get_Value( vValue, fFound, text_MAX_JOBS_PER_DAY )); if(fFound && vValue.vt == VT_I4) m_dwMaxJobsPerDay = vValue.lVal;
__MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.get_Value( vValue, fFound, text_MAX_BYTES_PER_DAY )); if(fFound && vValue.vt == VT_I4) m_dwMaxBytesPerDay = vValue.lVal;
__MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.get_Value( vValue, fFound, text_MAX_JOB_SIZE )); if(fFound && vValue.vt == VT_I4) m_dwMaxJobSize = vValue.lVal;
__MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.get_Value( vValue, fFound, text_AUTHENTICATED )); if(fFound && vValue.vt == VT_I4) m_fAuthenticated = vValue.lVal;
__MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.get_Value( vValue, fFound, text_PROCESSING_MODE )); if(fFound && vValue.vt == VT_I4) m_fProcessingMode = vValue.lVal;
__MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.get_Value( vValue, fFound, text_LOGON_URL )); if(fFound && vValue.vt == VT_BSTR) m_szLogonURL = SAFEBSTR( vValue.bstrVal );
__MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.get_Value( vValue, fFound, text_PROVIDER_CLASS )); if(fFound && vValue.vt == VT_BSTR) m_szProviderGUID = SAFEBSTR( vValue.bstrVal );
__MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.get_Value( vValue, fFound, text_FINAL_DESTINATIONS )); if(fFound && vValue.vt == VT_BSTR) { //
// Split the registry value, a semicolon-separated list of paths, into individual paths.
//
MPC::wstring szFinalDestinations = SAFEBSTR( vValue.bstrVal ); MPC::wstring::size_type iPos = 0; MPC::wstring::size_type iEnd;
while(1) { iEnd = szFinalDestinations.find( L";", iPos );
if(iEnd == MPC::string::npos) // Last component.
{ m_lstFinalDestinations.push_back( MPC::wstring( &szFinalDestinations[iPos] ) );
break; } else { m_lstFinalDestinations.push_back( MPC::wstring( &szFinalDestinations[iPos], &szFinalDestinations[iEnd] ) );
iPos = iEnd+1; } } }
hr = S_OK;
__ULT_FUNC_CLEANUP;
__ULT_FUNC_EXIT(hr); }
HRESULT CISAPIprovider::Save( /*[in]*/ MPC::RegKey& rkBase ) { __ULT_FUNC_ENTRY( "CISAPIProvider::Save" );
HRESULT hr; MPC::RegKey rkRoot; CComVariant vValue;
__MPC_EXIT_IF_METHOD_FAILS(hr, rkBase.SubKey( m_szName.c_str(), rkRoot )); __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.Create( ));
vValue = (long)m_dwMaxJobsPerDay; __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.put_Value( vValue, text_MAX_JOBS_PER_DAY ));
vValue = (long)m_dwMaxBytesPerDay; __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.put_Value( vValue, text_MAX_BYTES_PER_DAY ));
vValue = (long)m_dwMaxJobSize; __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.put_Value( vValue, text_MAX_JOB_SIZE ));
vValue = (long)m_fAuthenticated; __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.put_Value( vValue, text_AUTHENTICATED ));
vValue = (long)m_fProcessingMode; __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.put_Value( vValue, text_PROCESSING_MODE ));
vValue = m_szLogonURL.c_str(); __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.put_Value( vValue, text_LOGON_URL ));
vValue = m_szProviderGUID.c_str(); __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.put_Value( vValue, text_PROVIDER_CLASS ));
{ MPC::wstring szFinalDestinations; PathIter it = m_lstFinalDestinations.begin();
while(it != m_lstFinalDestinations.end()) { szFinalDestinations.append( *it++ );
if(it != m_lstFinalDestinations.end()) szFinalDestinations.append( L";" ); }
if(szFinalDestinations.length() != 0) { vValue = szFinalDestinations.c_str(); __MPC_EXIT_IF_METHOD_FAILS(hr, rkRoot.put_Value( vValue, text_FINAL_DESTINATIONS )); } }
hr = S_OK;
__ULT_FUNC_CLEANUP;
__ULT_FUNC_EXIT(hr); }
/////////////////////////////////////////////////////////////////////////////
HRESULT CISAPIprovider::GetLocations( /*[out]*/ PathIter& itBegin , /*[out]*/ PathIter& itEnd ) { __ULT_FUNC_ENTRY( "CISAPIprovider::GetLocations" );
HRESULT hr;
itBegin = m_lstFinalDestinations.begin(); itEnd = m_lstFinalDestinations.end (); hr = S_OK;
__ULT_FUNC_EXIT(hr); }
HRESULT CISAPIprovider::NewLocation( /*[out]*/ PathIter& itNew , /*[in] */ const MPC::wstring& szPath ) { __ULT_FUNC_ENTRY( "CISAPIprovider::NewLocation" );
HRESULT hr; bool fFound;
__MPC_EXIT_IF_METHOD_FAILS(hr, GetLocation( itNew, fFound, szPath )); if(fFound == false) { itNew = m_lstFinalDestinations.insert( m_lstFinalDestinations.end(), szPath ); }
hr = S_OK;
__ULT_FUNC_CLEANUP;
__ULT_FUNC_EXIT(hr); }
HRESULT CISAPIprovider::GetLocation( /*[out]*/ PathIter& itOld , /*[out]*/ bool& fFound , /*[in] */ const MPC::wstring& szPath ) { __ULT_FUNC_ENTRY( "CISAPIprovider::GetLocation" );
HRESULT hr;
itOld = std::find( m_lstFinalDestinations.begin(), m_lstFinalDestinations.end(), szPath ); if(itOld == m_lstFinalDestinations.end()) { fFound = false; } else { fFound = true; }
hr = S_OK;
__ULT_FUNC_EXIT(hr); }
HRESULT CISAPIprovider::DelLocation( /*[in]*/ PathIter& itOld ) { __ULT_FUNC_ENTRY( "CISAPIprovider::DelLocation" );
HRESULT hr;
m_lstFinalDestinations.erase( itOld );
hr = S_OK;
__ULT_FUNC_EXIT(hr); }
/////////////////////////////////////////////////////////////////////////////
HRESULT CISAPIprovider::get_Name( /*[out]*/ MPC::wstring& szName ) { szName = m_szName;
return S_OK; }
HRESULT CISAPIprovider::get_MaxJobsPerDay( /*[out]*/ DWORD& dwMaxJobsPerDay ) { dwMaxJobsPerDay = m_dwMaxJobsPerDay;
return S_OK; }
HRESULT CISAPIprovider::get_MaxBytesPerDay( /*[out]*/ DWORD& dwMaxBytesPerDay ) { dwMaxBytesPerDay = m_dwMaxBytesPerDay;
return S_OK; }
HRESULT CISAPIprovider::get_MaxJobSize( /*[out]*/ DWORD& dwMaxJobSize ) { dwMaxJobSize = m_dwMaxJobSize;
return S_OK; }
HRESULT CISAPIprovider::get_Authenticated( /*[out]*/ BOOL& fAuthenticated ) { fAuthenticated = m_fAuthenticated;
return S_OK; }
HRESULT CISAPIprovider::get_ProcessingMode( /*[out]*/ DWORD& fProcessingMode ) { fProcessingMode = m_fProcessingMode;
return S_OK; }
HRESULT CISAPIprovider::get_LogonURL( /*[out]*/ MPC::wstring& szLogonURL ) { szLogonURL = m_szLogonURL;
return S_OK; }
HRESULT CISAPIprovider::get_ProviderGUID( /*[out]*/ MPC::wstring& szProviderGUID ) { szProviderGUID = m_szProviderGUID;
return S_OK; }
////////////////////////////////////////
HRESULT CISAPIprovider::put_MaxJobsPerDay( /*[in]*/ DWORD dwMaxJobsPerDay ) { m_dwMaxJobsPerDay = dwMaxJobsPerDay;
return S_OK; }
HRESULT CISAPIprovider::put_MaxBytesPerDay( /*[in]*/ DWORD dwMaxBytesPerDay ) { m_dwMaxBytesPerDay = dwMaxBytesPerDay;
return S_OK; }
HRESULT CISAPIprovider::put_MaxJobSize( /*[in]*/ DWORD dwMaxJobSize ) { m_dwMaxJobSize = dwMaxJobSize;
return S_OK; }
HRESULT CISAPIprovider::put_Authenticated( /*[in]*/ BOOL fAuthenticated ) { m_fAuthenticated = fAuthenticated;
return S_OK; }
HRESULT CISAPIprovider::put_ProcessingMode( /*[in]*/ DWORD fProcessingMode ) { m_fProcessingMode = fProcessingMode;
return S_OK; }
HRESULT CISAPIprovider::put_LogonURL( /*[in]*/ const MPC::wstring& szLogonURL ) { m_szLogonURL = szLogonURL;
return S_OK; }
HRESULT CISAPIprovider::put_ProviderGUID( /*[in]*/ const MPC::wstring& szProviderGUID ) { m_szProviderGUID = szProviderGUID;
return S_OK; }
|