#pragma once
#include "iconnectiontool.h"

class CIConnectionToolImplement :
	public IConnectionTool
{
public:
	//////////////////////////////////////////////////////////////////////////////////////////////
	//	初期化
	//////////////////////////////////////////////////////////////////////////////////////////////
	//!	初期化
	void Init(IServerToolPtr serverTool, IConnectionThreadStatusPtr threadStatus, IConnectionControlPtr connectionControl, CContext &context)
	{
		m_serverTool = serverTool;
		m_threadStatus = threadStatus;
		m_connectionControl = connectionControl;
		m_context = context;
	}

	//!	インタフェース取得
	virtual IConnectionToolPtr GetIConnectionTool()  { return this; };

protected:
	//////////////////////////////////////////////////////////////////////////////////////////////
	//	IConnectionTool
	//////////////////////////////////////////////////////////////////////////////////////////////
	//!	サーバツール取得
	virtual IServerToolPtr GetIServerTool() { return m_serverTool; };

	//!	スレッドステータス取得
	virtual IConnectionThreadStatusPtr GetIConnectionThreadStatus() { return m_threadStatus; };

	//!	接続取得
	virtual IConnectionControlPtr GetIConnectionControl() { return m_connectionControl; };
		
	//!	コンテキスト取得
	virtual void GetContxet(IWorkspaceAccessRefPtr context) { m_context.FillIWorkspaceAccessRef(context); };

protected:
	//////////////////////////////////////////////////////////////////////////////////////////////
	//	メンバ変数
	//////////////////////////////////////////////////////////////////////////////////////////////
	//!	サーバツール
	IServerToolPtr				m_serverTool;

	//!	スレッドステータス
	IConnectionThreadStatusPtr	m_threadStatus;

	//!	接続コントロール
	IConnectionControlPtr		m_connectionControl;

	//!	コンテキスト
	CContext					m_context;
};