20 const std::string
KDiagName(
"DiagTimeoutHandler");
22 using namespace boost::posix_time;
26 uint8_t proto, uint16_t sport, uint16_t dport,
27 const std::string &vrf_name,
int timeout,
31 proto_(proto), sport_(sport), dport_(dport),
32 vrf_name_(vrf_name), diag_table_(diag_table), timeout_(timeout),
33 timer_(
TimerManager::CreateTimer(*(diag_table->agent()->event_manager())->io_service(),
37 max_attempts_(attempts), seq_no_(0) {
134 assert(
tree_.size() == 0);
149 DiagEntryTree::const_iterator it;
151 it =
tree_.find(key);
152 if (it ==
tree_.end()) {
156 return static_cast<DiagEntry *
>(it->second);
164 std::size_t seed = 0;
165 boost::hash_combine(seed,
sip_.to_v4().to_ulong());
166 boost::hash_combine(seed,
dip_.to_v4().to_ulong());
167 boost::hash_combine(seed,
proto_);
168 boost::hash_combine(seed,
sport_);
169 boost::hash_combine(seed,
dport_);
174 const boost::posix_time::ptime &time) {
180 boost::posix_time::ptime
181 epoch(boost::gregorian::date(1970, boost::gregorian::Jan, 1));
182 boost::posix_time::time_duration td = time - epoch;
192 vxlan_tlv->
sip_ = htonl(
sip_.to_v4().to_ulong());
199 memcpy(vxlan_tlv->
sip_,
sip_.to_v6().to_bytes().data(), 16);
uint32_t GetMaxAttempts()
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
void Shutdown(bool delete_entries=true)
const std::string KDiagName("DiagTimeoutHandler")
boost::asio::ip::address IpAddress
static const std::string kDiagData
virtual void RequestTimedOut(uint32_t seq_no)=0
DiagEntry(const std::string &sip, const std::string &dip, uint8_t proto, uint16_t sport, uint16_t dport, const std::string &vrf_name, int timeout, int count, DiagTable *diag_table)
int GetTaskId(const std::string &name)
void FillOamPktHeader(OverlayOamPktData *pktdata, uint32_t vxlan_id, const boost::posix_time::ptime &time)
WorkQueue< DiagEntryOp * > * entry_op_queue_
static TaskScheduler * GetInstance()
EventManager * event_manager() const
virtual void SendRequest()=0
virtual bool ResendOnTimerExpiry()
uint32_t HashValUdpSourcePort()
bool Start(int time, Handler handler, ErrorHandler error_handler=NULL)
boost::scoped_ptr< DiagProto > diag_proto_
virtual void SendSummary()
void Enqueue(DiagEntryOp *op)
bool TimerExpiry(uint32_t seqno)
bool Process(DiagEntryOp *op)
DiagEntry * Find(DiagEntry::DiagKey &key)
bool Enqueue(QueueEntryT entry)
void EnqueueForceDelete()
void set_name(const std::string &name)
static bool DeleteTimer(Timer *Timer)