INET Framework for OMNeT++/OMNEST
inet::IGMPv3::RouterInterfaceData Struct Reference

#include <IGMPv3.h>

Public Member Functions

 RouterInterfaceData (IGMPv3 *owner, InterfaceEntry *ie)
 
virtual ~RouterInterfaceData ()
 
RouterGroupDatagetOrCreateGroupData (IPv4Address group)
 
void deleteGroupData (IPv4Address group)
 

Public Attributes

IGMPv3owner
 
InterfaceEntryie
 
GroupToRouterDataMap groups
 
RouterState state
 
cMessage * generalQueryTimer
 

Constructor & Destructor Documentation

inet::IGMPv3::RouterInterfaceData::RouterInterfaceData ( IGMPv3 owner,
InterfaceEntry ie 
)

Referenced by inet::IGMPv3::createRouterInterfaceData().

283  : owner(owner), ie(ie)
284 {
285  ASSERT(owner);
286  ASSERT(ie);
287 
289  generalQueryTimer = new cMessage("IGMPv3 General Query timer", IGMPV3_R_GENERAL_QUERY_TIMER);
290  generalQueryTimer->setContextPointer(this);
291 }
IGMPv3 * owner
Definition: IGMPv3.h:152
RouterState state
Definition: IGMPv3.h:155
InterfaceEntry * ie
Definition: IGMPv3.h:153
Definition: IGMPv3.h:45
cMessage * generalQueryTimer
Definition: IGMPv3.h:156
inet::IGMPv3::RouterInterfaceData::~RouterInterfaceData ( )
virtual
294 {
295  owner->cancelAndDelete(generalQueryTimer);
296 
297  for (auto & elem : groups)
298  delete elem.second;
299 }
IGMPv3 * owner
Definition: IGMPv3.h:152
GroupToRouterDataMap groups
Definition: IGMPv3.h:154
cMessage * generalQueryTimer
Definition: IGMPv3.h:156

Member Function Documentation

void inet::IGMPv3::RouterInterfaceData::deleteGroupData ( IPv4Address  group)

Referenced by inet::IGMPv3::processRouterGroupTimer(), and inet::IGMPv3::processRouterSourceTimer().

315 {
316  auto it = groups.find(group);
317  if (it != groups.end()) {
318  RouterGroupData *data = it->second;
319  groups.erase(it);
320  delete data;
322  owner->numGroups--;
323  }
324 }
IGMPv3 * owner
Definition: IGMPv3.h:152
int numGroups
Definition: IGMPv3.h:194
GroupToRouterDataMap groups
Definition: IGMPv3.h:154
int numRouterGroups
Definition: IGMPv3.h:196
IGMPv3::RouterGroupData * inet::IGMPv3::RouterInterfaceData::getOrCreateGroupData ( IPv4Address  group)

Referenced by inet::IGMPv3::processQuery(), and inet::IGMPv3::processReport().

302 {
303  auto it = groups.find(group);
304  if (it != groups.end())
305  return it->second;
306 
307  RouterGroupData *data = new RouterGroupData(this, group);
308  groups[group] = data;
309  owner->numGroups++;
311  return data;
312 }
IGMPv3 * owner
Definition: IGMPv3.h:152
int numGroups
Definition: IGMPv3.h:194
GroupToRouterDataMap groups
Definition: IGMPv3.h:154
int numRouterGroups
Definition: IGMPv3.h:196

Member Data Documentation

cMessage* inet::IGMPv3::RouterInterfaceData::generalQueryTimer
GroupToRouterDataMap inet::IGMPv3::RouterInterfaceData::groups

The documentation for this struct was generated from the following files: