UMX-T协议定义
来源:互联网 发布:南京大学网络本科报名 编辑:程序博客网 时间:2024/04/30 04:17
/////////////////////////////////////////////////////////////////////
/// 消息队列定位键
struct MQ_LOC_KEY {
unsigned short node_type_; ///< 节点类型
unsigned long node_id_; ///< 节点ID
unsigned short mq_id_; ///< 消息队列实例ID
unsigned short mq_db_id_; ///< 消息队列存储ID
unsigned __int64 record_id_; ///< 消息队列记录ID
public:
MQ_LOC_KEY():mq_id_(1),mq_db_id_(1) {
}
};
/////////////////////////////////////////////////////////////////////
///< 会话密钥加密函数指针类型
typedef int (*EncryptKeyFuncPtr)(unsigned long cert_entity_id,unsigned char *key,unsigned char **out,unsigned long &out_len);
///< 会话密钥解密函数指针类型
typedef int (*DecryptKeyFuncPtr)(unsigned long cert_entity_id,unsigned char *in,unsigned long in_len,unsigned char **out,unsigned long &out_len);
/// UMX传输层:UMX-T协议
enum {
SF_NONE=1,SF_SAVE_FWD,SF_ACK,
RL_DISCARDABLE=1,///< 目标不在线时丢弃
RL_NODISCARDABLE,///< 目标不在线时保存在待发送消息队列中
RL_STRICT,///< 消息队列负责传输成功,获取确认
};
class UMX_DLL_API CUMXT : public CMsg {
// enum { SF_NONE=1,SF_SAVE_FWD,SF_ACK }; ///< 1:不存储转发 2:存储转发 3:需要确认
public:
static EncryptKeyFuncPtr encrypt_func_; ///< 加密会话函数指针
static DecryptKeyFuncPtr decrypt_func_; ///< 解密会话函数指针
private:
CMsg *app_msg_; ///< 应用消息
bool encrypt_flag_; ///< 是否加密
unsigned long cert_entity_id_; ///< 证书主体ID
bool reliable_; ///< 是否可靠
bool ack2_; ///< 是否送达确认
bool fixed_post_; ///< 固定投递
short fwd_flag_; ///< 存储转发属性
string ref_key_; ///< 应用关联键
// CAutoVector<MQ_LOC_KEY*> loc_keys_; ///< 定位键
vector<MQ_LOC_KEY*> loc_keys_; ///< 定位键
public:
CUMXT();
CUMXT(CMsg *msg);
~CUMXT();
static CUMXT* New(CMsg *msg);
static SetEncryptFunc(EncryptKeyFuncPtr fp) {
encrypt_func_ = fp;
}
static SetDecryptFunc(DecryptKeyFuncPtr fp) {
decrypt_func_ = fp;
}
void Attach(CMsg *msg); ///< 关联应用消息
void SetReliable(bool val); ///< 设置是否可靠
void SetFwdFlag(unsigned short val); ///< 设置存储转发
void SetAck2(bool val); ///< 设置是否送达确认
void SetFixedPost(bool val); ///< 设置固定投递
void SetEncrypt(); ///< 是否加密应用消息
void SetCertEntity(unsigned long cert_entity_id); ///< 设置证书主体
void SetRefKey(const char *rk); ///< 设置关联键
void AddLocKey(MQ_LOC_KEY *lk); ///< 设置定位键
virtual bool IsReliable() const ; ///< 是否可靠传输
virtual bool IsAck2() const; ///< 是否要送达确认
virtual unsigned short GetFwdFlag() const; ///< 取存储转发属性
const char* GetRefKey(); ///< 取应用关联键
unsigned short GetLocKeyCount() ; ///< 定位键个数
MQ_LOC_KEY* GetLocKey(short index); ///< 取index指示的定位键
virtual CMsg* GetAppMsg(); ///< 获取应用消息对象
virtual int RecoverMsg(); ///< 还原应用消息
virtual bool IsUMXT() const { return true; }
virtual int Stream(unsigned char **buf,unsigned long &bufsize,unsigned long &datasize);
virtual int Parse(unsigned char *buf,unsigned long datasize);
virtual bool IsTrusted() { return fwd_flag_>RL_DISCARDABLE; }
virtual bool IsFixedPost() { return fixed_post_; }
virtual bool IsAutoAck() { return fwd_flag_==RL_STRICT; }
};
- UMX-T协议定义
- UMX-T时序控制
- UMX-MTP协议网关
- UMX传输协议指示包
- UMX Viewer
- umx.js变更
- umx.js压缩
- T-MAC协议
- burlap协议定义格式
- 协议栈的定义
- UIApplicationDelegate协议定义说明
- TCP Socket协议定义
- HTTP协议的定义
- 定义协议规范收集
- TCPIP协议头定义
- RTSP协议-中文定义
- Au T+D的定义
- C/C++ 声明 定义 【T】
- 我的心在沸腾
- 几个shell题目
- combox绑定后获取id问题——手动删除和添加SelectedIndexChanged事件
- 新的开始
- 结构体指针为分配内存访问结构体成员错误
- UMX-T协议定义
- nfs服务器安装
- 小结“线程间操作无效: 从不是创建控件的线程访问它” 错误的解决方法
- reactos操作系统实现(150)
- c# 线程间操作无效: 从不是创建控件“”的线程访问它,用托管来解决
- SDL移植
- 怎样能娶比尔盖茨的女儿为妻
- SQL大全-好文收藏
- ubuntu安装更新重启后桌面图标消失的解决方法