void FileTransferModule_Impl::_sendfileResponse(IN std::string& body) { IM::File::IMFileRsp imFileRsp; if (!imFileRsp.ParseFromString(body)) { LOG__(ERR, _T("parse failed,body:%s"), util::stringToCString(body)); return; } UInt32 nResult = imFileRsp.result_code(); if (nResult != 0) { LOG__(ERR, _T("_sendfileResponse result != 0")); module::getFileTransferModule()->asynNotifyObserver(module::KEY_FILESEVER_UPLOAD_FAILED); } TransferFileEntity fileEntity; fileEntity.sTaskID = imFileRsp.task_id(); assert(!fileEntity.sTaskID.empty()); fileEntity.sFromID = util::uint32ToString(imFileRsp.from_user_id()); fileEntity.sToID = util::uint32ToString(imFileRsp.to_user_id()); fileEntity.sFileName = imFileRsp.file_name(); fileEntity.setSaveFilePath(util::stringToCString(fileEntity.sFileName));//发送方文件地址,就是保存地址 fileEntity.time = static_cast<UInt32>(time(0)); uint32_t transMode = imFileRsp.trans_mode(); if (IM::BaseDefine::FileType::FILE_TYPE_ONLINE == transMode) { fileEntity.nClientMode = IM::BaseDefine::ClientFileRole::CLIENT_REALTIME_SENDER; } else if (IM::BaseDefine::FileType::FILE_TYPE_OFFLINE == transMode) { fileEntity.nClientMode = IM::BaseDefine::ClientFileRole::CLIENT_OFFLINE_UPLOAD; } fileEntity.pFileObject = new TransferFile(util::stringToCString(fileEntity.sFileName),FALSE); if (fileEntity.pFileObject) { fileEntity.nFileSize = fileEntity.pFileObject->length(); } UINT32 nIPCount = imFileRsp.ip_addr_list_size(); if (nIPCount <= 0) { return; } const IM::BaseDefine::IpAddr& ipAdd = imFileRsp.ip_addr_list(0); fileEntity.sIP = ipAdd.ip(); fileEntity.nPort = ipAdd.port(); if (!TransferFileEntityManager::getInstance()->pushTransferFileEntity(fileEntity)) TransferFileEntityManager::getInstance()->updateFileInfoBysTaskID(fileEntity); LOG__(DEBG, _T("FileTransferSevice_Impl::准备连接文件服务器 sTaskId = %s"), util::stringToCString(fileEntity.sTaskID)); TransferFileEntityManager::getInstance()->openFileSocketByTaskId(fileEntity.sTaskID); }
BOOL DatabaseModule_Impl::sqlGetFileTransferHistory(OUT std::vector<TransferFileEntity>& fileList) { try { CppSQLite3Statement stmt; stmt = m_pSqliteDB->compileStatement(getFileTransferHistoryBySIdSql.c_str()); stmt.bind(1, 20); CppSQLite3Query query = stmt.execQuery(); while (!query.eof()) { TransferFileEntity fileInfo; fileInfo.sTaskID = query.getStringField(1); fileInfo.sFromID = query.getStringField(2); fileInfo.sFileName = query.getStringField(3); CString strSavePath = util::stringToCString(query.getStringField(7)); fileInfo.setSaveFilePath(strSavePath); fileInfo.nFileSize = query.getIntField(8); fileInfo.time = query.getIntField(9); fileList.push_back(fileInfo); query.nextRow(); } } catch (CppSQLite3Exception& sqliteException) { #ifdef _DEBUG MessageBoxA(0, sqliteException.errorMessage(), "BD ERROR", MB_OK | MB_ICONHAND); #endif CString csErrMsg = util::stringToCString(sqliteException.errorMessage(), CP_UTF8); LOG__(ERR, _T("db failed,error msg:%s"), csErrMsg); return FALSE; } catch (...) { return FALSE; } return TRUE; }