#include "StdAfx.h"
#include "FilterManager.h"
/*
#include "ServerInfoFilter.h"
#include "PathFilter.h"
#include "IndexFilter.h"
#include "AccessLogFilter.h"
#include "KeepAliveFilter.h"
*/
CFilterManager::CFilterManager(void)
{
}

CFilterManager::~CFilterManager(void)
{
}

//////////////////////////////////////////////////////////////////////////////////////////////
//	初期化・終了
//////////////////////////////////////////////////////////////////////////////////////////////
/*!
	開始
*/
void CFilterManager::Start(IServerToolIIPtr serverTool)
{
	//	初期化済み？
	if(m_init)
		return;
	m_init = TRUE;

	m_serverTool = serverTool;
/*
	//	サーバ情報
	m_filterFactorys.Add(IFilterFactoryRet(new CServerInfoFilter, TRUE));

	//	パス情報
	m_filterFactorys.Add(IFilterFactoryRet(new CPathFilter, TRUE));

	//	KeepAlive情報
	m_filterFactorys.Add(IFilterFactoryRet(new CKeepAliveFilter, TRUE));

	//	インデックス
	m_filterFactorys.Add(IFilterFactoryRet(new CIndexFilter, TRUE));

	//	アクセスログ
	m_filterFactorys.Add(IFilterFactoryRet(new CAccessLogFilter, TRUE));
*/
	//	初期化
	for(int i=0;i<m_filterFactorys.GetSize();i++)
		m_filterFactorys[i]->StartFactory(m_serverTool->GetIServerTool());
}

/*!
	停止
*/
void CFilterManager::Stop()
{
	//	初期化チェック
	if(!m_init)
		return;
	m_init = FALSE;

	//	停止
	for(int i=0;i<m_filterFactorys.GetSize();i++)
		m_filterFactorys[i]->StopFactory();

	m_filterFactorys.RemoveAll();
}


/*!
	フィルタ配列取得
*/
void CFilterManager::GetFilterArray(CFilterArray &filters)
{
	SCOPE_LOCK();
	filters.RemoveAll();

	for(int i=0;i<m_filterFactorys.GetSize();i++)
		filters.Add(m_filterFactorys[i]->GetFilter());
}
