nfd::fw::ProcessNackTraitsBase Class Referenceabstract

provides a common procedure for processing Nacks More...

#include <daemon/fw/process-nack-traits.hpp>

+ Inheritance diagram for nfd::fw::ProcessNackTraitsBase:
+ Collaboration diagram for nfd::fw::ProcessNackTraitsBase:

Protected Member Functions

virtual ~ProcessNackTraitsBase ()=default
 
void processNack (const Face &inFace, const lp::Nack &nack, const shared_ptr< pit::Entry > &pitEntry)
 

Detailed Description

provides a common procedure for processing Nacks

This procedure works as follows:

  1. If Nacks have been received from all upstream faces, return a Nack with least severe reason to downstream faces.
  2. If there are more than one upstream face, Nacks have been received from all but one of them, and that face is also a downstream, return a Nack to that face. This is to address a specific "live deadlock" scenario where two hosts are waiting for each other to return the Nack.
  3. Otherwise, wait for the arrival of more Nacks or Data.

To use this helper, the strategy should inherit from ProcessNackTraits<MyStrategy>, and declare that specialization as a friend class. Then, invoke processNack from afterReceiveNack trigger.

Definition at line 49 of file process-nack-traits.hpp.

Constructor & Destructor Documentation

virtual nfd::fw::ProcessNackTraitsBase::~ProcessNackTraitsBase ( )
protectedvirtualdefault

Member Function Documentation

void nfd::fw::ProcessNackTraitsBase::processNack ( const Face &  inFace,
const lp::Nack &  nack,
const shared_ptr< pit::Entry > &  pitEntry 
)
protected

Definition at line 35 of file process-nack-traits.cpp.