12#ifndef WSFCOMMPROTOCOLIGMP_HPP
13#define WSFCOMMPROTOCOLIGMP_HPP
15#include "wsf_export.h"
17#include <unordered_set>
19#include "UtScriptBasicTypes.hpp"
67 void Setup()
override;
71 bool Initialize(
double aSimTime)
override;
72 bool ProcessInput(UtInput& aInput)
override;
84 virtual void LeaveGroup(
double aSimTime,
const Address& aAddress);
85 virtual void JoinGroup(
double aSimTime,
const Address& aAddress);
91 ProcessResult NetworkSend(
double aSimTime,
size_t aLayerIndex,
Message& aMessage)
override;
92 ProcessResult NetworkReceive(
double aSimTime,
size_t aLayerIndex,
Message& aMessage)
override;
93 ProcessResult PhysicalReceive(
double aSimTime,
size_t aLayerIndex,
Message& aMessage)
override;
96 std::vector<Address>
GetGroups()
const {
return mJoinGroups; }
117 void LeaveGroup(
const Address& aAddress);
121 std::vector<Address> mJoinGroups{};
145 EventType aEventType,
147 const Address& aMulticastGroupAddress);
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_COMM_PROTOCOL_IGMP
Definition WsfComponentRoles.hpp:122
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfComponent.hpp:39
EventDisposition
Definition WsfEvent.hpp:37
Definition WsfRandomVariable.hpp:33
@ cNON_NEGATIVE
Value must be greater than or equal to zero.
Definition WsfRandomVariable.hpp:50
Definition WsfCommAddress.hpp:57
Definition WsfComm.hpp:43
An event class for handling join/leave multicast delays.
Definition WsfCommProtocolIGMP.hpp:136
IGMP_SubscriptionEvent(double aSimTime, EventType aEventType, const Address &aCommAddress, const Address &aMulticastGroupAddress)
Definition WsfCommProtocolIGMP.cpp:431
EventDisposition Execute() override
Definition WsfCommProtocolIGMP.cpp:443
EventType
Definition WsfCommProtocolIGMP.hpp:139
~IGMP_SubscriptionEvent() override=default
Definition WsfCommMessage.hpp:51
Definition WsfCommProtocolIGMP.hpp:52
static ProtocolIGMP * Find(const Comm &aParent)
Definition WsfCommProtocolIGMP.cpp:34
static ProtocolIGMP * FindOrCreate(Comm &aParent)
Definition WsfCommProtocolIGMP.cpp:41
const char * GetScriptClassName() const override
Definition WsfCommProtocolIGMP.hpp:68
void Setup() override
Definition WsfCommProtocolIGMP.cpp:125
ProtocolIGMP * Clone() const override
Definition WsfCommProtocolIGMP.cpp:71
~ProtocolIGMP() override=default
std::vector< Address > GetGroups() const
Definition WsfCommProtocolIGMP.hpp:96
Address GetMessageAddressFromAux(Message &aMessage)
Definition WsfCommProtocolIGMP.cpp:413
const int * GetComponentRoles() const override
Definition WsfCommProtocolIGMP.cpp:60
void JoinGroup(const Address &aAddress)
Definition WsfCommProtocolIGMP.hpp:116
WsfComponent * CloneComponent() const override
Definition WsfCommProtocolIGMP.cpp:54
ProtocolPriority GetPriority() const override
Definition WsfCommProtocolIGMP.cpp:96
void * QueryInterface(int aRole) override
Definition WsfCommProtocolIGMP.cpp:77
ProtocolInterface()=default
~ScriptProtocolClassIGMP() override=default
UT_DECLARE_SCRIPT_METHOD(JoinMulticastGroup)
UT_DECLARE_SCRIPT_METHOD(LeaveMulticastGroup)
ScriptProtocolClassIGMP(const std::string &aClassName, UtScriptTypes *aTypesPtr)
Definition WsfCommProtocolIGMP.cpp:461
ScriptProtocolClass(const std::string &aClassName, UtScriptTypes *aTypesPtr)
Definition WsfCommProtocolInterface.cpp:20
std::vector< Address > AddressList
Definition WsfCommGraph.hpp:36
Definition WsfComm.cpp:34
ProtocolPriority
Definition WsfCommProtocolPriority.hpp:25
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
A simple data structure to hold routing data.
Definition WsfCommProtocolIGMP.hpp:101
graph::AddressList mFullPath
Definition WsfCommProtocolIGMP.hpp:105
double mCost
Definition WsfCommProtocolIGMP.hpp:104
size_t mHops
Definition WsfCommProtocolIGMP.hpp:103
std::unordered_set< Address > mDestinationSet
Definition WsfCommProtocolIGMP.hpp:106
Address mNextHop
Definition WsfCommProtocolIGMP.hpp:102