|
|
/*********************************************************************
|
|
|
*文件说明: 通过网络调用远程接口
|
|
|
*作者: logos
|
|
|
*日期: 2017/07/22
|
|
|
*修改日志: 2017/07/22 logos 创建
|
|
|
|
|
|
1. 连接服务器
|
|
|
2. 调用接口
|
|
|
3. 返回结果
|
|
|
|
|
|
***********************************************************************/
|
|
|
#pragma once
|
|
|
#ifndef DLL_INCLUDE_REMOTE_H
|
|
|
#define DLL_INCLUDE_REMOTE_H
|
|
|
|
|
|
#ifndef EXPORT_C
|
|
|
#define EXPORT_C extern "C"
|
|
|
#endif
|
|
|
|
|
|
#ifndef WINAPI
|
|
|
#define WINAPI __stdcall
|
|
|
#endif
|
|
|
|
|
|
#ifndef MAX_NAME_LEN
|
|
|
#define MAX_NAME_LEN 32
|
|
|
#endif
|
|
|
|
|
|
#ifndef MAX_IP_LEN
|
|
|
#define MAX_IP_LEN 16
|
|
|
#endif
|
|
|
|
|
|
#ifndef ushort
|
|
|
#define ushort unsigned short
|
|
|
#endif
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 初始化远程连接模块
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_init();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 释放远程连接模块
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_deinit();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取当前远程模块版本号 - 4位整数
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 返回当前remote版本号1401->1.4.01
|
|
|
*PS: 当版本号为5位时,为beta测试版,个位数为测试版本号
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_version();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 更新服务器列表
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_update_list();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 服务器列表是否更新完成
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 更新完成返回1 否则返回0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_update_list_finished();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取服务器列表,调用前最好更新服务器列表
|
|
|
*Intput: nsize 数组大小
|
|
|
plist 数组指针,可以传NULL获取大小
|
|
|
*Output: NULL
|
|
|
*Return: 返回服务器数量
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_list(int nsize = 0, struct TProxy* plist = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 连接服务器,传入NULL时,默认连接127.0.0.1:9999
|
|
|
*Intput: szIP 服务端IP地址,默认连接127.0.0.1
|
|
|
usport 服务端端口,默认连接9999
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_connect(const char* pszip = 0, ushort usport = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 断开连接服务器
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_disconnect();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取连接信息
|
|
|
*Intput: pInfo 连接信息缓冲区,可以传NULL获取连接状态
|
|
|
*Output: NULL
|
|
|
*Return: 已连接才会返回0,否则返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_connected(struct TProxy* pInfo = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 注册消息弹窗提示,注册后可显示底层提示消息,一般ui层注册 -- 远程接口
|
|
|
*Intput: fun 回调函数地址
|
|
|
param 附加参数
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码
|
|
|
*PS: 在程序初始化时注册,支持最多注册两次,最后注册作为主要回调接口
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_regist_message(void* fun, void* param);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 反注册消息弹窗提示,反注册后会返回到上一次注册状态 -- 远程接口
|
|
|
*Intput: fun 回调函数地址
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码
|
|
|
*PS: 在程序退出时反注册,反注册时优先释放主要回调接口,使用备用接口
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_unregist_message(void* fun);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 同步回调消息,注册后可接收,一般用于UI注册接收,底层发送 -- 远程接口
|
|
|
*Intput: type 消息类型 MessageType
|
|
|
pszmsg 提示消息内容
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回消息返回值(MessageResult),失败返回错误码(<0)
|
|
|
*PS: 支持多线程,内部包含线程保护,回调函数若有延时,将影响其它线程效率
|
|
|
*PS: 弹窗消息仅回调主要接口,其它消息回调所有接口
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_send_messages(int type, const char *pszmsg = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取错误代码对应的描述 -- 远程接口
|
|
|
*Intput: errCode 错误代码 必须是已定义的
|
|
|
*Output: desc 错误描述
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_err_desc(int errcode, char* pszdesc);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取当前日志保存目录 -- 远程接口
|
|
|
*Intput: NULL
|
|
|
*Output: path 当前日志保存目录 保证256字节
|
|
|
*Return: 成功返回0 失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_log_paths(char* path);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 设置当前日志保存目录 -- 远程接口
|
|
|
*Intput: path 待设置目录 <256字节
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回日志保存目录,失败返回NULL
|
|
|
*PS: 必须保证该目录是存在的,否则设置会失败
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_set_log_path(const char* path);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 增加/修改一个配置项 -- 工作目录下配置 -- 远程接口
|
|
|
*Intput: key 段落名 [xxx] -- 不能包含'/' <32字节
|
|
|
name 关键字 xxx=? <32字节
|
|
|
lpValue 值 ?=xxx <256字节
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_modify_cfg(const char* key, const char* name, const char* lpValue);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取一个配置项 -- 工作目录下配置 -- 远程接口
|
|
|
*Intput: key 段落名 [xxx] -- 不能包含'/' <32字节
|
|
|
name 关键字 xxx=? <32字节
|
|
|
*Output: pval 配置值 -- 保证传入256个字节
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_cfgs(const char* key, const char* name, char* pval);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 增加/修改一个配置项(int型) -- 工作目录下配置 -- 远程接口
|
|
|
*Intput: key 段落名 [xxx] -- 不能包含'/' <32字节
|
|
|
name 关键字 xxx=? <32字节
|
|
|
iValue 值 ?=xxx (int)
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_modify_cfg_int(const char* key, const char* name, int iValue);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取一个配置项(int型) -- 工作目录下配置 -- 远程接口
|
|
|
*Intput: key 段落名 [xxx] -- 不能包含'/' <32字节
|
|
|
name 关键字 xxx=? <32字节
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回读取到的值(int),失败返回0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_cfg_int(const char* key, const char* name);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 增加/修改一个配置项(double型) -- 工作目录下配置 -- 远程接口
|
|
|
*Intput: key 段落名 [xxx] -- 不能包含'/' <32字节
|
|
|
name 关键字 xxx=? <32字节
|
|
|
dValue 值 ?=xxx (double)
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_modify_cfg_double(const char* key, const char* name, double dValue);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取一个配置项(double型) -- 工作目录下配置 -- 远程接口
|
|
|
*Intput: key 段落名 [xxx] -- 不能包含'/' <32字节
|
|
|
name 关键字 xxx=? <32字节
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回读取到的值(double),失败返回0
|
|
|
******************************************************/
|
|
|
EXPORT_C double WINAPI remote_get_cfg_double(const char* key, const char* name);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取所有配置项 -- 远程接口
|
|
|
*Intput: plist 配置项内容
|
|
|
nsize 缓冲区大小
|
|
|
*Output: plist 配置项内容
|
|
|
*Return: 返回获取到的配置项数量
|
|
|
*PS: 可以先传入NULL获取大小,保证缓冲区够大后再获取数据
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_cfg_list(struct TConfig* plist = 0, int nsize = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 把一字符串写入一文件,首次写入会打开文件,如果文件存在,
|
|
|
则打开并移到最后,若不存在,则创建并打开。反初始化时会自动关闭
|
|
|
*Intput: file 文件名/相对路径 基于日志目录下创建 <256字节
|
|
|
msgFormat 字符串格式,与printf用法相同
|
|
|
后面可加N个参数,最大支持1024个字节
|
|
|
*Output: 无
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
*PS: 此接口需要外部写入换行符
|
|
|
*PS: 假设日志目录为:"D:\\log" 传入file: "123.dat"
|
|
|
则实际写入文件目录为"D:\\log\\123.dat"
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_files_write(const char* file, const char *pszFormat, ...);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 与files_write功能类似,只是不能格式化字符串
|
|
|
*Intput: file 文件名/相对路径 基于日志目录下创建 <256字节
|
|
|
pszContent 要写入的内容 <1024字节
|
|
|
npos 可选参数,默认-1为从当前位置写入
|
|
|
*Output: 无
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
*PS: 此接口需要外部写入换行符
|
|
|
*PS:写入数据后,文件游标会自动移动到写入后位置
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_files_writes(const char* file, const char *pszContent, int npos = -1);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 逐行读取文件内容,可以传NULL获取文件大小
|
|
|
*Intput: file 文件名/相对路径 基于日志目录下创建 <256字节
|
|
|
pszContent 要读取的内容缓冲区,必须外部保证缓冲区大小
|
|
|
nline 可选参数,读取第几行,从0开始?默认-1为从当前位置读取
|
|
|
*Output: 无
|
|
|
*Return: 成功返回读取到的字节大小,失败返回错误码<0,文件结尾返回0
|
|
|
*PS:读取数据后,文件游标会自动移动到读取后位置
|
|
|
*PS:若不传入pszContent 则返回该文件大小,但不会实际读取
|
|
|
*PS:打开文件后,游标会在最后,所以首次读取最好传入start=0
|
|
|
*PS: 此接口会自动过滤换行符
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_files_read(const char* file, char *pszContent = 0, int nline = -1);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 关闭并保存一个已经打开的文件
|
|
|
*Intput: file 文件名/相对路径 基于日志目录下创建 <256字节
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
*PS: file 传NULL时,关闭所有文件
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_files_close(const char* file = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取所有已经打开的文件名(路径),以'/0'(0结束符)隔开
|
|
|
*Intput: pszFileList 文件名/相对路径
|
|
|
*Output: NULL
|
|
|
*Return: 若不存在文件名(路径)返回0,否则返回所有文件名总长度
|
|
|
*PS: 每个文件名总长度包含文件名实际长度+1(0结束符)
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_files_get_list(char* pszFileList = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 增加/修改一个系统配置项 -- 程序data目录下配置
|
|
|
*Intput: key 段落名 [xxx] -- 不能包含'/' <32字节
|
|
|
name 关键字 xxx=? <32字节
|
|
|
lpValue 值 ?=xxx <256字节
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_modify_sys_cfg(const char* key, const char* name, const char* lpValue);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取一个系统配置项 -- 程序data目录下配置
|
|
|
*Intput: key 段落名 [xxx] -- 不能包含'/' <32字节
|
|
|
name 关键字 xxx=? <32字节
|
|
|
*Output: pval 配置值 -- 保证传入256个字节
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_sys_cfgs(const char* key, const char* name, char* pval);
|
|
|
|
|
|
//enum EM_LOG_LEVEL
|
|
|
//{//打印类型-等级
|
|
|
// LEVEL_CRIT = 0,
|
|
|
// LEVEL_ERR,
|
|
|
// LEVEL_WARN,
|
|
|
// LEVEL_INFO1,
|
|
|
// LEVEL_INFO2,
|
|
|
// LEVEL_INFO3,
|
|
|
// LEVEL_INFO4,
|
|
|
//};
|
|
|
|
|
|
//此处定义远程打印log接口
|
|
|
#define RLOG_INFO(msg, ...) remote_trace(3, 0, 0, 0, msg, __VA_ARGS__)
|
|
|
#define RLOG_INF1(msg, ...) remote_trace(4, 0, 0, 0, msg, __VA_ARGS__)
|
|
|
#define RLOG_INF2(msg, ...) remote_trace(5, 0, 0, 0, msg, __VA_ARGS__)
|
|
|
#define RLOG_INF3(msg, ...) remote_trace(6, 0, 0, 0, msg, __VA_ARGS__)
|
|
|
#define RLOG_WARN(msg, ...) remote_trace(2, __FILE__, __LINE__, __FUNCTION__, msg, __VA_ARGS__)
|
|
|
#define RLOG_ERR(msg, ...) remote_trace(1, __FILE__, __LINE__, __FUNCTION__, msg, __VA_ARGS__)
|
|
|
#define RLOG_CRIT(msg, ...) remote_trace(0, __FILE__, __LINE__, __FUNCTION__, msg, __VA_ARGS__)
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 打印log函数,静态调用时,可直接用宏调用
|
|
|
*Intput: LogLevel打印级别,分为info1, info2, info3, warn error crit
|
|
|
file 文件名, warn级别以必须加入
|
|
|
line 文件行, warn级别以必须加入
|
|
|
fun 函数名, warn级别以必须加入
|
|
|
msgFormat 字符串格式,与printf用法相同
|
|
|
后面可加N个参数,最大支持1024个字节
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_trace(int LogLevel, const char* file, int line,
|
|
|
const char* fun, const char *pszFormat, ...);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 打印log函数,主要用于vb/c#调用
|
|
|
*Intput: LogLevel打印级别,分为info1, info2, info3, warn error crit
|
|
|
pszLog 要打印内容
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_traces(int LogLevel, const char *pszLog);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取日志打印参数
|
|
|
*Intput: pcfg 日志打印参数
|
|
|
*Output: pcfg 日志打印参数
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_log_config(struct TLogConfig* pcfg);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 设置日志打印参数
|
|
|
*Intput: pcfg 日志打印参数
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_set_log_config(const struct TLogConfig* pcfg);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 按当前时间(精确到秒),保存当前日志文件
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0,失败返回错误码
|
|
|
*PS: 调用此接口,可以不关闭程序查看日志文件
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_save_now_log();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取日志缓冲区中的日志内容,
|
|
|
仅当日志缓冲区大小设置大于0时才能获取
|
|
|
*Intput: pszLog 日志缓存区
|
|
|
nSize 缓冲区大小
|
|
|
start 从哪开始获取?
|
|
|
*Output: NULL
|
|
|
*Return: 返回获取到的字节大小,失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI remote_get_log_buff(char* pszLog, int nSize, int start = 0);
|
|
|
|
|
|
#endif //防止重复包含
|