本文整理汇总了C++中Flow::getStart方法的典型用法代码示例。如果您正苦于以下问题:C++ Flow::getStart方法的具体用法?C++ Flow::getStart怎么用?C++ Flow::getStart使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Flow
的用法示例。
在下文中一共展示了Flow::getStart方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: startNewRound
void Scheduler::startNewRound() {
// update flows so that they can be moved to the new round
std::vector<Flow*> flowVec;
while (pendingEvents.empty() == false) {
Flow* f = const_cast<Flow*> (pendingEvents.top());
pendingEvents.pop();
if (f->getFlowType() == FlowType::WATCH) {
// there is no point in carrying over watch flows, as they will be discarded
BOOST_LOG_TRIVIAL(trace) << "Deleting watch flow for chunk" << f->getChunkId()
<< " of content " << f->getContent()->getName() << " for user "
<< f->getDestination().first << "," << f->getDestination().second;
delete f;
continue;
}
f->updateSizeDownloaded(this->roundDuration);
f->setLastUpdate(0);
f->setStart(f->getStart() - this->roundDuration); // negative
SimTime oldEta = f->getEta();
if (oldEta < this->roundDuration) {
BOOST_LOG_TRIVIAL(error) << "Scheduler::startNewRound() - unresolved event has eta "
<< oldEta << " < roundDuration";
abort();
}
f->setEta(oldEta - this->roundDuration);
if (this->mode == IPTV && f->getContent()->getReleaseDay() <= currentRound-6) {
// expired contents in IPTV will be deleted so flows can't be completed,
// this event should have been truncated last round
BOOST_LOG_TRIVIAL(info) << "Scheduler::startNewRound() - carried over flow "
"with expired content will not be completed";
if (f->getFlowType() == FlowType::TRANSFER) {
// this is hacky, but needs to be done. Ideally we should not get here at all.
oracle->getTopology()->updateCapacity(f, this, false);
f->setContent(nullptr);
}
} else
flowVec.push_back(f);
}
handleMap.clear();
BOOST_FOREACH (Flow* f, flowVec) {
this->schedule(f);
}