#include "StdAfx.h"
#include "ServerInfoManager.h"
#include "Dir.h"
#include "IPAddress.h"

CServerInfoManager::CServerInfoManager(void)
{
	m_serverInfo = m_infoRoot.GetAccess("ServerInfo");
}

CServerInfoManager::~CServerInfoManager(void)
{
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//	操作
///////////////////////////////////////////////////////////////////////////////////////////////////
/*!
	開始
*/
void CServerInfoManager::Start(CIServerToolWrap serverTool)
{
	if(m_init)
		return;
	m_init = 1;

	//	コピー、初期化
	m_serverTool = serverTool;

	//	設定取得
	m_setting = m_serverTool.GetManagerSetting(m_setting.GetSettingName());

	//	サーバ名
	m_serverInfo.SetServerName(m_setting.GetServerName(SERVER_NAME));

	//	バージョン
	m_serverInfo.SetServerVersion(m_setting.GetServerVersion(SERVER_VERSION));

	//	サーバシグニチャ
	m_serverInfo.SetServerSignature(m_setting.GetServerSignature(SERVER_VERSION_STRING));

	//	サーバルート
	m_serverInfo.SetServerRoot(CPathTools::GetAppPath());

	//	サーバアドレス
	CIPAddress	localhost = CIPAddress::GetLocalhost();
	m_serverInfo.SetServerAddress((CString)localhost);

	//	サーバ名
	m_serverInfo.SetServerHostName(localhost.GetHostName());

	//	読み込み専用
	m_infoRoot.SetReadOnly(TRUE);

	//	インタフェース初期化
	m_managerInterface.Init((IServerInfoManagerPtr)this, CIServerInfoManagerWrap::GetInterfaceVersion());

	//	インターフェース登録
	m_serverTool.RegisterManagerInterface(CIServerInfoManagerWrap::GetInterfaceName(), m_managerInterface.GetIManagerInterface());
}

/*!
	停止
*/
void CServerInfoManager::Stop()
{
	if(!m_init)
		return;
	m_init = 0;

	//	インターフェース登録解除
	m_serverTool.UnRegisterManagerInterface(CIServerInfoManagerWrap::GetInterfaceName(), m_managerInterface.GetIManagerInterface());
}

