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

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

#pragma once
#include "ServerToolWrap.h"
#include "Context.h"
#include "IConnectionControl.h"
#include "IConnectionThreadStatus.h"
#include "BinaryData.h"
#include "Settings.h"



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

	//!	レスポンス生成
	void CreateServerResponse(	CIServerToolWrap						serverTool,
								IConnectionThreadStatusPtr	threadStatus,
								IConnectionControlPtr			connectionControl,
								CContext						context,
								CServerResponseException		&serverResponseException);


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


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

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