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

📄 serviceaction.h

📁 一个手机通信的源代码 一个手机通信的源代码一个手机通信的源代码
💻 H
字号:
// ServiceAction.h: interface for the CServiceAction class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SERVICEACTION_H__331F528C_6527_4F7C_8B92_91C8F6853A6E__INCLUDED_)
#define AFX_SERVICEACTION_H__331F528C_6527_4F7C_8B92_91C8F6853A6E__INCLUDED_

#include "MtThread.h"	// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*
 该类是服务的动作类,
 如服务的启动、关闭等都是由该类完成的,这样可以使服务本身与服务使用者隔离,
 这样界面可以控制服务的动作,监控程序也可以控制服务的动作
*/
#define  DISPLAYBUFFERLEN 5000  //保存状态消息的缓存大小  
#include <afxmt.h>
class CMtThread;
class CMoThread;
class CServiceAction : public CObject  
{
public:
	//-------------------------------------
    typedef struct StructLoginInfo{ //该结构体存储网关连接基本信息
	   CString m_MtPassword;         //BIND密码
	   CString m_MtUserName;         //BIND用户名
	   CString m_ICPID;              //BIND企业代码       
	   CString m_SourceNode;
	   UINT m_MtRemotePort;          //BIND远程端口
	   CString m_MtRemoteIP;         //BIND远程IP
	   UINT m_MoLocalPort;           //短连接创建本地套接字的端口
	   CString m_MoUserName;         //短连接SMG发来的合法用户名,暂时无效  
	   CString m_MoPassword;         //短连接SMG发来的合法密码,暂时无效 
	   CString m_ServiceNumber;      //特服短信号码
	}StructLoginInfo;
	typedef struct StructQueueInfo{  //该结构体存储队列基本信息
	   CString m_InQueuePath;        //入短消息队列路径    
	   CString m_OutQueuePath;       //出短消息队列路径
	   CString m_SpyQueuePath;       //监视队列路径
	   CString m_ControlQueuePath;   //控制队列路径
	   CString m_ReportQueuePath;    //状态报告路径
	}StructQueueInfo;
	typedef struct StructDisplayInfo{//保存状态信息,详细的消息类型请参阅文档<<网关接口升级改造>>
	   CString m_MsgType;            //消息类型 
	   CString m_ChildType;          //子消息类型  
	   CString m_MsgContent;         //消息内容
	}StructDisplayInfo;
	typedef struct StructProvince{  //移动结构体
	   CString m_ProvinceName;
	   StructQueueInfo  m_QueueInfo;
	   StructLoginInfo  m_LoginIngo;
	   CArray<CMtThread*,CMtThread*> m_ThreadsArray;//移动所辖线程数组
	}StructProvince;
public:	
	CArray<StructProvince*,StructProvince*> m_ProvinceArray;   
	void MoInitConnect(CString RemoteIP,UINT RemotePort,CString ICPID,CString SourceNode,CString UserName,CString Password,UINT LocalPort,CString ServiceNumber,int Index,CString ProvinceName);
	CServiceAction(CString& Province);
	virtual ~CServiceAction();
public:
	void SaveWrongtoLog(CString& csContent);
	void SetDisplayProvince(int index);
	void StartMoThread();
	void InitProvinceArray(int ProvinceNum);
	void SetSaveReport(BOOL bSave);
	void GetConnectStatus(CString& csConnectStatus,int& ThreadIndex);
	void GetMsgNum(UINT& SubmitMsgs,UINT& DeliverMsgs,UINT & DeliveredMsgs,UINT& ReconnectTimes,int& ThreadIndex);
	void SetDisplayAllInfo();
	void SetDisplayForbidden();
	void GetStatusNewInfo(CString& csOutMsg,int& LostedMsg);//供显示或监视使用
	void SaveStatusInfo(CString& MsgType,CString& ChildType,CString& MsgContent,int Index);
	BOOL m_bSaveDisplayInfo;
	void InitQueuePath(CString InQueuePath,CString OutQueuePath,CString ReportQueuePath,CString SpyQueuePath,CString ControlQueuePath,int Index);
	void MoCloseCmppServer();
	BOOL MoStartCmppServer(int& MoThreadNum,int MtThreadNum,int Index);
protected:
	CMoThread* m_pMoThread; //Mo处理线程句炳
	CMtThread* m_pMtThread; //Mt处理线程句炳
//	CArray<CMoThread*,CMoThread*> m_MoThreadpArray;//Mo线程数组
//	CArray<CMtThread*,CMtThread*> m_MtThreadpArray;//Mo线程数组
private:
	int m_DisplayIndex;
	BOOL CreateMtThreads(int ThreadsNum,int Index);
	BOOL CreateMoThreads(int Threadnum,int Index);
	int m_DisplayType;//显示状态的类型,0:表示不显示任何信息
	                  //1表示显示所有信息,2表示只显示系统信息
	                  //3表示只显示收发的短消息
	CString m_csProvince;
	BOOL m_bStatusInfoChange;//判断运行的状态信息是否改变,用于显示状态信息
	StructLoginInfo m_LoginBaseInfo;
	StructQueueInfo m_QueueBaseInfo;
	StructDisplayInfo  m_DisplayInfoArray[DISPLAYBUFFERLEN];//用来保存状态消息供上层调用
	int m_CurArrayPos;                          //标明当前消息已保存到的位置
	int m_LostDisplayInfo;                      //标明未显示而就被丢掉的消息个数
	CMutex m_Mutex;                             //互斥量,防止多个线程访问公共变量m_CurArrayPos,
	                                            //m_LostDisplayInfo
	                                            //m_DisplayInfoArray
	                                            //时冲突
	CMutex m_LogMutex;//日志文件保存互斥量
};

#endif // !defined(AFX_SERVICEACTION_H__331F528C_6527_4F7C_8B92_91C8F6853A6E__INCLUDED_)

⌨️ 快捷键说明

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