#pragma once

#include "..\GDDX_Isag_Sms\ISAGSMSSmsNotificationBindingService.h"



namespace ISAGSMS {

class SOAP_CMAC  IsagSmsServiceEx :
	public SmsNotificationBindingService
{

public:
typedef struct _SQL_Pool
{
	BOOL            bUse;
	long            lRandID;
	CAdoConnection  adoConnection;
	//CComPtr<IXMLDOMDocument2> spDoc;
	DWORD           dwBeginUse;
	DWORD           dwEndUse;
}SQL_Pool;

	HANDLE m_hThread;
	BOOL   m_bStart;
	BOOL   m_bCopy;  //ÊÇ·ñ¸´ÖƵÄÒ»²¿·Ö

	LPVOID  m_pParam;
	CString m_strSQL_IP;
	CString m_strSQL_User;
	CString m_strSQL_Passwd;
	CString m_strSQL_DB;
	CString m_strSQL_Provider;

	SQL_Pool * m_pSQL;
	long       m_lSQLCount;
	CRITICAL_SECTION * m_Critical;


public:
	IsagSmsServiceEx(void);
	~IsagSmsServiceEx(void);

	long Web_Exit();
	void SetSQLParam(LPVOID pParam,CString strIP,CString strUser,CString strPasswd,CString strDB, CString strProvider);
	BOOL ConnectSQLServer(SQL_Pool * pSql);
	SQL_Pool * GetBankSQL();
	static DWORD WINAPI Process_Req(LPVOID lpParam);
	static UINT Process_AcceptT(LPVOID sParam);
	long Web_Init(TCHAR * strIP,long lPort , long lSQLConnect=10);
	virtual	IsagSmsServiceEx *copy2();

	virtual	int notifySmsReception(ns2__notifySmsReception *ns2__notifySmsReception_, ns2__notifySmsReceptionResponse *ns2__notifySmsReceptionResponse_);
	virtual	int notifySmsDeliveryReceipt(ns2__notifySmsDeliveryReceipt *ns2__notifySmsDeliveryReceipt_, ns2__notifySmsDeliveryReceiptResponse *ns2__notifySmsDeliveryReceiptResponse_);


	static int Web_Get(struct soap* soap);
};

};