Blame iis/mymodulefactory.h

Packit Service 384592
/*
Packit Service 384592
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
Packit Service 384592
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
Packit Service 384592
*
Packit Service 384592
* You may not use this file except in compliance with
Packit Service 384592
* the License.  You may obtain a copy of the License at
Packit Service 384592
*
Packit Service 384592
*     http://www.apache.org/licenses/LICENSE-2.0
Packit Service 384592
*
Packit Service 384592
* If any of the files related to licensing are missing or if you have any
Packit Service 384592
* other questions related to licensing please contact Trustwave Holdings, Inc.
Packit Service 384592
* directly using the email address security@modsecurity.org.
Packit Service 384592
*/
Packit Service 384592

Packit Service 384592
#ifndef __MODULE_FACTORY_H__
Packit Service 384592
#define __MODULE_FACTORY_H__
Packit Service 384592

Packit Service 384592
// Factory class for CMyHttpModule.
Packit Service 384592
// This class is responsible for creating instances
Packit Service 384592
// of CMyHttpModule for each request.
Packit Service 384592
class CMyHttpModuleFactory : public IHttpModuleFactory
Packit Service 384592
{
Packit Service 384592
        CMyHttpModule *				m_pModule;
Packit Service 384592
		CRITICAL_SECTION			m_csLock;
Packit Service 384592

Packit Service 384592
public:
Packit Service 384592
	CMyHttpModuleFactory()
Packit Service 384592
	{
Packit Service 384592
		m_pModule = NULL;
Packit Service 384592

Packit Service 384592
		InitializeCriticalSection(&m_csLock);
Packit Service 384592
	}
Packit Service 384592

Packit Service 384592
	virtual
Packit Service 384592
    HRESULT
Packit Service 384592
    GetHttpModule(
Packit Service 384592
        OUT CHttpModule            **ppModule, 
Packit Service 384592
        IN IModuleAllocator        *
Packit Service 384592
    )
Packit Service 384592
    {
Packit Service 384592
        HRESULT                    hr = S_OK;
Packit Service 384592

Packit Service 384592
	    if ( ppModule == NULL )
Packit Service 384592
        {
Packit Service 384592
            hr = HRESULT_FROM_WIN32( ERROR_INVALID_PARAMETER );
Packit Service 384592
            goto Finished;
Packit Service 384592
        }
Packit Service 384592

Packit Service 384592
		EnterCriticalSection(&m_csLock);
Packit Service 384592

Packit Service 384592
		if(m_pModule == NULL)
Packit Service 384592
		{
Packit Service 384592
			m_pModule = new CMyHttpModule();
Packit Service 384592

Packit Service 384592
			if ( m_pModule == NULL )
Packit Service 384592
			{
Packit Service 384592
				hr = HRESULT_FROM_WIN32( ERROR_NOT_ENOUGH_MEMORY );
Packit Service 384592
				goto Finished;
Packit Service 384592
			}
Packit Service 384592
		}
Packit Service 384592

Packit Service 384592
		LeaveCriticalSection(&m_csLock);
Packit Service 384592

Packit Service 384592
        *ppModule = m_pModule;
Packit Service 384592

Packit Service 384592
	Finished:
Packit Service 384592

Packit Service 384592
        return hr;
Packit Service 384592
    }
Packit Service 384592

Packit Service 384592
    virtual 
Packit Service 384592
    void
Packit Service 384592
    Terminate()
Packit Service 384592
    {
Packit Service 384592
        if ( m_pModule != NULL )
Packit Service 384592
        {
Packit Service 384592
			//m_pModule->WriteEventViewerLog("Module terminated.");
Packit Service 384592
            delete m_pModule;
Packit Service 384592
            m_pModule = NULL;
Packit Service 384592
        }
Packit Service 384592

Packit Service 384592
        delete this;
Packit Service 384592
    }
Packit Service 384592
};
Packit Service 384592

Packit Service 384592
#endif