logplus/Workflow/WFCrystal/SysUtility/utils/include/TurtleAPI.h
2026-01-16 17:18:41 +08:00

188 lines
5.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file Turtle.h
* @brief 定义常用系统API封装类的基类封装实现常用系统API
* @date 2014-04-15
* @author Bronco
*/
#ifndef TURTLEAPI_H_
#define TURTLEAPI_H_
#include "TurtleType.h"
#include "TurtleHeader.h"
namespace pai{
namespace turtle {
/**
* @class TurtleAPI
* @brief 定义常用系统API封装类的基类封装实现常用系统API
*/
class TurtleAPI{
public:
/**
* @brief 构造函数
*/
TurtleAPI(){};
/**
* @brief 析够函数
*/
virtual ~TurtleAPI(){};
/**
* @brief 挂起指定时间
* @param[in] sleepTime 以毫秒为单位的睡眠时间
*/
virtual void Sleep(unsigned long long sleepTime) = 0;
/**
* @brief 系统调用
* @param[in] oper 要执行的命令
* @param[in] name 指定要打开的文件或程序
* @param[in] param 传递给要打开的程序的参数
* @param[in] path 缺省目录
* @param[in] cmd 打开选项
*/
void SystemCall(const std::string& oper, const std::string& name = "", const std::string& param = "", const std::string& path = "", int cmd = 0)
{
this->SysCall(oper, name, param, path, cmd);
}
/**
* @brief
* @param[in] pFunction 线程执行的函数指针
* @param[in] param 线程参数
* @return
*/
virtual unsigned int CreateThread(LPTHREAD_START_ROUTINE pFunction, void * param) = 0;
/**
* @brief 删除一个目录
* @param[in] path 要删除的目录
*/
virtual bool DeletePath(std::string &path) = 0;
/**
* @brief 检查路径
* @param[in] path 要检查的路径
*/
virtual bool CheckPath(std::string& path) = 0;
/**
* @brief 创建目录
* @param path 要创建的目录
* @return 成功返回 true,失败返回false
*/
virtual bool MkDir(std::string &path) = 0 ;
/**
* @brief 获取path下的文件列表
* @param[in] path 目录
* @param[out] filelist 文件名列表
* @return 成功返回true,失败返回false.
*/
virtual bool ScanDir(const std::string &path,std::vector<std::string> &filelist) = 0;
/**
* @brief 读取一行数据
* @param[in] file 文件指针
* @param[out] str 读取到的数据
* @return 成功返回true,失败返回false.
*/
virtual bool Readline(FILE *file,std::string &str) = 0;
/**
* @brief 获取系统时间
* @return 得到的系统时间,单位为微秒
*/
virtual unsigned long long GetSystemTime() = 0;
/**
* @brief 获取系统时间
* @param[out] tv timeval结构提指针
* @param[out] tz 返回时区信息windows下暂未实现
* @return 执行成功返回0失败返回-1
*/
virtual int GetTimeOfDay(struct timeval *tv, void *tz) = 0;
/**
* @brief 获取系统时间 纳秒级
* @param[out] time 获取到的纳秒级计数
* @return cpu频率支持纳秒级计数 返回true,否则返回false.
*/
virtual bool GetNSTime(long long &time) = 0;
/**
* @brief 把字符串转换成long long 类型数据
* @param[in] str 要转换的字符串
* @return 得到的long long型数据
*/
virtual long long StringToLong(const std::string &str) = 0;
/* @brief 改变或增加环境变量如果环境变量已经存在原内容会被改为strEnvValue
* @param[in] strEnvName 环境变量名称字符串
* @param[in] strEnvValue 环境变量的值
* @return 执行成功返回0有错误发生返回-1
*/
virtual int SetEnv(std::string &strEnvName,std::string &strEnvValue) = 0;
/**
* @brief 将value的值付给pt
* @param[in] pt 待赋值的pthread_t
* @param[in] value 欲赋给pt的值
*/
virtual void SetValue(pthread_t& pt, int value) = 0;
/**
* @brief 验证pt是否大于0
* @param[in] pt 待验证的 pthread_t
* @return 等于0 返回true,不等于0 返回false.
*/
virtual bool IsValid(pthread_t& pt) = 0;
virtual int GetOpt(int argc, char *argv[], char *opstring) = 0;
/**
* @breif 打开一个动态链接库,并返回动态链接库的句柄
* @param strlibrary 动态库地址
*/
virtual void * OpenLibrary(const std::string &strlibrary) = 0;
/**
* @brief 用于关闭指定句柄的动态链接库
* @return 只有当此动态链接库的使用计数为0时,才会真正被系统卸载。
*/
virtual long CloseLibrary(void *library) = 0;
/**
* @brief 当动态链接库操作函数执行失败时,该方法可以返回出错信息
* @return std::string 返回值为NULL时表示操作函数执行成功
*/
virtual std::string ErrorLibrary() = 0;
/**
* @brief 获取进程ID
* @return 进程ID.
*/
virtual int GetPid() = 0;
/**
* @brief 判断是否是有效数字
* @return
*/
virtual int isNAN(double x)=0;
/**
* @brief 判断是否是INF
* @return
*/
virtual int isINF(double x)=0;
/**
* @brief 得到当前操作系统的动态库文件的后缀
* @return
*/
virtual std::string GetLibraryFileExt()=0;
private:
/**
* @brief 系统调用
* @param[in] oper 要执行的命令
* @param[in] name
* @param[in] param
* @param[in] path
* @param[in] cmd
*/
virtual void SysCall(const std::string& oper, const std::string& name, const std::string& param, const std::string& path, int cmd) = 0;
protected:
};
}
}
#endif /* TURTLEAPI_H_ */