12#ifndef WSFCOMMROUTER_HPP
13#define WSFCOMMROUTER_HPP
15#include "wsf_export.h"
19#include "UtCallbackHolder.hpp"
72 Comm* mXmtrPtr{
nullptr};
73 std::vector<Message> mMessages{};
74 bool mAbortProcessing{
false};
115 virtual bool Receive(
double aSimTime,
Comm* aXmtrPtr,
Comm* aRcvrPtr,
Message& aMessage,
bool& aOverrideForward);
117 virtual bool Send(
double aSimTime, SendData& aData);
121 Router* Clone()
const override;
131 void* QueryInterface(
int aRole)
override;
132 const int* GetComponentRoles()
const override;
139 bool PreInitialize(
double aSimTime)
override;
140 bool Initialize(
double aSimTime)
override;
141 bool Initialize2(
double aSimTime)
override;
142 void PreInput()
override;
143 virtual void Setup();
144 virtual void PendingStart();
145 bool ProcessInput(UtInput& aInput)
override;
146 virtual bool ProcessTypeAddEditDelete(UtInput& aInput);
147 const char* GetScriptClassName()
const override;
152 void PartBroken(
double aSimTime)
override;
153 void SetNonOperational(
double aSimTime)
override;
154 void SetOperational(
double aSimTime)
override;
155 void TurnOff(
double aSimTime)
override;
156 void TurnOn(
double aSimTime)
override;
168 virtual void AddInterface(
double aSimTime,
Comm* aCommPtr);
169 void AddInterface(
double aSimTime,
const Address& aAddress);
170 virtual void RemoveInterface(
double aSimTime,
Comm* aCommPtr);
171 void RemoveInterface(
double aSimTime,
const Address& aAddress);
172 bool HasInterface(
Comm* aCommPtr)
const;
173 bool HasInterface(
const Address& aAddress)
const;
181 bool IsActive()
const;
184 virtual void InitializeCallbacks();
197 virtual bool AddLink(
double aSimTime,
201 bool aNotifyObserver =
true);
203 virtual bool RemoveLink(
double aSimTime,
207 bool aNotifyObserver =
true);
209 virtual bool AddNode(
double aSimTime,
const Address& aNodeAddress,
ProtocolInterface& aProtocol,
bool aNotifyObserver =
true);
212 RemoveNode(
double aSimTime,
const Address& aNodeAddress,
ProtocolInterface& aProtocol,
bool aNotifyObserver =
true);
214 virtual bool EnableLink(
double aSimTime,
218 bool aNotifyObserver =
true);
220 virtual bool DisableLink(
double aSimTime,
224 bool aNotifyObserver =
true);
236 void SetGateway(
const Address& aAddress);
323 UtCallbackHolder mCallbacks;
332 bool mAutomatedInterfaceLinking;
335 bool mUseLegacyProtocol;
338 bool mUseMulticastProtocol;
@ cWSF_INITIALIZE_ORDER_ROUTER
Definition WsfComponentRoles.hpp:175
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_COMM_ROUTER
A 'router' component (WsfCommRouter).
Definition WsfComponentRoles.hpp:103
@ cWSF_COMPONENT_COMM_MEDIUM_CONTAINER_ROUTER
Definition WsfComponentRoles.hpp:130
wsf::comm::router::Router Router
Definition WsfScriptCommRouterClass.cpp:27
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
A component list that stores only components of a specified type.
Definition WsfComponentList.hpp:343
Definition WsfComponent.hpp:39
WsfStringId GetNameId() const
Definition WsfObject.hpp:66
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfCommAddress.hpp:57
Definition WsfComm.hpp:43
Definition WsfCommMessage.hpp:51
Definition WsfCommNetworkManager.hpp:44
Definition WsfCommNetwork.hpp:51
Definition WsfCommRouterProtocolInterface.hpp:33
Definition WsfCommRouterComponent.hpp:38
Definition WsfCommRouter.hpp:60
void SetXmtr(Comm *aXmtrPtr)
Definition WsfCommRouter.hpp:66
virtual ~SendData()=default
std::vector< Message > & GetMessages()
Definition WsfCommRouter.hpp:67
Comm * GetXmtr() const
Definition WsfCommRouter.hpp:65
bool GetAbortProcessing() const
Definition WsfCommRouter.hpp:68
void SetAbortProcessing(bool aAbort)
Definition WsfCommRouter.hpp:69
Definition WsfCommRouter.hpp:55
Router(Router &&aSrc)=delete
Router * Clone() const override
Definition WsfCommRouter.cpp:94
virtual void PerfectConnectionDisabled(double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress)
Definition WsfCommRouter.cpp:1154
double GetUpdateInterval() const override
Definition WsfCommRouter.hpp:162
WsfComponent * CloneComponent() const override
Definition WsfCommRouter.hpp:130
Router & operator=(Router &&aRhs)=delete
Router(const WsfScenario &aScenario)
Definition WsfCommRouter.cpp:45
virtual void PerfectConnectionEnabled(double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress)
Definition WsfCommRouter.cpp:1135
virtual void PerfectCommRemoved(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouter.cpp:1004
virtual bool ValidateGateway()
Definition WsfCommRouter.cpp:1322
virtual void PerfectCommDisabled(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouter.cpp:1078
int GetComponentInitializationOrder() const override
Definition WsfCommRouter.hpp:134
size_t GetHopLimit() const
Definition WsfCommRouter.hpp:237
NetworkManager * GetNetworkManager() const
Definition WsfCommRouter.hpp:238
const Address & GetGateway() const
Definition WsfCommRouter.hpp:235
const CommVector & GetInterfaces() const
Definition WsfCommRouter.hpp:175
virtual void PerfectConnectionAdded(double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress)
Definition WsfCommRouter.cpp:1097
std::vector< ProtocolInterface * > GetSortedProtocols() const
Definition WsfCommRouter.cpp:819
WsfComponentListT< WsfComponentT< Router > > ComponentList
Definition WsfCommRouter.hpp:82
virtual void PerfectCommAdded(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouter.cpp:985
virtual void PerfectNetworkAdded(double aSimTime, Network *aNetworkPtr)
Definition WsfCommRouter.cpp:1023
Router & operator=(const Router &aRhs)=delete
ComponentList & GetComponents()
Definition WsfCommRouter.hpp:83
virtual void PerfectConnectionRemoved(double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress)
Definition WsfCommRouter.cpp:1116
const ComponentList & GetComponents() const
Definition WsfCommRouter.hpp:84
virtual bool AutomateAddedLinkage(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouter.cpp:1287
virtual void PerfectCommEnabled(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouter.cpp:1059
std::vector< Comm * > CommVector
Definition WsfCommRouter.hpp:78
virtual void PerfectNetworkRemoved(double aSimTime, Network *aNetworkPtr)
Definition WsfCommRouter.cpp:1041
void SetHopLimit(size_t aHopLimit)
Definition WsfCommRouter.hpp:240
void SetUpdateInterval(double aInterval) override
Definition WsfCommRouter.hpp:161
~Router() override=default
void ClearInterfaces()
Definition WsfCommRouter.hpp:174
WsfStringId GetComponentName() const override
Definition WsfCommRouter.hpp:133
virtual bool Broadcast(double aSimTime, SendData &aData)
Definition WsfCommRouter.cpp:740
Definition WsfComm.hpp:36
Definition WsfComm.cpp:34
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfCommRouter.hpp:248
std::string mGatewayCommName
Definition WsfCommRouter.hpp:250
Address mAddress
Definition WsfCommRouter.hpp:249
Gateway(const Gateway &aSrc)=default