#pragma once
#include "CGIManager.h"


/*!
	通常のCGI
*/
class CNormalCGIProcess : public ICGIInterface
{
public:
	CNormalCGIProcess(void);
	virtual ~CNormalCGIProcess(void);

	///////////////////////////////////////////////////////////////////////////////
	//	インタフェース
	///////////////////////////////////////////////////////////////////////////////
	//!	1:CGI実行開始(throw CCGIProcessException)
	virtual void StartCGIProcess(CKeyDataArray &envs);

	//!	2:リクエストボディを書き込み(throw CCGIProcessException)
	virtual void WriteRequestBody(CBuffer &data, CInterruptEvents &breakEvents);

	//!	3:レスポンスの生成
	virtual void WaitResponse(CInterruptEvents &breakEvents);

	//!	4:レスポンスヘッダ取得(throw CCGIProcessException)
	virtual void ReadResponseHeader(CKeyDataArray &resHeaders, CInterruptEvents &breakEvents);

	//!	5:レスポンスボディを読み出し(throw CCGIProcessException)
	virtual void ReadResponseBody(CBuffer &data, CInterruptEvents &breakEvents);

	//!	6:CGI実行終了
	virtual void CleanupCGIProcess();
};


