propagated-entry.cpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
26 #include "core/logger.hpp"
27 #include "propagated-entry.hpp"
28 
29 namespace nfd {
30 namespace rib {
31 
32 void
33 operator<<(std::ostream& out, PropagationStatus status)
34 {
35  switch (status) {
37  out << "NEW";
38  break;
40  out << "PROPAGATING";
41  break;
43  out << "PROPAGATED";
44  break;
46  out << "PROPAGATE_FAIL";
47  break;
48  default:
49  out << "undefined status";
50  break;
51  }
52 }
53 
55  : m_propagationStatus(PropagationStatus::NEW)
56 {
57 }
58 
60  : m_signingIdentity(other.m_signingIdentity)
61  , m_propagationStatus(other.m_propagationStatus)
62 {
63  BOOST_ASSERT(!other.isPropagated() && !other.isPropagateFail());
64 }
65 
68 {
69  m_signingIdentity = identity;
70  return *this;
71 }
72 
73 const Name&
75 {
76  return m_signingIdentity;
77 }
78 
79 void
81 {
82  m_propagationStatus = PropagationStatus::PROPAGATING;
83 }
84 
85 void
86 PropagatedEntry::succeed(const scheduler::EventId& event)
87 {
88  m_propagationStatus = PropagationStatus::PROPAGATED;
89  m_rePropagateEvent = event;
90 }
91 
92 void
93 PropagatedEntry::fail(const scheduler::EventId& event)
94 {
95  m_propagationStatus = PropagationStatus::PROPAGATE_FAIL;
96  m_rePropagateEvent = event;
97 }
98 
99 void
101 {
102  m_propagationStatus = PropagationStatus::NEW;
103  m_rePropagateEvent.cancel();
104 }
105 
106 bool
108 {
109  return PropagationStatus::NEW == m_propagationStatus;
110 }
111 
112 bool
114 {
115  return PropagationStatus::PROPAGATING == m_propagationStatus;
116 }
117 
118 bool
120 {
121  return PropagationStatus::PROPAGATED == m_propagationStatus;
122 }
123 
124 bool
126 {
127  return PropagationStatus::PROPAGATE_FAIL == m_propagationStatus;
128 }
129 
130 } // namespace rib
131 } // namespace nfd
bool isPropagateFail() const
check whether this entry has failed in propagating.
represents an entry for prefix propagation.
void startPropagation()
switch the propagation status to PROPAGATING.
std::ostream & operator<<(std::ostream &os, const FibUpdate &update)
Definition: fib-update.hpp:74
const Name & getSigningIdentity() const
get the signing identity
bool isPropagated() const
check whether this entry has been successfully propagated.
void initialize()
cancel the events of re-sending propagation commands.
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
Definition: algorithm.hpp:32
PropagatedEntry()
void fail(const scheduler::EventId &event)
switch the propagation status to PROPAGATE_FAIL, and then set the rePropagateEvent to event for retry...
void succeed(const scheduler::EventId &event)
switch the propagation status to PROPAGATED, and set the rePropagateEvent to event for refresh...
PropagatedEntry & setSigningIdentity(const Name &identity)
set the signing identity
bool isNew() const
check whether this entry is a new entry.
void cancel()
cancels the event manually
Definition: scheduler.cpp:95
has been propagated successfully
bool isPropagating() const
check whether this entry is being propagated.