/*!
	サーバレスポンス生成クラス

	このクラスは特別扱いで、IResponseではなく、独自のメソッドを持つ
*/

#pragma once
#include "IServerTool.h"
#include "Context.h"
#include "IConnectionControl.h"
#include "Settings.h"


class CServerResponse
{
public:
	CServerResponse(void);
	virtual ~CServerResponse(void);

	//!	レスポンス生成
	void CreateServerResponse(	IServerToolIIPtr				serverTool,
								IConnectionThreadStatusIIPtr	threadStatus,
								IConnectionControlIIPtr			connectionControl,
								CContext						context,
								CServerResponseException		&serverResponseException);


	//!	レスポンス取得
	void GetResponseBody(CBinaryData &body)
	{
		body.Empty();
		body.AppendString(m_responseBody);
	};


protected:
	////////////////////////////////////////////////////////////////////////////////////////////
	//	ツール
	////////////////////////////////////////////////////////////////////////////////////////////
	//!	html生成
	void CreateResponseBody(IServerToolTempIIPtr serverTool, CServerResponseSetting &setting, CServerResponseException &serverResponseException, CContext &context);

	////////////////////////////////////////////////////////////////////////////////////////////
	//	メンバ変数
	////////////////////////////////////////////////////////////////////////////////////////////
	//!	ボディ
	CString	m_responseBody;
};
