INET Framework for OMNeT++/OMNEST
inet::PositionTable Class Reference

This class provides a mapping between node addresses and their positions. More...

#include <PositionTable.h>

Public Member Functions

 PositionTable ()
 
std::vector< L3AddressgetAddresses () const
 
bool hasPosition (const L3Address &address) const
 
Coord getPosition (const L3Address &address) const
 
void setPosition (const L3Address &address, const Coord &coord)
 
void removePosition (const L3Address &address)
 
void removeOldPositions (simtime_t timestamp)
 
void clear ()
 
simtime_t getOldestPosition () const
 

Private Types

typedef std::pair< simtime_t, CoordAddressToPositionMapValue
 
typedef std::map< L3Address, AddressToPositionMapValueAddressToPositionMap
 

Private Attributes

AddressToPositionMap addressToPositionMap
 

Friends

std::ostream & operator<< (std::ostream &o, const PositionTable &t)
 

Detailed Description

This class provides a mapping between node addresses and their positions.

Member Typedef Documentation

◆ AddressToPositionMap

◆ AddressToPositionMapValue

typedef std::pair<simtime_t, Coord> inet::PositionTable::AddressToPositionMapValue
private

Constructor & Destructor Documentation

◆ PositionTable()

inet::PositionTable::PositionTable ( )
inline
30 {}

Member Function Documentation

◆ clear()

void inet::PositionTable::clear ( )

◆ getAddresses()

std::vector< L3Address > inet::PositionTable::getAddresses ( ) const
15 {
16  std::vector<L3Address> addresses;
17  for (const auto& elem : addressToPositionMap)
18  addresses.push_back(elem.first);
19  return addresses;
20 }

Referenced by inet::Gpsr::findGreedyRoutingNextHop(), and inet::Gpsr::getPlanarNeighbors().

◆ getOldestPosition()

simtime_t inet::PositionTable::getOldestPosition ( ) const
61 {
62  simtime_t oldestPosition = SimTime::getMaxTime();
63  for (const auto& elem : addressToPositionMap) {
64  const simtime_t& time = elem.second.first;
65  if (time < oldestPosition)
66  oldestPosition = time;
67  }
68  return oldestPosition;
69 }

Referenced by inet::Gpsr::getNextNeighborExpiration().

◆ getPosition()

Coord inet::PositionTable::getPosition ( const L3Address address) const
28 {
29  auto it = addressToPositionMap.find(address);
30  return (it == addressToPositionMap.end()) ? Coord(NaN, NaN, NaN) : it->second.second;
31 }

Referenced by inet::Gpsr::findGreedyRoutingNextHop(), inet::Gpsr::getNeighborPosition(), inet::Gpsr::getPlanarNeighbors(), and inet::Gpsr::lookupPositionInGlobalRegistry().

◆ hasPosition()

bool inet::PositionTable::hasPosition ( const L3Address address) const
23 {
24  return containsKey(addressToPositionMap, address);
25 }

◆ removeOldPositions()

void inet::PositionTable::removeOldPositions ( simtime_t  timestamp)
46 {
47  for (auto it = addressToPositionMap.begin(); it != addressToPositionMap.end();)
48  if (it->second.first <= timestamp)
49  addressToPositionMap.erase(it++);
50  else
51  it++;
52 
53 }

Referenced by inet::Gpsr::purgeNeighbors().

◆ removePosition()

void inet::PositionTable::removePosition ( const L3Address address)
40 {
41  auto it = addressToPositionMap.find(address);
42  addressToPositionMap.erase(it);
43 }

◆ setPosition()

void inet::PositionTable::setPosition ( const L3Address address,
const Coord coord 
)
34 {
35  ASSERT(!address.isUnspecified());
36  addressToPositionMap[address] = AddressToPositionMapValue(simTime(), coord);
37 }

Referenced by inet::Gpsr::processBeacon(), and inet::Gpsr::storePositionInGlobalRegistry().

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  o,
const PositionTable t 
)
friend
72 {
73  o << "{ ";
74  for (auto elem : t.addressToPositionMap) {
75  o << elem.first << ":(" << elem.second.first << ";" << elem.second.second << ") ";
76  }
77  o << "}";
78  return o;
79 }

Member Data Documentation

◆ addressToPositionMap


The documentation for this class was generated from the following files:
inet::PositionTable::AddressToPositionMapValue
std::pair< simtime_t, Coord > AddressToPositionMapValue
Definition: PositionTable.h:25
inet::PositionTable::addressToPositionMap
AddressToPositionMap addressToPositionMap
Definition: PositionTable.h:27
NaN
#define NaN
Definition: INETMath.h:91
inet::containsKey
bool containsKey(const std::map< K, V, _C > &m, const Tk &a)
Definition: stlutils.h:80