⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dominohandler.h

📁 基于domino系统邮件数据库编写的邮件助手程序
💻 H
字号:
// DominoHandler.h: interface for the CDominoHandler class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DOMINOHANDLER_H__919BC347_AFFB_4CF4_A2AE_2A879EE2D782__INCLUDED_)
#define AFX_DOMINOHANDLER_H__919BC347_AFFB_4CF4_A2AE_2A879EE2D782__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <afxinet.h>
#include <comutil.h>
#include "Log.h"
#include "URLEncode.h"

/////////////////////////////////////////////////////////////////////
//	CInternetSession
/////////////////////////////////////////////////////////////////////
class CDInternetSession : public CInternetSession
{
public:
	CDInternetSession(LPCTSTR pszAppName, int nMethod);

	virtual void OnStatusCallback(DWORD dwContext, DWORD dwInternetStatus,
		LPVOID lpvStatusInfomration, DWORD dwStatusInformationLen);
};

/////////////////////////////////////////////////////////////////////
//	CHttpRequestThread
/////////////////////////////////////////////////////////////////////

//连接服务器的http请求线程的参数
typedef struct {
	CHttpConnection*	pHttpConnection;
	int					nHttpVerb;
	CString				sPostData;
	CString				sUrl;
	bool				out_bEnd;	//是否已完成
	int					out_nRet;	//0表示连接失败 = http status code
	CString				out_sRet;	
	bool				out_bErr;	//是否发生错误,错误的话,out_sRet为错误内容
} HTTP_REQ_THREAD_PARM;

class CHttpRequestThread: public CWinThread
{
private:
	virtual ~CHttpRequestThread();
	virtual BOOL InitInstance();

	HTTP_REQ_THREAD_PARM* m_pParm;					//请求参数
	void sendRequest();								//提交请求
public:
	DECLARE_DYNCREATE(CHttpRequestThread)
	void SetParm( HTTP_REQ_THREAD_PARM* pParm );	//设置请求参数
};


/////////////////////////////////////////////////////////////////////
//	CDominoHandler
/////////////////////////////////////////////////////////////////////

#define DOMINO_SERVICE_AGENT

//Domino服务器端Servlet的Class路径名 或 代理名
const CString DOMINO_SERVLET_PATH = "servlet/DominoMinder";
const CString DOMINO_AGENT_PATH = "doDominoMinder.nsf/MinderService?OpenAgent";

//最多服务数
const int     MAX_DOMINO_SERVICE  = 50;

/////////////////////////////////////////////////////////////////////
class CDominoHandler  
{
public:
	CDominoHandler( CString strVersion, CString strServerName, CString strUserName, CString strPassword  );
	~CDominoHandler();

	//int  Connect();
	//bool IsConnected();
	CString GetServerName();

	//添加服务
	bool AddService( CString strServiceName, bool bEnabled );
	CString* GetServiceEnabled();
	CString* GetServiceDisabled();
	bool ClearService();

	void Logout();
	bool Login( CString strUserName="", CString strPassword="" );

	//连接服务器获取服务配置
	CString GetServiceCfg( bool bForceLogin=false );
	//获得服务总数
	int     GetServiceCnt();
	//连接到服务器,请求服务结果,并解析后返回(m_rgstrServiceResultMsg第一项)
	CString GetServiceMsg( bool bForceLogin=false);
	//返回简版消息(m_rgstrServiceResultMsg第二项)
	CString GetServiceMsgSimple();
	
	bool IsRequestFinished();	//发送请求后,用来判断是否请求已完成
	bool IsRequestSuccessed();	//发送请求后,用来判断是否请求成功
	bool IsSessionTimeout();	//发送请求失败的话,再判断是否是因为连接已超时
	CString GetRequestResult();	//发送请求后,获取请求结果

	void ResetRequest();		//清空服务请求计数器
private:
	//Domino服务器端Servlet的Class路径名 或 代理名
	CString       m_strDominoServicePath;

	CString       m_strServerName;	//服务器域名 或 IP
	INTERNET_PORT m_nPort;			//端口
	CString       m_strUserName;	//用户名
	CString       m_strPassword;	//密码
	CString       m_strServiceCfg;	//服务配置
	int           m_nServiceCnt;	//可用服务数-来自服务器
	int           m_nRequestCnt;	//服务请求次数(将会以参数传递到servlet,某些服务如只提示一次的服务如待办事宜需要),初始为1;设置于GetServiceMsg

	CString       m_rgstrServiceResultMsg[2];	//服务结果消息,第一项为完全消息,第二项为只有标题的简单消息

	//服务列表
	CString m_rgstrServiceEnabled[MAX_DOMINO_SERVICE];
	CString m_rgstrServiceDisabled[MAX_DOMINO_SERVICE];
	int  getServiceIndexDisabled( CString strServiceName );
	int  getServiceIndexEnabled ( CString strServiceName );
	bool addServiceEnabled( CString strServiceName );
	bool addServiceDisabled(CString strServiceName );

	//解析服务器返回的服务配置
	int parseService();
	//解析服务器返回的结果
	void parseServiceResult( CString* rgstrResult );

	CDInternetSession*  m_pInetSession;
	//CHttpConnection*    m_pHttpConnection;
	//BOOL  m_bIsConnected;		//TODO?

	HTTP_REQ_THREAD_PARM m_oReqParm;		//请求参数

	void sendRequest( bool bWait = false );	//新建线程提交请求
};

#endif // !defined(AFX_DOMINOHANDLER_H__919BC347_AFFB_4CF4_A2AE_2A879EE2D782__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -