581 lines
23 KiB
C++
581 lines
23 KiB
C++
/************************************************************
|
||
Copyright (C), 2008-2018, Tencent Tech. Co., Ltd.
|
||
FileName: iigw_api_client.h
|
||
Author: cooperli Version : 1.0 Date: 2008-03-25
|
||
Description: 信息网关API头文件
|
||
|
||
History:
|
||
<author> <time> <version > <desc>
|
||
cooperli 2008-03-27 1.0 build
|
||
***********************************************************/
|
||
#ifndef _ITC_CLIENT_H_
|
||
#define _ITC_CLIENT_H_
|
||
|
||
// VC动态库
|
||
#ifdef iigw_client_api_EXPORTS
|
||
#define IIGW_DLL_EXPORT __declspec(dllexport)
|
||
#else
|
||
#define IIGW_DLL_EXPORT
|
||
#endif
|
||
|
||
#ifdef __cplusplus
|
||
extern "C"
|
||
{
|
||
#endif
|
||
|
||
|
||
#define SVR_PROT 5692 // IIGW SERVER 的端口
|
||
#define INFOGW_MAX_MSG_LEN 2048 // 最大消息长度为512 BYTE
|
||
#define INFOGW_MAX_TO_GAME_SVR_STR_LEN 256 // 最大送到GAME SERVER的串长度为256 BYTE
|
||
#define INFOGW_MIN_ERR_BUF_LEN 256 // 最小消息长度为256 BYTE
|
||
#define INFOGW_OPEN_ID_LEN 64
|
||
|
||
// 消息类型定义INFOGW_MSG_TYPE
|
||
enum
|
||
{
|
||
INFOGW_MSG_TYPE_REQ = 1, // 请求消息
|
||
INFOGW_MSG_TYPE_ACK = 2, // 回应消息
|
||
INFOGW_MSG_TYPE_BOTTOM // 底部,无效值
|
||
};
|
||
|
||
// 消息错误类型定义
|
||
enum IIGW_MSG_STATUS
|
||
{
|
||
IIGW_MSG_STATUS_OK = 0, // 正确消息
|
||
IIGW_MSG_STATUS_UNKNOWN_VER_ERR = 1, // MAGIC KEY出错
|
||
IIGW_MSG_STATUS_MSG_TYPE_ERR = 2, // 消息类型错误
|
||
IIGW_MSG_STATUS_OPT_ERR = 3, // 业务类型出错
|
||
IIGW_MSG_STATUS_NO_RETURN = 4, // 没有收到对端的回应
|
||
IIGW_MSG_STATUS_CRYPT_LEN_ERR = 5, // TO GAME SVR的消息长度出错
|
||
IIGW_MSG_STATUS_MSG_LEN_ERR = 6, // 消息长度出错
|
||
IIGW_MSG_STATUS_BUF_LEN_ERR = 7, // 输入BUFFFER长度太少
|
||
IIGW_MSG_STATUS_RD_CFG_ERR = 8, // 读配置出错
|
||
IIGW_MSG_STATUS_CONNECT_ERR = 9, // 连接出错
|
||
IIGW_MSG_STATUS_SENT_MSG_ERR = 10, // 发送消息出错
|
||
IIGW_MSG_STATUS_DNS_RESOLVE_ERR = 30, // DNS解释出错,不能把域名解释成IP
|
||
IIGW_MSG_STATUS_PARSE_RSP_ERR = 11, // 解析返回包出错
|
||
IIGW_MSG_STATUS_PARA_ERR = -1, // 参数出错
|
||
|
||
// 服务端发现的错误lix
|
||
IIGW_MSG_STATUS_UNKNOWN_VER_ERR_R = 101, // MAGIC KEY出错
|
||
IIGW_MSG_STATUS_MSG_TYPE_ERR_R = 102, // 消息类型错误
|
||
IIGW_MSG_STATUS_OPT_ERR_R = 103, // 业务类型出错
|
||
IIGW_MSG_STATUS_HEARD_LEN_ERR_R = 104, // 消息协议头长度出错
|
||
IIGW_MSG_STATUS_OPT_LEN_ERR = 105, // 业务信息长度出错
|
||
IIGW_MSG_STATUS_OPT_COUNT_ERR = 106, // 业务信息长度出错
|
||
IIGW_MSG_STATUS_NET_ERR_R = 107, // 网络通讯出错
|
||
IIGW_MSG_STATUS_RES_LIMIT_R = 110, // 资源受限
|
||
|
||
IIGW_MSG_STATUS_BJ_NEW_USER = 200, // CF !!! 北京新用户,禁止登陆
|
||
|
||
IIGW_MSG_STATUS_NETBAR_PC = 256, // 是网吧机器
|
||
IIGW_MSG_STATUS_NOT_IN_NETBAR = 300, // 非网吧环境
|
||
IIGW_MSG_STATUS_NOT_A_CHINESE_OS = 301, // 非中文操作系统
|
||
|
||
IIGW_MSG_STATUS_VMP_CRC_ERROR = 400,
|
||
IIGW_MSG_STATUS_VMP_DEBUG_ERROR = 401,
|
||
IIGW_MSG_STATUS_OS_SEH_ERROR = 402,
|
||
IIGW_MSG_STATUS_CPP_SEH_ERROR = 403,
|
||
IIGW_MSG_STATUS_UNKNOW_ERROR = 404,
|
||
IIGW_MSG_STATUS_BOTTOM // 底部,无效值
|
||
};
|
||
|
||
// 业务ID定义 INFOGW_OPERATION_ID
|
||
enum
|
||
{
|
||
INFOGW_OPERATION_CF = 10, // CF查询网吧等级业务ID
|
||
INFOGW_OPERATION_DNF = 20, // DNF查询网吧等级业务ID
|
||
INFOGW_OPERATION_ID_BOTTOM // 底部,无效值
|
||
};
|
||
|
||
typedef unsigned int UINT;
|
||
typedef struct infoGWReqMsgHeader_st
|
||
{
|
||
UINT uiVersion; // 版本号,认证头
|
||
UINT uiMsgType; // 消息类型,可以表示客户端消息,服务后台消息等
|
||
UINT uiSeqNo; //
|
||
UINT uiTime; // 本地时间戳
|
||
UINT uiOperationId; // 查询的业务类型 .参看 enum INFOGW_OPERATION_ID
|
||
UINT uiStatus; // 当为接收的信息时有效
|
||
UINT uiMsgBodyLen; // 业务消息长度
|
||
} INFOGW_INTF_CLIENT_MSG_HEADER;
|
||
|
||
typedef struct infoGWReqMsg_st
|
||
{
|
||
INFOGW_INTF_CLIENT_MSG_HEADER stMsgHd;
|
||
char szMsgBody[INFOGW_MAX_MSG_LEN]; // 业务相关消息体
|
||
} INFOGW_INTF_CLIENT_MSG;
|
||
|
||
typedef struct infoGWReqNetbarLv_st
|
||
{
|
||
unsigned int uiUni;
|
||
unsigned int ulNetbarIP;
|
||
} INFOGW_REQ_NETBAR_LV;
|
||
|
||
|
||
typedef struct infoGWReqNetbarLvOpenid_st
|
||
{
|
||
unsigned int uiType;
|
||
char open_id[INFOGW_OPEN_ID_LEN];
|
||
unsigned int ulNetbarIP;
|
||
} INFOGW_REQ_NETBAR_LV_OPENID;
|
||
|
||
// TO GAME SERVER 的的加密串的明文结构
|
||
typedef struct IIGWNetbar_st
|
||
{
|
||
unsigned int ulInfoGWTimeStamp; // 时间截
|
||
unsigned int uiUni; // QQ号码
|
||
unsigned int ulNetbarIP; // 网吧ip
|
||
unsigned char ucNetbarLv; // 网吧等级
|
||
//unsigned int ulNetbarLv; // 网吧等级v2
|
||
unsigned char ucCreditRank; // 荣誉等级
|
||
unsigned char ucTeamRank; // 战队等级
|
||
unsigned char ucVIP; // 会员VIP
|
||
unsigned char ucCampaign; // 活动
|
||
unsigned char ucReserve[15]; // 备用
|
||
} INFOGW_NETBAR;
|
||
|
||
//==============================================================
|
||
#define IIGE_MAX_OP_COUNT 15 // 批量查询每次查询的最大业务数量
|
||
#define IIGW_CRYPT_BUF_LEN 128 // 批量查询返回加密串缓存区长度
|
||
|
||
typedef struct IIGW_OPERATIONS
|
||
{
|
||
int count;
|
||
unsigned int uiOperationId[IIGE_MAX_OP_COUNT];
|
||
} INFOGW_OPIDS;
|
||
|
||
typedef struct IIGW_NETBAR_INFO_
|
||
{
|
||
unsigned int uiOperationId;
|
||
int iStatus; // 返回状态:1-正常,0-非正常
|
||
unsigned int ucCryptBufLen;
|
||
unsigned char szCryptBuf[IIGW_CRYPT_BUF_LEN];
|
||
} IIGW_NETBAR_INFO;
|
||
|
||
typedef struct IIGW_NETBAR_INFO_BATCH_ {
|
||
int count;
|
||
IIGW_NETBAR_INFO stNetbarInfo[IIGE_MAX_OP_COUNT];
|
||
} IIGW_NETBAR_INFO_BATCH;
|
||
//==============================================================
|
||
|
||
/*************************************************
|
||
Function: INFOGW_api_req_netbar_lv
|
||
Description: 请求查询网吧等级,并等待回应的加密包
|
||
|
||
Calls: INFOGW_api_set_server
|
||
INFOGW_send_recv
|
||
Called By: API 外部调用
|
||
Table Accessed: NONE
|
||
Table Updated: NONE
|
||
Input:
|
||
const int uiOperationId, -- 业务代码(不同的游戏有不同的业务代码)
|
||
unsigned long uiUni, -- QQ号码
|
||
const char *cIP, -- 网吧IP
|
||
const unsigned char *ticketBuf, -- TGP票据,若不需要填空
|
||
const int ticketLen, -- TGP票据长度,若不需要填0
|
||
unsigned long errBufLen -- error 的BUFFER大小:不应少于256
|
||
|
||
INOUT
|
||
int *bufLen, -- 输入是ack_buf的最大长度,不应少于256,输出是响应数据长度
|
||
|
||
Output:
|
||
void *cryptInfoBuf, -- 响应数据的BUFFER地址
|
||
void *error -- 错误描述的BUFFER地址,输入时BUFFER必需清空,不应少于256
|
||
|
||
Return: 返回0成功,其它为错误码,在iigw_api_client.h enum IIGW_MSG_STATUS中定义
|
||
History:
|
||
<author> <time> <version > <desc>
|
||
anselyang 2008-03-25 1.0 build
|
||
*************************************************/
|
||
int IIGW_DLL_EXPORT INFOGW_api_req_netbar_lv
|
||
(
|
||
const int uiOperationId, // 业务代码
|
||
unsigned long uiUni, // QQ No.
|
||
const char *cIP, // netbar ip addr. eg: 192.168.1.1
|
||
const unsigned char *ticketBuf, // TGP票据,若不需要填空
|
||
const int ticketLen, // TGP票据长度,若不需要填0
|
||
unsigned char *cryptInfoBuf, // output crypt info. . include: netbar level, netbar ip , infoGW's timestamp
|
||
int *bufLen, // crypt info. len
|
||
char *error, // error print char
|
||
unsigned long errBufLen // error buffer size
|
||
);
|
||
|
||
/*************************************************
|
||
Function: INFOGW_api_req_netbar_lv_ext
|
||
Description: 请求查询网吧等级,并等待回应的加密包 CF活动是否弹出
|
||
|
||
Calls: INFOGW_api_set_server
|
||
INFOGW_send_recv
|
||
Called By: API 外部调用
|
||
Table Accessed: NONE
|
||
Table Updated: NONE
|
||
Input:
|
||
const int uiOperationId, -- 业务代码(不同的游戏有不同的业务代码)
|
||
unsigned long uiUni, -- QQ号码
|
||
const char *cIP, -- 网吧IP
|
||
const unsigned char *ticketBuf, -- TGP票据,若不需要填空
|
||
const int ticketLen, -- TGP票据长度,若不需要填0
|
||
unsigned long errBufLen -- error 的BUFFER大小:不应少于256
|
||
|
||
INOUT
|
||
int *bufLen, -- 输入是ack_buf的最大长度,不应少于256,输出是响应数据长度
|
||
|
||
Output:
|
||
void *cryptInfoBuf, -- 响应数据的BUFFER地址
|
||
void *error -- 错误描述的BUFFER地址,输入时BUFFER必需清空,不应少于256
|
||
char *op_buf, -- 其他可选BUF 只给CF 活动用 stMsgHd.uiSeqNo
|
||
int *op_buf_len -- 其他可选BUF 长度 只给CF 活动用 stMsgHd.uiSeqNo
|
||
|
||
Return: 返回0成功,其它为错误码,在iigw_api_client.h enum IIGW_MSG_STATUS中定义
|
||
History:
|
||
<author> <time> <version > <desc>
|
||
anselyang 2009-07-14 1.0 build
|
||
*************************************************/
|
||
int IIGW_DLL_EXPORT INFOGW_api_req_netbar_lv_ext
|
||
(
|
||
const int uiOperationId, // 业务代码
|
||
unsigned long uiUni, // QQ No.
|
||
const char *cIP, // netbar ip addr. eg: 192.168.1.1
|
||
const unsigned char *ticketBuf, // TGP票据,若不需要填空
|
||
const int ticketLen, // TGP票据长度,若不需要填0
|
||
unsigned char *cryptInfoBuf, // output crypt info. . include: netbar level, netbar ip , infoGW's timestamp
|
||
int *bufLen, // crypt info. len
|
||
char *error, // error print char
|
||
unsigned long errBufLen, // error buffer size
|
||
char *op_buf, // 其他可选BUF 只给CF 活动用 stMsgHd.uiSeqNo
|
||
int *op_buf_len // 其他可选BUF 长度 只给CF 活动用 stMsgHd.uiSeqNo
|
||
);
|
||
|
||
|
||
/*************************************************
|
||
Function: INFOGW_api_req_platinum_netbar_lv
|
||
Description: 请求查询铂金网吧等级
|
||
Input:
|
||
const int uiOperationId, -- 业务代码(不同的游戏有不同的业务代码)
|
||
unsigned long uiUni, -- QQ号码,没有可填0
|
||
Output:
|
||
int &level, -- 铂金网吧等级
|
||
|
||
Return: 返回0成功,其它为错误码,在iigw_api_client.h enum IIGW_MSG_STATUS中定义
|
||
History:
|
||
<author> <time> <version > <desc>
|
||
cooperli 2016-11-29 1.0 build
|
||
*************************************************/
|
||
int IIGW_DLL_EXPORT INFOGW_api_req_platinum_netbar_lv
|
||
(
|
||
const int uiOperationId, // 业务代码
|
||
unsigned long uiUni, // QQ No.
|
||
int &level // 铂金网吧等级
|
||
);
|
||
|
||
/*************************************************
|
||
Function: INFOGW_api_req_platinum_netbar_lv_ext
|
||
Description: 请求查询铂金网吧等级
|
||
Input:
|
||
const int uiOperationId, -- 业务代码(不同的游戏有不同的业务代码)
|
||
unsigned long uiUni, -- QQ号码,没有可填0
|
||
unsigned int zone_id, -- 游戏大区,没有可填0
|
||
Output:
|
||
int &level, -- 铂金网吧等级
|
||
|
||
Return: 返回0成功,其它为错误码,在iigw_api_client.h enum IIGW_MSG_STATUS中定义
|
||
History:
|
||
<author> <time> <version > <desc>
|
||
cooperli 2016-11-29 1.0 build
|
||
*************************************************/
|
||
int IIGW_DLL_EXPORT INFOGW_api_req_platinum_netbar_lv_ext
|
||
(
|
||
const int uiOperationId, // 业务代码
|
||
unsigned long uiUni, // QQ No.
|
||
unsigned int zone_id, //游戏大区
|
||
int &level // 铂金网吧等级
|
||
);
|
||
|
||
/*************************************************
|
||
Function: INFOGW_api_req_netbar_lv_ext_with_zone_id
|
||
Description: 请求查询网吧等级,并等待回应的加密包 CF活动是否弹出
|
||
|
||
Calls: INFOGW_api_set_server
|
||
INFOGW_send_recv
|
||
Called By: API 外部调用
|
||
Table Accessed: NONE
|
||
Table Updated: NONE
|
||
Input:
|
||
const int uiOperationId, -- 业务代码(不同的游戏有不同的业务代码)
|
||
unsigned long uiUni, -- QQ号码
|
||
unsigned long zone_id, -- 大区ID
|
||
const char *cIP, -- 网吧IP
|
||
const unsigned char *ticketBuf, -- TGP票据,若不需要填空
|
||
const int ticketLen, -- TGP票据长度,若不需要填0
|
||
unsigned long errBufLen -- error 的BUFFER大小:不应少于256
|
||
|
||
INOUT
|
||
int *bufLen, -- 输入是ack_buf的最大长度,不应少于256,输出是响应数据长度
|
||
|
||
Output:
|
||
void *cryptInfoBuf, -- 响应数据的BUFFER地址
|
||
void *error -- 错误描述的BUFFER地址,输入时BUFFER必需清空,不应少于256
|
||
char *op_buf, -- 其他可选BUF 只给CF 活动用 stMsgHd.uiSeqNo
|
||
int *op_buf_len -- 其他可选BUF 长度 只给CF 活动用 stMsgHd.uiSeqNo
|
||
|
||
Return: 返回0成功,其它为错误码,在iigw_api_client.h enum IIGW_MSG_STATUS中定义
|
||
History:
|
||
<author> <time> <version > <desc>
|
||
cooperli 2017-01-19 1.0 build
|
||
*************************************************/
|
||
int IIGW_DLL_EXPORT INFOGW_api_req_netbar_lv_ext_with_zone_id
|
||
(
|
||
const int uiOperationId, // 业务代码
|
||
unsigned long uiUni, // QQ No.
|
||
unsigned int zone_id, // 游戏大区.
|
||
const char *cIP, // netbar ip addr. eg: 192.168.1.1
|
||
const unsigned char *ticketBuf, // TGP票据,若不需要填空
|
||
const int ticketLen, // TGP票据长度,若不需要填0
|
||
unsigned char *cryptInfoBuf, // output crypt info. . include: netbar level, netbar ip , infoGW's timestamp
|
||
int *bufLen, // crypt info. len
|
||
char *error, // error print char
|
||
unsigned long errBufLen, // error buffer size
|
||
char *op_buf, // 其他可选BUF 只给CF 活动用 stMsgHd.uiSeqNo
|
||
int *op_buf_len, // 其他可选BUF 长度 只给CF 活动用 stMsgHd.uiSeqNo
|
||
const int time_out=5000 // 阻塞时间,单位->毫秒,范围1~10000,默认值为5000
|
||
);
|
||
|
||
//////////////////////////////////////////////////////////////////////////
|
||
/** QQ网吧插件接口*/
|
||
namespace iepm_qqwb{
|
||
|
||
enum account_type{
|
||
at_qq, //0
|
||
at_wechart, // 1
|
||
at_facebook, //2
|
||
at_email, // 3
|
||
at_steam, //4
|
||
at_gopenid,//5
|
||
at_topenid, // 6 手机号对应的openid
|
||
};
|
||
|
||
/**
|
||
* @brief NetbarLv QQ网吧签名结构体
|
||
* @param tokenBuf 用来存放QQ网吧签名的buff
|
||
* @param tokenLen QQ网吧签名的长度
|
||
* @param ip PC的ip地址
|
||
* @param macs PC的mac地址列表
|
||
* @param macSize PC的mac地址个数
|
||
*/
|
||
struct NetbarLv {
|
||
unsigned char tokenBuff[1024];
|
||
int tokenLen;
|
||
char ip[32];
|
||
char macs[128];
|
||
int macSize;
|
||
};
|
||
|
||
/**
|
||
* @brief notify_req_netbarlv_result 回调函数,返回获取签名的结果和内容
|
||
* @param game_id 游戏ID
|
||
* @param zone_id 登录游戏的大区号
|
||
* @param open_id 用户登录游戏的open_id
|
||
* @param ret_code 获取签名的结果,返回0成功,其他为错误码,参考enum IIGW_MSG_STATUS中定义
|
||
* @param netbarlv NetbarLv信息,当ret_code=0时返回
|
||
*/
|
||
typedef void(*notify_req_netbarlv_result)(
|
||
unsigned int game_id,
|
||
unsigned int zone_id,
|
||
const char open_id[INFOGW_OPEN_ID_LEN],
|
||
int ret_code,
|
||
NetbarLv *netbarlv
|
||
);
|
||
|
||
struct IQQNetbarIIGWPlugin{
|
||
/**
|
||
* @brief 获取网吧机器信息
|
||
* @param game_id 游戏ID,由网吧项目组这边分配
|
||
* @param uin 用户登录游戏的QQ号
|
||
* @param zone_id 登录游戏的大区号
|
||
* @param cryptInfoBuf 用来存放网吧机器信息的加密串
|
||
* @param bufLen 加密串长度
|
||
* @param time_out 阻塞时间,单位->毫秒,范围1~10000 ,默认值为5000
|
||
* @return int 返回0成功,其他为错误码,参考enum IIGW_MSG_STATUS中定义
|
||
*/
|
||
virtual int GetNetbarMachineContent(
|
||
unsigned int game_id,
|
||
unsigned int uin,
|
||
unsigned int zone_id,
|
||
unsigned char *cryptInfoBuf,
|
||
int *bufLen,
|
||
const int time_out=5000
|
||
) = 0;
|
||
|
||
/**
|
||
* @brief 获取机器是否在网吧
|
||
* @param open_id 用户登录游戏的open_id,最大长度64
|
||
* @param type open_id帐号类型,参考account_type,0是QQ号,1是微信,2是facebook,3是邮箱账号,4是steam账号
|
||
* @return int 返回IIGW_MSG_STATUS_NETBAR_PC表示是网吧机器, IIGW_MSG_STATUS_NOT_IN_NETBAR表示非网吧机器,其他为错误码
|
||
*/
|
||
virtual int IsNetbarMachine(unsigned int game_id,
|
||
const char open_id[INFOGW_OPEN_ID_LEN],
|
||
account_type type) = 0;
|
||
|
||
/**
|
||
* @brief 获取机器是否在网吧,该接口仅为pubg使用
|
||
* @return bool 返回true表示在网吧
|
||
*/
|
||
virtual int IsNetbarMachine() = 0;
|
||
|
||
/**
|
||
* @brief ReqNetbarLv 获取网吧等级
|
||
* @param game_id 游戏ID,由网吧项目组这边分配(对应老接口的uiOperationId)
|
||
* @param zone_id 登录游戏的大区号
|
||
* @param open_id 用户登录游戏的open_id,最大长度64
|
||
* @param ticketBuf, TGP票据,若不需要填空
|
||
* @param ticketLen, TGP票据长度,若不需要填0
|
||
* @param cryptInfoBuf 用来存放网吧机器信息的加密串
|
||
* @param bufLen 加密串长度
|
||
* @param error, 错误的msg
|
||
* @param errBufLen, error buffer size
|
||
* @param op_buf, 其他可选BUF 只给CF 活动用 stMsgHd.uiSeqNo
|
||
* @param op_buf_len, 其他可选BUF 长度 只给CF 活动用 stMsgHd.uiSeqNo
|
||
* @param time_out 阻塞时间,单位->毫秒,范围1~10000,默认值为5000
|
||
* @param type 保留字段,open_id帐号类型,0是QQ号,1是微信,【2是facebook,3是邮箱账号,这2个都是wegame自己的opend_id】
|
||
* @return int 返回0成功,其他为错误码,参考enum IIGW_MSG_STATUS中定义
|
||
*/
|
||
virtual int ReqNetbarLv(
|
||
unsigned int game_id,
|
||
unsigned int zone_id,
|
||
const char open_id[INFOGW_OPEN_ID_LEN],
|
||
const unsigned char *ticketBuf,
|
||
const int ticketLen,
|
||
unsigned char *cryptInfoBuf,
|
||
int *bufLen,
|
||
char *error,
|
||
unsigned long errBufLen,
|
||
char *op_buf,
|
||
int *op_buf_len,
|
||
const int time_out=5000,
|
||
unsigned int type = 1
|
||
) = 0;
|
||
|
||
/**
|
||
* @brief ReqNetbarLv2 获取网吧等级
|
||
* @param game_id 游戏ID,由网吧项目组这边分配(对应老接口的uiOperationId)
|
||
* @param zone_id 登录游戏的大区号
|
||
* @param open_id 用户登录游戏的open_id,最大长度64
|
||
* @param type open_id帐号类型,0是QQ号,1是微信,2是facebook,3是邮箱账号,4是msdk的gopen_id
|
||
* @param ticketBuff, 用户登录游戏时的token,用于登录校验
|
||
* @param ticketLen, 用户登录游戏时的token长度
|
||
* @param netbarlv 输出参数,参考NetbarLv的声明
|
||
* @param time_out 阻塞时间,单位->毫秒,范围1~10000,默认值为5000
|
||
* @return int 返回0成功,其他为错误码,参考enum IIGW_MSG_STATUS中定义
|
||
*/
|
||
virtual int ReqNetbarLv2(
|
||
unsigned int game_id,
|
||
unsigned int zone_id,
|
||
const char open_id[INFOGW_OPEN_ID_LEN],
|
||
unsigned int type,
|
||
const char *ticketBuff,
|
||
const int ticketLen,
|
||
NetbarLv *netbarlv,
|
||
const int time_out = 5000
|
||
) = 0;
|
||
|
||
/**
|
||
* @brief 获取机器是否在网吧,给PUBG用的接口,其他业务请调用IsNetbarMachine
|
||
* @param open_id 用户登录游戏的open_id,最大长度64
|
||
* @param type open_id帐号类型,参考account_type,0是QQ号,1是微信,2是facebook,3是邮箱账号,4是steam账号
|
||
* @return bool 返回true表示在网吧
|
||
*/
|
||
virtual int IsNetbar_ForPubg(const char open_id[INFOGW_OPEN_ID_LEN], account_type type) = 0;
|
||
|
||
/**
|
||
* @brief 获取网吧签名token,给PUBG用的接口
|
||
* @param open_id 用户登录游戏的open_id,最大长度64
|
||
* @param type open_id帐号类型,参考account_type,0是QQ号,1是微信,2是facebook,3是邮箱账号,4是steam账号
|
||
* @param opt_token 存储token用的buff,建议长度512
|
||
* @param opt_token_len 返回的token 长度
|
||
* @return int 返回0成功,返回IIGW_MSG_STATUS_NOT_IN_NETBAR(300)表示非网吧环境,并且opt_token会为空,
|
||
其他为错误码,参考enum IIGW_MSG_STATUS中定义
|
||
*/
|
||
virtual int ReqNetbarToken_ForPubg(const char open_id[INFOGW_OPEN_ID_LEN], account_type type,
|
||
char *opt_token, int *opt_token_len) = 0;
|
||
|
||
/*************************************************
|
||
Function: SetProxy
|
||
Description: 设置代理,在所有获取等级接口之前调用
|
||
History:
|
||
<author> <time> <version > <desc>
|
||
cooperli 2019-6-11 1.0 build
|
||
*************************************************/
|
||
virtual void SetProxy(
|
||
const char url[INFOGW_OPEN_ID_LEN], // 代理URL
|
||
const char user[INFOGW_OPEN_ID_LEN], // 代理账号
|
||
const char pwd[INFOGW_OPEN_ID_LEN] // 代理密码
|
||
) = 0;
|
||
|
||
|
||
/**
|
||
* @brief RegNetbarLvCallback 注册异步获取网吧等级的回调函数,只需调用一次
|
||
* @param handle_result 回调函数
|
||
* @return int 返回0成功,其他为错误码,参考enum IIGW_MSG_STATUS中定义
|
||
*/
|
||
virtual int RegNetbarLvCallback(notify_req_netbarlv_result handle_result) = 0;
|
||
|
||
/**
|
||
* @brief ReqNetbarLv2_Asyn 异步获取网吧等级,调用该函数之前需调用RegNetbarLvCallback注册回调
|
||
* @param game_id 游戏ID,由网吧项目组这边分配(对应老接口的uiOperationId)
|
||
* @param zone_id 登录游戏的大区号
|
||
* @param open_id 用户登录游戏的open_id,最大长度64
|
||
* @param type open_id帐号类型,0是QQ号,1是微信,2是facebook,3是邮箱账号,4是msdk的gopen_id
|
||
* @param ticketBuff, 用户登录游戏时的token,用于登录校验
|
||
* @param ticketLen, 用户登录游戏时的token长度
|
||
* @param time_out 阻塞时间,单位->毫秒,范围1~10000,默认值为5000
|
||
* @return int 返回0成功,其他为错误码,参考enum IIGW_MSG_STATUS中定义
|
||
*/
|
||
virtual int ReqNetbarLv2_Asyn(
|
||
unsigned int game_id,
|
||
unsigned int zone_id,
|
||
const char open_id[INFOGW_OPEN_ID_LEN],
|
||
unsigned int type,
|
||
const char *ticketBuff,
|
||
const int ticketLen,
|
||
const int time_out = 5000
|
||
) = 0;
|
||
};
|
||
|
||
/**
|
||
* @brief 创建QQ网吧插件接口
|
||
* @param hDll LoadLibrary返回的HMODULE
|
||
* @return IQQNetbarIIGWPlugin 失败返回nullptr。该接口内存由插件管理,无需外部释放
|
||
*/
|
||
inline IQQNetbarIIGWPlugin *CreateQQNetbarIIGWPlugin(HMODULE hDll){
|
||
if (!hDll) {
|
||
return nullptr;
|
||
}
|
||
|
||
typedef HRESULT (WINAPI *QUERYPLUGININTERFACE)(const char*, void**);
|
||
#ifdef _WIN64
|
||
QUERYPLUGININTERFACE qpi = (QUERYPLUGININTERFACE)GetProcAddress(hDll,
|
||
"QueryPluginInterface");
|
||
#else
|
||
QUERYPLUGININTERFACE qpi = (QUERYPLUGININTERFACE)GetProcAddress(hDll,
|
||
"_QueryPluginInterface@8");
|
||
#endif
|
||
|
||
if (qpi) {
|
||
IQQNetbarIIGWPlugin* plugin = nullptr;
|
||
HRESULT hresult = qpi("IQQNetbarIIGWPlugin", reinterpret_cast<void**>(&plugin));
|
||
if (SUCCEEDED(hresult)) {
|
||
return plugin;
|
||
}
|
||
}
|
||
|
||
return nullptr;
|
||
}
|
||
|
||
}
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif // _ITC_CLIENT_H_
|