// ServerControl.cpp : CServerControl の実装

#include "stdafx.h"
#include "ServerControl.h"


// CServerControl

//	サーバの起動
STDMETHODIMP CServerControl::StartServer(SHORT* status)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	*status = GET_APP()->StartServer();

	return S_OK;
}

//	サーバの停止
STDMETHODIMP CServerControl::StopServer(void)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	GET_APP()->StopServer();

	return S_OK;
}


//	エラー情報の取得
STDMETHODIMP CServerControl::GetServerErrorString(BSTR* str)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	_bstr_t	info = GET_APP()->GetServerErrorInfo();
	*str = info.copy();

	return S_OK;
}

//	サーバが実行中か取得する
STDMETHODIMP CServerControl::IsRunning(SHORT* ret)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	*ret = GET_APP()->ServerRunning();

	return S_OK;
}

//	サーバがサービスかどうか取得する
STDMETHODIMP CServerControl::IsService(SHORT* ret)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	*ret = GET_APP()->IsService();

	return S_OK;
}

//	サーバーの情報を取得します
STDMETHODIMP CServerControl::GetServerInfo(BSTR* ret)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	_bstr_t	info = GET_APP()->GetServerInfoString();
	*ret = info.copy();

	return S_OK;
}

//	サーバーの設定を取得します
STDMETHODIMP CServerControl::GetServerSetting(BSTR* ret)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	_bstr_t	info = GET_APP()->GetServerSettingString();
	*ret = info.copy();

	return S_OK;
}

//	サーバーの環境領域を取得します
STDMETHODIMP CServerControl::GetServerContext(BSTR* ret)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	_bstr_t	info = GET_APP()->GetServerContextString();
	*ret = info.copy();

	return S_OK;
}

//	サーバ･ルートを取得します
STDMETHODIMP CServerControl::GetServerRoot(BSTR* retpath)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	_bstr_t	info = GET_APP()->GetAppPath();
	*retpath = info.copy();

	return S_OK;
}


//	接続数取得
STDMETHODIMP CServerControl::IsActive(SHORT* ret)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());

	*ret = GET_APP()->GetConnectCount();

	return S_OK;
}
