Beispiel #1
0
bool FileIntersect::processSortedFiles()
{
    // use the chromsweep algorithm to detect overlaps on the fly.
    NewChromSweep sweep(_context);

    if (!sweep.init()) {
    	return false;
    }
    if (!_recordOutputMgr->init(_context)) {
    	return false;
    }

    RecordKeyList hitSet;
    while (sweep.next(hitSet)) {
    	if (_context->getObeySplits()) {
    		RecordKeyList keySet(hitSet.getKey());
    		RecordKeyList resultSet(hitSet.getKey());
    		_blockMgr->findBlockedOverlaps(keySet, hitSet, resultSet);
    		processHits(resultSet);
    	} else {
    		processHits(hitSet);
    	}
    }
    return true;
}
AddrRange ModificationMap::getAddrRange() {
  if(isEmpty()) {
    return AddrRange();
  } else {
    const Set<__int64> set = keySet();
    return AddrRange(set.getMin(), set.getMax());
  }
}
Beispiel #3
0
void AudioPlayer::setMainWindow(MainWindow* mainWindow)
{
    mainWindow_ = mainWindow;
    Config& config = mainWindow_->getConfig();
    config.set("playback.replaygain", QVariant(replayGainToString(replaygain_)));
    config.set("playback.replaygain.preamp_with_rg", QVariant(preamp_with_rg_));
    config.set("playback.enqueue.onlyOnce", QVariant(queue_.enqueueOnlyOnce()));
    config.set("library.length_hack", QVariant(lengthHack_));
    QObject::connect(&config, SIGNAL(keySet(QString,QVariant)), this, SLOT(configChanged(QString,QVariant)));
}
Beispiel #4
0
void Server::onShakeHandleReq(const SessionPtr& conn, shared_ptr_Msg message)
{
	//得到这个连接是谁;
	std::shared_ptr<IMChat::shakeHandleReq> ptrRequest = std::dynamic_pointer_cast<IMChat::shakeHandleReq>(message);
	if (NULL != ptrRequest)
	{
		cout << ptrRequest->GetTypeName() << ":" << ptrRequest->userid() << endl;
		map<string, string> dataMap;
		string key("loginMap:");
		key += ptrRequest->userid();
		m_redis.HGetAll(key, dataMap);
		if (dataMap.size() != 0) //如果用户登陆则Map表不为空;
		{
			if (!m_redis.Exists("online:" + ptrRequest->userid()))
			{
				//向连接设置sessionId和userId;
				conn->set_SessionId(dataMap["sessionid"]);
				conn->set_userId(ptrRequest->userid());
				//向连接管理表添加信息;
				m_tcpserver.getConnection_Manager().userIdMap(ptrRequest->userid(), conn);
				//添加online:userid键值对;
				m_redis.Set("online:" + ptrRequest->userid(), m_strServerSocket);
				//找到用户所有的群;
				string keySet("groupSet:");
				keySet += ptrRequest->userid();
				vector<string> vecStr = m_redis.SMEMBERS(keySet);
				//对所有的群的onlineGroup:groupid添加成员;
				for (size_t i = 0; i < vecStr.size(); i++)
				{
					m_redis.SADD("onlineGroup:" + vecStr[i], ptrRequest->userid());
				}
				//publish online 消息;
				m_redis.Publish("online", ptrRequest->userid());
				//返回结果;
				IMChat::shakeHandleRes response;
				time_t nowtime;
				std::time(&nowtime);
				response.set_timestamp(nowtime);
				response.set_result(0);
				m_codec.Send(conn, response);
			}
		}
		else
		{
			//返回结果;
			IMChat::shakeHandleRes response;
			response.set_result(2);
			time_t nowtime;
			std::time(&nowtime);
			response.set_timestamp(nowtime);
			response.set_result(0);
			m_codec.Send(conn, response);
		}
	}
}
Beispiel #5
0
bool FileIntersect::processUnsortedFiles()
{
	const QuickString &databaseFilename = _context->getDatabaseFileName();
	BinTree *binTree = new BinTree(_context->getDatabaseFileIdx(), _context);

	FileRecordMgr *queryFRM = new FileRecordMgr(_context->getQueryFileIdx(), _context);
	if (!queryFRM->open()) {
		return false;
	}

	if (!binTree->loadDB()) {
		fprintf(stderr, "Error: Unable to load database file %s.\n", databaseFilename.c_str());
		delete binTree;
		exit(1);
	}


    _context->determineOutputType();
    _recordOutputMgr->init(_context);

	while (!queryFRM->eof()) {
		Record *queryRecord = queryFRM->allocateAndGetNextRecord();
		if (queryRecord == NULL) {
			continue;
		}
		RecordKeyList hitSet(queryRecord);
		binTree->getHits(queryRecord, hitSet);
    	if (_context->getObeySplits()) {
    		RecordKeyList keySet(hitSet.getKey());
    		RecordKeyList resultSet;
    		_blockMgr->findBlockedOverlaps(keySet, hitSet, resultSet);
    		processHits(resultSet);
    	} else {
    		processHits(hitSet);
    	}
		queryFRM->deleteRecord(queryRecord);
	}
	queryFRM->close();

	//clean up.
	delete queryFRM;
	delete binTree;
	return true;
}
Beispiel #6
0
bool FileMap::mapFiles()
{
    NewChromSweep sweep(_context);
    if (!sweep.init()) {
      return false;
    }
    RecordKeyList hitSet;
    while (sweep.next(hitSet)) {
    	if (_context->getObeySplits()) {
			RecordKeyList keySet(hitSet.getKey());
			RecordKeyList resultSet(hitSet.getKey());
			_blockMgr->findBlockedOverlaps(keySet, hitSet, resultSet);
			_recordOutputMgr->printRecord(resultSet.getKey(), _context->getColumnOpsVal(resultSet));
    	} else {
			_recordOutputMgr->printRecord(hitSet.getKey(), _context->getColumnOpsVal(hitSet));
		}
    }
    return true;
}
Beispiel #7
0
void IntersectFile::checkSplits(RecordKeyVector &hitSet)
{
	if (upCast(_context)->getObeySplits()) {
		RecordKeyVector keySet(hitSet.getKey());
		RecordKeyVector resultSet(hitSet.getKey());
		RecordKeyVector overlapSet(hitSet.getKey());
		upCast(_context)->getSplitBlockInfo()->findBlockedOverlaps(keySet, hitSet, resultSet, overlapSet);
		
		// when using coverage, we need a list of the sub-intervals of coverage
		// so that per-base depth can be properly calculated when obeying splits
		if (_context->getProgram() == ContextBase::COVERAGE)
		{
			hitSet.swap(overlapSet);
		}
		else {
			hitSet.swap(resultSet);
		}
	}
}
Beispiel #8
0
bool Fisher::getFisher() {
    NewChromSweep sweep(_context);
    if (!sweep.init()) {
        return false;
    }
    RecordKeyVector hitSet;
    while (sweep.next(hitSet)) {
        if (_context->getObeySplits()) {
            RecordKeyVector keySet(hitSet.getKey());
            RecordKeyVector resultSet(hitSet.getKey());
            _blockMgr->findBlockedOverlaps(keySet, hitSet, resultSet);
            _intersectionVal += getTotalIntersection(resultSet);
        } else {
            _intersectionVal += getTotalIntersection(hitSet);
        }
    }

    sweep.closeOut();
    _queryLen = sweep.getQueryTotalRecordLength();
    _dbLen = sweep.getDatabaseTotalRecordLength();

    _unionVal = _queryLen + _dbLen;
    return true;
}
Beispiel #9
0
bool Jaccard::getIntersectionAndUnion() {
	NewChromSweep sweep(_context);
	if (!sweep.init()) {
		return false;
	}
	RecordKeyList hitSet;
	while (sweep.next(hitSet)) {
		if (_context->getObeySplits()) {
			RecordKeyList keySet(hitSet.getKey());
			RecordKeyList resultSet(hitSet.getKey());
			_blockMgr->findBlockedOverlaps(keySet, hitSet, resultSet);
			_intersectionVal += getTotalIntersection(&resultSet);
		} else {
			_intersectionVal += getTotalIntersection(&hitSet);
		}
	}

	sweep.closeOut();
	unsigned long queryUnion = sweep.getQueryTotalRecordLength();
	unsigned long dbUnion = sweep.getDatabaseTotalRecordLength();

	_unionVal = queryUnion + dbUnion;
	return true;
}
Beispiel #10
0
MainWindow::MainWindow(AudioPlayer &player, QWidget *parent)
    : QMainWindow(parent),
      statusBar_(this),
      player_(player),
      cursorFollowsPlayback_(false),
      saveTabs_(false) {
    setupUi(this);
    // Not saving a pointer to this
    QActionGroup *playbackOrderGroup = new QActionGroup(this);
    playbackOrderGroup->addAction(defaultAction);
    playbackOrderGroup->addAction(randomAction);
    playbackOrderGroup->addAction(repeatTrackAction);
    playbackOrderGroup->addAction(repeatPlaylistAction);
    installEventFilter(this);

    player.setMainWindow(this);

    QObject::connect(&player_, SIGNAL(playbackOrderChanged(PlaybackOrder)), this,
                     SLOT(playbackOrderChanged(PlaybackOrder)));
    QObject::connect(&player_, SIGNAL(audioStateChanged(AudioState)), this,
                     SLOT(slotAudioStateChanged(AudioState)));
    QObject::connect(&player_, SIGNAL(trackPlaying(PTrack)), this, SLOT(updateUI(PTrack)));
    playbackOrderChanged(player.playbackOrder());

    QObject::connect(&player_, SIGNAL(tick(qint64)), this, SLOT(tick(qint64)));
    seekSlider_ = new SeekSlider(player_, this);
    volumeSlider_ = new QSlider(this);
    volumeSlider_->setOrientation(Qt::Horizontal);
    volumeSlider_->setMaximum(100);
    volumeSlider_->setMinimum(0);
    volumeSlider_->setValue(player_.volume() * 100);
    volumeSlider_->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
    QObject::connect(volumeSlider_, SIGNAL(valueChanged(int)), this, SLOT(volumeChanged(int)));
    mainToolBar->addWidget(seekSlider_);
    mainToolBar->addWidget(volumeSlider_);

    trayIcon_ = new QSystemTrayIcon(this);
    setTrayIcon(false);
    connect(trayIcon_, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this,
            SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
    trayIcon_->show();

    setStatusBar(&statusBar_);
    QObject::connect(&statusBar_, SIGNAL(statusBarDoubleClicked()), this,
                     SLOT(statusBarDoubleClicked()));

    lyricsDock_ = new QDockWidget("Lyrics", this);
    // Not setting an object name because we don't want save its state
    // since Qt doesn't restore it correctly
    //     lyricsDock_->setObjectName("LyricsDock");
    lyricsWidget_ = new QPlainTextEdit(lyricsDock_);
    //     lyricsWidget_->setObjectName("LyricsWidget");
    lyricsWidget_->setReadOnly(true);
    lyricsDock_->setWidget(lyricsWidget_);
    QObject::connect(lyricsDock_, SIGNAL(visibilityChanged(bool)), this,
                     SLOT(dockVisibilityChanged(bool)));

    //     playlistTabs->setTabsClosable(true);
    QObject::connect(playlistTabs, SIGNAL(tabCloseRequested(int)), this,
                     SLOT(removePlaylistTab(int)));
    QObject::connect(playlistTabs, SIGNAL(newTabRequested()), this, SLOT(newTabRequested()));

    QObject::connect(menu_File, SIGNAL(aboutToShow()), this, SLOT(menuFileAboutToShow()));

    setWindowIcon(QIcon(":/icon/logo22.png"));

    instance = this;

    console_ = new ConsoleWindow(this);
    QObject::connect(console_, SIGNAL(visibilityChanged(bool)), this,
                     SLOT(consoleVisibilityChanged(bool)));

    readSettings();

    config_.set("mainwindow.save_tabs", QVariant(saveTabs_));
    QObject::connect(&config_, SIGNAL(keySet(QString, QVariant)), this,
                     SLOT(configChanged(QString, QVariant)));

    setShortcuts();
}