📄 dominohandler.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 + -