83 lines
2.4 KiB
C++
83 lines
2.4 KiB
C++
#include "frer-base-recovery-function.h"
|
|
|
|
#include "ns3/log.h"
|
|
|
|
namespace ns3
|
|
{
|
|
|
|
NS_LOG_COMPONENT_DEFINE("BaseRecoveryFunction");
|
|
|
|
NS_OBJECT_ENSURE_REGISTERED(BaseRecoveryFunction);
|
|
|
|
TypeId
|
|
BaseRecoveryFunction::GetTypeId()
|
|
{
|
|
static TypeId tid =
|
|
TypeId("ns3::BaseRecoveryFunction")
|
|
.SetParent<Object>()
|
|
.SetGroupName("tsn")
|
|
.AddConstructor<BaseRecoveryFunction>()
|
|
.AddAttribute("ResetTimer",
|
|
"Reset timer duration for recovery algorithm",
|
|
TimeValue(MilliSeconds(10000)),
|
|
MakeTimeAccessor(&BaseRecoveryFunction::m_frerSeqRcvyResetMSec),
|
|
MakeTimeChecker())
|
|
.AddAttribute("MinResetTimer",
|
|
"Min reset timer duration for recovery algorithm",
|
|
TimeValue(Seconds(0)),
|
|
MakeTimeAccessor(&BaseRecoveryFunction::m_frerMinSeqRcvyResetMSec),
|
|
MakeTimeChecker())
|
|
.AddAttribute("MaxResetTimer",
|
|
"Max reset timer duration for recovery algorithm",
|
|
TimeValue(Seconds(65535)),
|
|
MakeTimeAccessor(&BaseRecoveryFunction::m_frerMaxSeqRcvyResetMSec),
|
|
MakeTimeChecker());
|
|
return tid;
|
|
}
|
|
|
|
|
|
BaseRecoveryFunction::BaseRecoveryFunction()
|
|
{
|
|
NS_LOG_FUNCTION(this);
|
|
}
|
|
|
|
BaseRecoveryFunction::~BaseRecoveryFunction()
|
|
{
|
|
NS_LOG_FUNCTION(this);
|
|
}
|
|
|
|
|
|
uint
|
|
BaseRecoveryFunction::GetFrerCpsSeqRcvyPassedPackets()
|
|
{
|
|
NS_LOG_FUNCTION(this);
|
|
return m_frerCpsSeqRcvyPassedPackets;
|
|
}
|
|
|
|
uint
|
|
BaseRecoveryFunction::GetFrerCpsSeqRcvyDiscardedPackets()
|
|
{
|
|
NS_LOG_FUNCTION(this);
|
|
return m_frerCpsSeqRcvyDiscardedPackets;
|
|
}
|
|
|
|
|
|
bool
|
|
BaseRecoveryFunction::DoRecovery(uint16_t seqNumber)
|
|
{
|
|
NS_LOG_FUNCTION(this);
|
|
NS_ASSERT_MSG(m_frerSeqRcvyResetMSec >= m_frerMinSeqRcvyResetMSec, "Trying to use a shorter recovery reset timer than " << m_frerMinSeqRcvyResetMSec << ".");
|
|
NS_ASSERT_MSG(m_frerSeqRcvyResetMSec <= m_frerMaxSeqRcvyResetMSec, "Trying to use a longer recovery reset timer than " << m_frerMaxSeqRcvyResetMSec << ".");
|
|
return false;
|
|
}
|
|
|
|
void
|
|
BaseRecoveryFunction::resetRecoveryFunction()
|
|
{
|
|
NS_LOG_FUNCTION(this);
|
|
NS_LOG_INFO("Reset FRER recovery function !");
|
|
m_takeAny = true;
|
|
}
|
|
|
|
}
|