/** * @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 &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_ */