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

📄 sessionobject.h

📁 linux 下的sgip 协议实现源代码中的头文件
💻 H
字号:
/****************************************************************
Copyright ?, 1989-2002, Hisunsray Tech. Co., Ltd.
File name: SessionObject.h
Author: lizhigang
Version:  V3.0.0.0#20030320-1
Date: 2003-03-20
Description:
History:
*****************************************************************/


#ifndef __TSESSIONOBJECT_H_
#define __TSESSIONOBJECT_H_

#include "RTCStype.h"
#include "RTCS_CMap.h"
#include "RunObject.h"
#include "PublicDefine.h"
#include "ISMA.h"

#define INVALID_SESSION_ID		0
#define MAX_FIELD_COUNT			32
#define MAX_FIELD_LEN			128

class TSMGModule;

class TSessionObject : public TRealtimeObject
{
//属性
public:
	//普通属性
	RTCS_CTuint		m_SessionID;		//会话标识号
	time_t			m_CreateTime;		//会话对象创建时间
	TSMGModule*		m_pOwner;         //流程解释器模块指针
	char            m_Field[MAX_FIELD_COUNT][MAX_FIELD_LEN+1];

	//消息包相关的属性
	RTCS_CTuint		m_PacketSender;		//消息包的发送者
	RTCS_CTuint		m_PacketSenderObj;	//消息包的发送者对象
	RTCS_CTuint		m_PacketReceiverObj;//消息包的接收者对象
	RTCS_CTuint		m_CurrResult;		//结果值
	RTCS_CTuint		m_CommandID;		//命令ID
	RTCS_CTpdu		m_pdu;				//SGIP发送的包

	//和定时相关的属性
	RTCS_CTuint		m_TimerID;			//定时器索引号
	RTCS_CTuint     m_DBTimeOutValue;   //数据库模块超时时限

	char			m_TempSysStrVar[MAX_FIELD_LEN];
	RTCS_CTuint m_Socket;				//socket指针(地址)
//方法
public:
	TSessionObject(TSMGModule* Owner, RTCS_CTuint SessionID=0);
	~TSessionObject();
	TSessionObject& operator=(TSessionObject& obj);

	void Snapshot(FILE *fp);

    //取系统变量
	virtual void * GetSysVarAddr(RTCS_CTuint index,RTCS_CTbyte &vtype);

	//一般函数
	void ClearTimer(RTCS_CTuint TimerID);
	RTCS_CTuint SetTimer(RTCS_CTuint owner, RTCS_CTuint interval, RTCS_CTuint attr=0);
	RTCS_CTuint PostMessage(RTCS_CTpdu pdu);
	RTCS_CTuint PostMessageToSelf(RTCS_CTuint messageID, RTCS_CTuint status);

    //原子函数
	
	RTCS_CTuint SetDBTimeOut(TArg* arg);	

	RTCS_CTuint DataAccess(TArg* arg);

	//数据操作函数组
	RTCS_CTuint ParseParam(TArg *argv);
	RTCS_CTuint SubStr(TArg *argv);
	RTCS_CTuint StrUpper(TArg *argv);
	RTCS_CTuint StrLower(TArg *argv);
	RTCS_CTuint StrDigital(TArg *argv);
	RTCS_CTuint StrLen(TArg *argv);

	//SMA函数组
	RTCS_CTuint SMACmdBind(TArg *argv);
	RTCS_CTuint SMAGetDeliverData(TArg *argv);
	RTCS_CTuint SMACmdSubmit(TArg *argv);
	RTCS_CTuint SMAGetMsgContentLength(TArg *argv);
	RTCS_CTuint SMACmdUnbind(TArg *argv);

private:
	//SMG所用到的变量、函数
	RTCS_CTbyte	SMA_Srcterminalid[CMPP_SIZE_Src_terminal_id + 1];
	RTCS_CTuint SMA_DestUsrtl;
	RTCS_CTbyte SMA_Destterminalid[CMPP_SIZE_Dest_terminal_id + 1];
	RTCS_CTuint SMA_MsgLength;
	RTCS_CTbyte SMA_MsgContent[CMPP_SIZE_Msg_Content + 1];

	void SMAInitData();

};

class TSessionObjectTable:public RTCS_CMap<RTCS_CTuint, RTCS_CTuint, TSessionObject*, TSessionObject*>
{
public:
	RTCS_Lock   m_Lock;
private:
	POSITION    m_CurrPos;
	RTCS_CTbyte m_ToTailFlag;
	RTCS_CTuint m_CurrSessionID;

public:
    TSessionObjectTable();
	~TSessionObjectTable();

	void ClearAll();
	int  AddSessionObject(TSessionObject* Obj);
	TSessionObject* GetSessionObject(RTCS_CTuint SessionID);
	void  DeleteSessionObject(RTCS_CTuint SessionID);

	void Lock();
	void Unlock();

	//遍历用的函数
	void Reset();
    TSessionObject* Next(); //没有加锁

	//产生唯一Session号的函数
	RTCS_CTuint GenerateSessionID();

	void Snapshot(FILE* fp);
};

#endif

⌨️ 快捷键说明

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