INET Framework for OMNeT++/OMNEST
inet::Igmpv3::HostInterfaceData Struct Reference

#include <Igmpv3.h>

Public Member Functions

 HostInterfaceData (Igmpv3 *owner, NetworkInterface *ie)
 
virtual ~HostInterfaceData ()
 
HostGroupDatagetOrCreateGroupData (Ipv4Address group)
 
void deleteGroupData (Ipv4Address group)
 

Public Attributes

Igmpv3owner
 
NetworkInterfaceie
 
GroupToHostDataMap groups
 
cMessage * generalQueryTimer
 

Friends

std::ostream & operator<< (std::ostream &out, const Igmpv3::HostInterfaceData &entry)
 

Constructor & Destructor Documentation

◆ HostInterfaceData()

inet::Igmpv3::HostInterfaceData::HostInterfaceData ( Igmpv3 owner,
NetworkInterface ie 
)
1231  : owner(owner), ie(ie)
1232 {
1233  ASSERT(owner);
1234  ASSERT(ie);
1235 
1236  generalQueryTimer = new cMessage("Igmpv3 Host General Timer", IGMPV3_H_GENERAL_QUERY_TIMER);
1237  generalQueryTimer->setContextPointer(this);
1238 }

◆ ~HostInterfaceData()

inet::Igmpv3::HostInterfaceData::~HostInterfaceData ( )
virtual
1241 {
1242  owner->cancelAndDelete(generalQueryTimer);
1243 
1244  for (auto& elem : groups)
1245  delete elem.second;
1246 }

Member Function Documentation

◆ deleteGroupData()

void inet::Igmpv3::HostInterfaceData::deleteGroupData ( Ipv4Address  group)
1262 {
1263  auto it = groups.find(group);
1264  if (it != groups.end()) {
1265  HostGroupData *data = it->second;
1266  groups.erase(it);
1267  delete data;
1268  owner->numHostGroups--;
1269  owner->numGroups--;
1270  }
1271 }

◆ getOrCreateGroupData()

Igmpv3::HostGroupData * inet::Igmpv3::HostInterfaceData::getOrCreateGroupData ( Ipv4Address  group)
1249 {
1250  auto it = groups.find(group);
1251  if (it != groups.end())
1252  return it->second;
1253 
1254  HostGroupData *data = new HostGroupData(this, group);
1255  groups[group] = data;
1256  owner->numGroups++;
1257  owner->numHostGroups++;
1258  return data;
1259 }

Referenced by inet::Igmpv3::multicastSourceListChanged(), and inet::Igmpv3::processQuery().

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
const Igmpv3::HostInterfaceData entry 
)
friend
105  {
106  for (auto& g : entry.groups) {
107  out << "(groupAddress: " << g.second->groupAddr << " ";
108  out << "hostGroupState: " << Igmpv3::getHostGroupStateString(g.second->state) << " ";
109  out << "groupTimer: " << g.second->timer->getArrivalTime() << " ";
110  out << "queriedSources: ";
111  for (auto& entry : g.second->queriedSources)
112  out << entry << ", ";
113  out << "sourceAddressList: ";
114  for (auto& entry : g.second->sourceAddressList)
115  out << entry << ", ";
116  out << "filter: " << Igmpv3::getFilterModeString(g.second->filter) << ") ";
117  }
118 
119  return out;
120  }

Member Data Documentation

◆ generalQueryTimer

cMessage* inet::Igmpv3::HostInterfaceData::generalQueryTimer

◆ groups

GroupToHostDataMap inet::Igmpv3::HostInterfaceData::groups

◆ ie

◆ owner

Igmpv3* inet::Igmpv3::HostInterfaceData::owner

Referenced by HostInterfaceData().


The documentation for this struct was generated from the following files:
inet::Igmpv3::HostInterfaceData::generalQueryTimer
cMessage * generalQueryTimer
Definition: Igmpv3.h:98
inet::Igmpv3::IGMPV3_H_GENERAL_QUERY_TIMER
@ IGMPV3_H_GENERAL_QUERY_TIMER
Definition: Igmpv3.h:71
inet::units::units::g
milli< kg >::type g
Definition: Units.h:1071
inet::Igmpv3::numHostGroups
int numHostGroups
Definition: Igmpv3.h:213
inet::Igmpv3::getFilterModeString
static const std::string getFilterModeString(FilterMode fm)
Definition: Igmpv3.cc:1431
inet::Igmpv3::HostInterfaceData::ie
NetworkInterface * ie
Definition: Igmpv3.h:95
inet::Igmpv3::getHostGroupStateString
static const std::string getHostGroupStateString(HostGroupState hgs)
Definition: Igmpv3.cc:1419
inet::Igmpv3::HostInterfaceData::groups
GroupToHostDataMap groups
Definition: Igmpv3.h:97
inet::Igmpv3::numGroups
int numGroups
Definition: Igmpv3.h:212
inet::Igmpv3::HostInterfaceData::owner
Igmpv3 * owner
Definition: Igmpv3.h:94