/********************************************************************** * @file FITKFlowOFIOHDF5Interface.h * @brief 流体hdf5文件读写接口 * @author liuzhonghua (liuzhonghuaszch@163.com) * @date 2024-09-07 *********************************************************************/ #ifndef _FITKFLOWOFHDF5INTERFACE_H__ #define _FITKFLOWOFHDF5INTERFACE_H__ #include #include "FITKFlowOFIOHDF5API.h" #include "FITK_Kernel/FITKCore/FITKCoreMacros.h" #include "FITK_Kernel/FITKAppFramework/FITKComponentInterface.h" ForwardDeclarNS(Core, FITKAbstractDataObject); ForwardDeclarNS(Interface, FITKAbstractIO); ForwardDeclarNS(H5, Group); ForwardDeclarNS(H5, DataType); ForwardDeclarNS(H5, H5File); namespace IO { /** * @brief HDF5文件读写接口 * @author liuzhonghua (liuzhonghuaszch@163.com) * @date 2024-09-07 */ class FITKFLOWOFIOHDF5API FITKFlowOFIOHDF5Interface : public QObject, public AppFrame::FITKComponentInterface { Q_OBJECT public: using AppFrame::FITKComponentInterface::FITKComponentInterface; virtual ~FITKFlowOFIOHDF5Interface() = default; /** * @brief 设置文件名称 * @param fileName 文件名称 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-04-10 */ void setFileName(const QString& fileName); /** * @brief 打开文件流 * @param state 1 读取 2 写出 * @return 是否打开成功 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-06-11 */ bool openFileStream(int state); /** * @brief 关闭文件流 * @return 是否关闭成功 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-06-11 */ bool closeFileStream(); /** * @brief 获取组件名称,不能重复 return "FITKFlowOFHDF5IO" * @return QString * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-04-10 */ virtual QString getComponentName() override; /** * @brief 执行读取或写出 * @param indexPort 1:读取 2:写出 * @return * @author fulipeng (fulipengqd@yeah.net) * @date 2024-04-10 */ virtual bool exec(const int indexPort) override; /** * @brief 获取是否执行成功标记 * @return bool * @author libaojun (libaojunqd@foxmail.com) * @date 2024-04-10 */ bool isSuccess(); /** * @brief 是否在执行中 * @return true 执行中 false未在执行 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-04-12 */ bool isRunning(); /** * @brief 设置是否在独立的线程运行。默认true,为在独立线程执行 * @param r 是否在独立线程运行 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-05-11 */ void setRunInThread(bool r = true); /** * @brief 读取 弃用 * @return true 执行中 false未在执行 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-04-12 */ bool read(); /** * @brief 写出 弃用 * @return true 执行中 false未在执行 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-04-12 */ bool write(); signals: /** * @brief 读取线程结束发送信号 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-04-10 */ void ioThreadFinishedSig(); private slots: /** * @brief 读取线程结束处理槽函数 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-04-10 */ void ioThreadFinishedSlot(); private: /** * @brief 文件名 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-04-10 */ QString _fileName{}; /** * @brief H5的文件指针 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-06-11 */ H5::H5File* _h5File{}; /** * @brief 是否执行成功标记 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-05-27 */ bool _success{ false }; /** * @brief 读取线程 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-05-27 */ Interface::FITKAbstractIO * _io = nullptr; /** * @brief 是否在线程运行 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-05-27 */ bool _runInThread{ true }; }; } #endif