#pragma once
#include "normalresponse.h"
#include "Buffer.h"
#include "subprocess.h"

class CCGIResponse :
	public CNormalResponse
{
public:
	CCGIResponse(CServer *server,CWorkspaceAccess context,CRequest request,CAlias alias,CConnectionInterrupt interrupt);
	virtual ~CCGIResponse(void);

	virtual void PreCreateResponse();				//	1:レスポンス生成準備		
	virtual void SetNextData(CBuffer &data);		//	2:受信データの設定(繰り返し)
	virtual void CreateResponse();					//	3:レスポンスの生成
	virtual __int64 GetResponseSize();				//	4:レスポンスサイズの取得
//	virtual CWorkspaceAccess GetResponseInfo();		//	5:レスポンス情報を取得
	virtual int GetNextData(CBuffer &data);			//	6:レスポンスの取得


protected:
	CSubProcess				m_subProcess;
	int						m_stdOutStartIndex;
	CConnectionInterrupt	m_interrupt;
	CString					m_target;

	CString	GetCommandString();
	CString GetHeader();
	void ParseHeader(CString header,CWorkspaceAccess option);
	void ThrowCGIError(CString detail);
};
