/* * CDbFileNetIf.h * * Created on: 2012-8-1 * Author: ThinkPad */ #ifndef CDBFILENETIF_H_ #define CDBFILENETIF_H_ #ifdef _WIN64 # ifdef NET_IF_EXPORTS # define NET_IF_API __declspec(dllexport) # else # define NET_IF_API __declspec(dllimport) # endif # pragma warning(disable : 4251) #else # define NET_IF_API #endif #include "db_com/DBAccess.h" /** @brief 文件名信息数据 */ struct FileNameData{ union{ long idx; long keyWord; }; ///文件名 char name[128]; ///文件子类型 long idxFileSubType; ///版本号 int iVersion; ///文件大小 int iSize; ///文件修改时刻 long tmModify; ///加锁状态 bool isLocked; ///当前用户索引号 long idxUserName; ///加锁的应用类型 long idxAppType; ///加锁结点 long idxLockNode; ///加锁时刻 long tmLock; ///所属厂站 =NS::NOEXIST表示全部厂站 long idxFactoryName; FileNameData(){ SetDefaultData(); } void SetDefaultData(){ memset(this, 0, sizeof(*this)); } }; // 查询时需要用到的结果指针结构 struct TQueryResultPtr { char *result_link_ptr; char *result_data_ptr; short *result_indicator_ptr; TResultHead *result_head_ptr; TFieldInfo *field_info_ptr; }; // 查询包含LOB字段的SQL时需要用到的结果指针结构 struct TLOBQueryResultPtr { char *result_link_ptr; char *result_data_ptr; short *result_indicator_ptr; TLOBResultHead *result_head_ptr; TLOBFieldInfo *field_info_ptr; }; class NET_IF_API CDbFileNetIf //: public CDbFileIf { public: /** @brief 构造函数 */ CDbFileNetIf(); ///析构函数 ~CDbFileNetIf(); public: /** @brief 单个文件读取, 读文件(包括文件头信息), 返回文件的实际大小 @param fileIdx 文件记录索引号 @param pFileNameData1 文件头指针 @param pReadBuf1 读取缓冲区,此参数必需为空时,接口自动分配内存,由调用方使用free释放 @param len1 缓冲区大小 @retval 成功返回NS::RETURN_OK,否则返回<0 */ int Read( const long fileIdx, FileNameData *pFileNameData1, char* &pReadBuf, int &file_len, int mode = 0); /** @brief 更新文件信息,文件版本号自动加1,如果文件不存在自动创建 @param FileNameData stFileNameData 文件头 @param pWriteBuf1 文件内容指针 @retval 成功返回NS::RETURN_OK,否则返回<0 */ int Update( FileNameData &stFileNameData, const char* pWriteBuf, int mode = 0); /** @brief 删除单个文件信息 @param idFile1 文件信息记录索引 @retval 成功返回NS::RETURN_OK,否则返回<0 */ int DeleteSingleFile( const long fileIdx, int mode = 0); /** @brief 锁定文件信息 @param strUserName1 使用者名称 @param idHostNode1 节点号 @retval 成功返回NS::RETURN_OK,否则返回<0 */ // INT32 Lock(const INT32 idFile1, const INT32 idUser1, const INT32 idHostNode1,INT32 mode = 0); /** @brief 解锁文件信息 @param strUserName11 使用者名称 @param idHostNode1 节点号 @param operMachineType1 操作机器类型,缺省为本地优先 @retval 成功返回NS::RETURN_OK,否则返回<0 */ // INT32 Unlock(const INT32 idFile1, const INT32 idUser1, const INT32 idHostNode1,INT32 mode = 0); private: CDbAccess m_db_access; private: void NewQueryResultPtr(TQueryResultPtr &query_result_ptr_stru); void DeleteQueryResultPtr(TQueryResultPtr & query_result_ptr_stru); void NewLOBQueryResultPtr(TLOBQueryResultPtr & query_result_ptr_stru); void DeleteLOBQueryResultPtr(TLOBQueryResultPtr & query_result_ptr_stru); }; #endif /* CDBFILENETIF_H_ */