#pragma once

enum FUNCTION_ID
{
	FUNCTION_UNKNOWN					= 0,

	//	レスポンスモジュール用
	FUNCTION_RESPONSE_START				= 1000,
	FUNCTION_RESPONSE_STOP				= 1010,

	FUNCTION_RESPONSE_SET_REQUEST		= 1100,
	FUNCTION_RESPONSE_SET_REQUEST_BODY	= 1110,
	FUNCTION_RESPONSE_END_REQUEST		= 1120,

	FUNCTION_RESPONSE_BUILD_RESPONSE	= 1200,

	FUNCTION_RESPONSE_GET_RESPONSE		= 1300,
	FUNCTION_RESPONSE_GET_RESPONSE_BODY	= 1310,
	FUNCTION_RESPONSE_END_RESPONSE		= 1320,

	//	フィルタモジュール用
	FUNCTION_FILTER_START				= 2000,
	FUNCTION_FILTER_STOP				= 2010,

	FUNCTION_FILTER_REQUEST_HEADER		= 2100,
	FUNCTION_FILTER_REQUEST_BODY		= 2110,
	FUNCTION_FILTER_END_REQUEST			= 2120,

	FUNCTION_FILTER_BUILD_RESPONSE		= 2200,

	FUNCTION_FILTER_RESPONSE_HEADER		= 2300,
	FUNCTION_FILTER_RESPONSE_BODY		= 2310,
	FUNCTION_FILTER_END_RESPONSE		= 2320,

	FUNCTION_FILTER_SERVER_RESPONSE		= 2400,

	//	ユーザー定義用
	FUNCTION_USER_DEFINE_START			= 1000000,
};


/*!
	接続スレッドの状態を取得する
*/
class IConnectionThreadStatus
{
public:
	//!	中断イベント取得
	virtual HANDLE GetBreakEvent() = 0;

	//!	中断?
	virtual int GetBreak() = 0;

	//!	処理中のフィルタ情報を設定する
	virtual void SetCurrentModuleFunction(LPCTSTR moduleName, int functionID) = 0;

	//!	接続IDを取得する
	virtual DWORD GetConnectionID() = 0;
};
//!	ポインタ型
typedef IConnectionThreadStatus* IConnectionThreadStatusPtr;
