void DownloadOperation::startDownload() { if (isTerminating()) { killOp(); return ; } // if terminating FileInfo *fileInfo = m_toCopy->getFileInfo(); // Logging if (m_toCopy->getFirst()->getParent() == NULL) { StringStorage message; message.format(_T("Downloading '%s' %s"), m_pathToTargetFile.getString(), fileInfo->isDirectory() ? _T("folder") : _T("file")); notifyInformation(message.getString()); } // logging if (fileInfo->isDirectory()) { processFolder(); } else { processFile(); } // if not directory if (isTerminating()) { killOp(); return ; } // if terminating }
void UploadOperation::startUpload() { if (isTerminating()) { killOp(); return ; } // terminate operation is needed // Current file info FileInfo *fileInfo = m_toCopy->getFileInfo(); // Logging if (m_toCopy->getFirst()->getParent() == NULL) { StringStorage message; message.format(_T("Uploading '%s' %s"), m_pathToSourceFile.getString(), fileInfo->isDirectory() ? _T("folder") : _T("file")); notifyInformation(message.getString()); } // logging if (fileInfo->isDirectory()) { processFolder(); } else { processFile(); } // if not directory if (isTerminating()) { killOp(); return ; } // terminate operation is needed } // void
int main(int argc, char ** argv) { if (argc < 5) { printf("gen_data_folder [org folder] [dest folder] [convert] [ignore]\n"); return 0; } UTIL::FS::recMakeFolder(argv[1]); const char* convert = argv[3]; const char* ignore = argv[4]; auto shouldConvertFn = [convert, ignore](std::string &name) -> int { return shouldConvert(convert, ignore, name); }; return processFolder(UTIL::FS::Path(argv[1], "", false), UTIL::FS::Path(argv[2], "", false), shouldConvertFn); }
int processFolder(UTIL::FS::Path src, UTIL::FS::Path dest, F shouldConvertFn) { std::vector<UTIL::FS::Path> files; std::vector<UTIL::FS::Path> folders; std::vector<UTIL::FS::Path> destfolders; UTIL::FS::getAllFiles(src, files, NULL); UTIL::FS::getAllFolders(src, folders); UTIL::FS::recMakeFolder(dest); int res = copyFiles(files, dest, shouldConvertFn); if (res != 0) return res; size_t size = filterFolders(folders, destfolders, dest, shouldConvertFn); for (size_t x=0; x<size; x++) { for (size_t y=x+1; y<size; y++) { if (destfolders[x].getLastFolder() == destfolders[y].getLastFolder()) { printf("Cannot copy folder %s as duplicate has been found. Please check that a filter folder of same name doesnt exist.\n", destfolders[x].getLastFolder().c_str()); return -3; } } } for (size_t x=0; x<size; x++) { res = processFolder(folders[x], destfolders[x], shouldConvertFn); if (res != 0) return res; } return 0; }
void lmcMessaging::processMessage(MessageHeader* pHeader, XmlMessage* pMessage) { QString msgId; QString data = QString::null; XmlMessage reply; lmcTrace::write("Processing message type " + QString::number(pHeader->type) + " from user " + pHeader->userId); switch(pHeader->type) { case MT_UserData: if(pMessage->data(XN_QUERYOP) == QueryOpNames[QO_Get]) sendUserData(pHeader->type, QO_Result, &pHeader->userId, &pHeader->address); // add the user only after sending back user data, this way both parties will have added each other addUser(pMessage->data(XN_USERID), pMessage->data(XN_VERSION), pMessage->data(XN_ADDRESS), pMessage->data(XN_NAME), pMessage->data(XN_STATUS), QString::null, pMessage->data(XN_NOTE), pMessage->data(XN_USERCAPS)); break; case MT_Broadcast: emit messageReceived(pHeader->type, &pHeader->userId, pMessage); break; case MT_Status: data = pMessage->data(XN_STATUS); updateUser(pHeader->type, pHeader->userId, data); break; case MT_UserName: data = pMessage->data(XN_NAME); updateUser(pHeader->type, pHeader->userId, data); break; case MT_Note: data = pMessage->data(XN_NOTE); updateUser(pHeader->type, pHeader->userId, data); break; case MT_Message: // add message to received message list if(addReceivedMsg(pHeader->id, pHeader->userId)) { emit messageReceived(pHeader->type, &pHeader->userId, pMessage); } // send an acknowledgement msgId = QString::number(pHeader->id); reply.addData(XN_MESSAGEID, msgId); sendMessage(MT_Acknowledge, &pHeader->userId, &reply); break; case MT_GroupMessage: emit messageReceived(pHeader->type, &pHeader->userId, pMessage); break; case MT_PublicMessage: emit messageReceived(pHeader->type, &pHeader->userId, pMessage); break; case MT_Ping: // send an acknowledgement msgId = QString::number(pHeader->id); reply.addData(XN_MESSAGEID, msgId); sendMessage(MT_Acknowledge, &pHeader->userId, &reply); break; case MT_Query: // send a reply cum acknowledgement if its a 'get' query if(pMessage->data(XN_QUERYOP) == QueryOpNames[QO_Get]) { msgId = QString::number(pHeader->id); reply.addData(XN_MESSAGEID, msgId); reply.addData(XN_QUERYOP, QueryOpNames[QO_Result]); sendMessage(pHeader->type, &pHeader->userId, &reply); } else if(pMessage->data(XN_QUERYOP) == QueryOpNames[QO_Result]) { msgId = pMessage->data(XN_MESSAGEID); removePendingMsg(msgId.toLongLong()); // Add the path to the user's avatar image stored locally data = "avt_" + pHeader->userId + ".png"; data = QDir(StdLocation::cacheDir()).absoluteFilePath(data); pMessage->addData(XN_AVATAR, data); emit messageReceived(pHeader->type, &pHeader->userId, pMessage); } break; case MT_ChatState: emit messageReceived(pHeader->type, &pHeader->userId, pMessage); break; case MT_Acknowledge: // remove message from pending list msgId = pMessage->data(XN_MESSAGEID); removePendingMsg(msgId.toLongLong()); break; case MT_File: case MT_Avatar: processFile(pHeader, pMessage); break; case MT_Folder: processFolder(pHeader, pMessage); break; default: break; } lmcTrace::write("Message processing done"); }