示例#1
0
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
}
示例#2
0
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
示例#3
0
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);
}
示例#4
0
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;
}
示例#5
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");
}