MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / set_deadline_period

Method set_deadline_period

dds/DCPS/WriteDataContainer.cpp:1604–1651  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1602}
1603
1604void
1605WriteDataContainer::set_deadline_period(const TimeDuration& deadline_period)
1606{
1607 // Call comes from DataWriterImpl_t which should arleady have the lock_.
1608
1609 // Deadline for all instances starting from now.
1610 const MonotonicTimePoint deadline = MonotonicTimePoint::now() + deadline_period;
1611
1612 // Reset the deadline timer if the period has changed.
1613 if (deadline_period_ != deadline_period) {
1614 if (deadline_period_ == TimeDuration::max_value) {
1615 OPENDDS_ASSERT(deadline_map_.empty());
1616
1617 for (PublicationInstanceMapType::iterator iter = instances_.begin();
1618 iter != instances_.end();
1619 ++iter) {
1620 iter->second->deadline_ = deadline;
1621 deadline_map_.insert(std::make_pair(deadline, iter->second));
1622 }
1623
1624 if (!deadline_map_.empty()) {
1625 deadline_task_->schedule(deadline_period);
1626 }
1627 } else if (deadline_period == TimeDuration::max_value) {
1628 if (!deadline_map_.empty()) {
1629 deadline_task_->cancel();
1630 }
1631
1632 deadline_map_.clear();
1633 } else {
1634 DeadlineMapType new_map;
1635 for (PublicationInstanceMapType::iterator iter = instances_.begin();
1636 iter != instances_.end();
1637 ++iter) {
1638 iter->second->deadline_ = deadline;
1639 new_map.insert(std::make_pair(iter->second->deadline_, iter->second));
1640 }
1641 std::swap(new_map, deadline_map_);
1642
1643 if (!deadline_map_.empty()) {
1644 deadline_task_->cancel();
1645 deadline_task_->schedule(deadline_map_.begin()->first - MonotonicTimePoint::now());
1646 }
1647 }
1648
1649 deadline_period_ = deadline_period;
1650 }
1651}
1652
1653void
1654WriteDataContainer::process_deadlines(const MonotonicTimePoint& now)

Callers 2

set_qosMethod · 0.80
enableMethod · 0.80

Calls 8

swapFunction · 0.70
emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
insertMethod · 0.45
scheduleMethod · 0.45
cancelMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected