#pragma once
#include "workspaceaccess.h"
#include "WorkspaceListAccess.h"


class CServerStatusLog :
	public CWorkspaceAccess
{
public:
	//	コンストラクタをまとめて定義
	DEFINE_COMMON_CONSTRUCTOR(CServerStatusLog);

	///////////////////////////////////////////////////////////////////////////////////////////////////
	//	プロパティ
	///////////////////////////////////////////////////////////////////////////////////////////////////
	//!	ステータス
	DEFINE_PROPERTY_METHOD_STR(StatusInfo, "StatusInfo", "");

	//!	発生時刻
	DEFINE_PROPERTY_METHOD_STR(Time, "Time", "");

	//!	コード
	DEFINE_PROPERTY_METHOD_INT(StatusCode, "StatusCode", 0);

	//!	表示時間
	DEFINE_PROPERTY_METHOD_INT(AutoOffTime, "AutoOffTime", -1);
};
typedef CWorkspaceTypedListAccess<CServerStatusLog, CWTLAName<'L', 'o', 'g'>> CServerStatusLogList;


class CServerStatus :
	public CWorkspaceAccess
{
public:
	//	コンストラクタをまとめて定義
	DEFINE_COMMON_CONSTRUCTOR(CServerStatus);

	///////////////////////////////////////////////////////////////////////////////////////////////////
	//	プロパティ
	///////////////////////////////////////////////////////////////////////////////////////////////////
	//!	サーババージョン
	DEFINE_PROPERTY_METHOD_STR(ServerVersion, "ServerVersion", SERVER_VERSION);

	//!	サーババージョン文字列
	DEFINE_PROPERTY_METHOD_STR(ServerVersionString, "ServerVersionString", SERVER_VERSION_STRING);

	//!	サーバールート
	DEFINE_PROPERTY_METHOD_STR(ServerRoot, "ServerRoot", "");

	///////////////////////////////////////////////////////////////////////////////////////////////////
	//	下位アクセス
	///////////////////////////////////////////////////////////////////////////////////////////////////
	//!	ステータスログを取得
	CServerStatusLogList GetStatusLog(CString callerName) { return GetAccess("StatusLog::" + callerName); };
};
