This commit is contained in:
Mathieu Lacage
2009-04-17 09:59:54 +02:00
parent 970779ab0e
commit dbf5feba29
4 changed files with 33 additions and 51 deletions

View File

@@ -71,39 +71,34 @@ AarfWifiManager::~AarfWifiManager ()
WifiRemoteStation *
AarfWifiManager::CreateStation (void)
{
return new AarfWifiRemoteStation (this, m_minTimerThreshold,
m_minSuccessThreshold,
m_successK,
m_maxSuccessThreshold,
m_timerK);
return new AarfWifiRemoteStation (this);
}
AarfWifiRemoteStation::AarfWifiRemoteStation (Ptr<AarfWifiManager> stations,
uint32_t minTimerThreshold,
uint32_t minSuccessThreshold,
double successK,
uint32_t maxSuccessThreshold,
double timerK)
: ArfWifiRemoteStation (stations, minTimerThreshold, minSuccessThreshold),
m_successK (successK),
m_maxSuccessThreshold (maxSuccessThreshold),
m_timerK (timerK)
AarfWifiRemoteStation::AarfWifiRemoteStation (Ptr<AarfWifiManager> manager)
: ArfWifiRemoteStation (manager),
m_manager (manager)
{}
AarfWifiRemoteStation::~AarfWifiRemoteStation ()
{}
Ptr<WifiRemoteStationManager>
AarfWifiRemoteStation::GetManager (void) const
{
return m_manager;
}
void
AarfWifiRemoteStation::ReportRecoveryFailure (void)
{
SetSuccessThreshold ((int)(Min (GetSuccessThreshold () * m_successK,
m_maxSuccessThreshold)));
SetSuccessThreshold ((int)(Min (GetSuccessThreshold () * m_manager->m_successK,
m_manager->m_maxSuccessThreshold)));
SetTimerTimeout ((int)(Max (GetMinTimerTimeout (),
GetSuccessThreshold () * m_timerK)));
GetSuccessThreshold () * m_manager->m_timerK)));
}
void

View File

@@ -17,8 +17,8 @@
*
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
*/
#ifndef AARF_MAC_STATIONS_H
#define AARF_MAC_STATIONS_H
#ifndef AARF_WIFI_MANAGER_H
#define AARF_WIFI_MANAGER_H
#include "arf-wifi-manager.h"
@@ -39,6 +39,7 @@ public:
AarfWifiManager ();
virtual ~AarfWifiManager ();
private:
friend class AarfWifiRemoteStation;
virtual class WifiRemoteStation *CreateStation (void);
uint32_t m_minTimerThreshold;
uint32_t m_minSuccessThreshold;
@@ -50,24 +51,18 @@ private:
class AarfWifiRemoteStation : public ArfWifiRemoteStation
{
public:
AarfWifiRemoteStation (Ptr<AarfWifiManager> stations,
uint32_t minTimerThreshold,
uint32_t minSuccessThreshold,
double successK,
uint32_t maxSuccessThreshold,
double timerK);
AarfWifiRemoteStation (Ptr<AarfWifiManager> stations);
virtual ~AarfWifiRemoteStation ();
private:
virtual void ReportRecoveryFailure (void);
virtual void ReportFailure (void);
virtual Ptr<WifiRemoteStationManager> GetManager (void) const;
double m_successK;
uint32_t m_maxSuccessThreshold;
double m_timerK;
Ptr<AarfWifiManager> m_manager;
};
} // namespace ns3
#endif /* AARF_MAC_STATIONS_H */
#endif /* AARF_WIFI_MANAGER_H */

View File

@@ -28,15 +28,11 @@ NS_LOG_COMPONENT_DEFINE ("ns3::ArfWifiManager");
namespace ns3 {
ArfWifiRemoteStation::ArfWifiRemoteStation (Ptr<ArfWifiManager> stations,
int minTimerTimeout,
int minSuccessThreshold)
: m_stations (stations)
ArfWifiRemoteStation::ArfWifiRemoteStation (Ptr<ArfWifiManager> manager)
: m_manager (manager)
{
m_minTimerTimeout = minTimerTimeout;
m_minSuccessThreshold = minSuccessThreshold;
m_successThreshold = m_minSuccessThreshold;
m_timerTimeout = m_minTimerTimeout;
m_successThreshold = m_manager->m_successThreshold;
m_timerTimeout = m_manager->m_timerThreshold;
m_rate = GetMinRate ();
m_success = 0;
@@ -189,11 +185,11 @@ void ArfWifiRemoteStation::ReportFailure (void)
{}
uint32_t ArfWifiRemoteStation::GetMinTimerTimeout (void)
{
return m_minTimerTimeout;
return m_manager->m_timerThreshold;
}
uint32_t ArfWifiRemoteStation::GetMinSuccessThreshold (void)
{
return m_minSuccessThreshold;
return m_manager->m_successThreshold;
}
uint32_t ArfWifiRemoteStation::GetTimerTimeout (void)
{
@@ -205,18 +201,18 @@ uint32_t ArfWifiRemoteStation::GetSuccessThreshold (void)
}
void ArfWifiRemoteStation::SetTimerTimeout (uint32_t timerTimeout)
{
NS_ASSERT (timerTimeout >= m_minTimerTimeout);
NS_ASSERT (timerTimeout >= m_manager->m_timerThreshold);
m_timerTimeout = timerTimeout;
}
void ArfWifiRemoteStation::SetSuccessThreshold (uint32_t successThreshold)
{
NS_ASSERT (successThreshold >= m_minSuccessThreshold);
NS_ASSERT (successThreshold >= m_manager->m_successThreshold);
m_successThreshold = successThreshold;
}
Ptr<WifiRemoteStationManager>
ArfWifiRemoteStation::GetManager (void) const
{
return m_stations;
return m_manager;
}
NS_OBJECT_ENSURE_REGISTERED (ArfWifiManager);
@@ -247,7 +243,7 @@ ArfWifiManager::~ArfWifiManager ()
WifiRemoteStation *
ArfWifiManager::CreateStation (void)
{
return new ArfWifiRemoteStation (this, m_timerThreshold, m_successThreshold);
return new ArfWifiRemoteStation (this);
}
} // namespace ns3

View File

@@ -46,6 +46,7 @@ public:
virtual ~ArfWifiManager ();
private:
friend class ArfWifiRemoteStation;
virtual class WifiRemoteStation *CreateStation (void);
uint32_t m_timerThreshold;
uint32_t m_successThreshold;
@@ -55,9 +56,7 @@ private:
class ArfWifiRemoteStation : public WifiRemoteStation
{
public:
ArfWifiRemoteStation (Ptr<ArfWifiManager> stations,
int minTimerTimeout,
int minSuccessThreshold);
ArfWifiRemoteStation (Ptr<ArfWifiManager> manager);
virtual ~ArfWifiRemoteStation ();
protected:
@@ -85,10 +84,7 @@ private:
uint32_t m_rate;
uint32_t m_minTimerTimeout;
uint32_t m_minSuccessThreshold;
Ptr<ArfWifiManager> m_stations;
Ptr<ArfWifiManager> m_manager;
private:
// overriden by AarfMacStation.