WSF
WsfCommRouterProtocolInterface.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2019 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFCOMMROUTERPROTOCOLINTERFACE_HPP
13#define WSFCOMMROUTERPROTOCOLINTERFACE_HPP
14
15#include "wsf_export.h"
16
17#include "UtScriptTypes.hpp"
18#include "WsfCommGraph.hpp"
19#include "WsfCommMessage.hpp"
21#include "WsfCommRouter.hpp"
23#include "WsfObject.hpp"
24
25namespace wsf
26{
27namespace comm
28{
29namespace router
30{
31
33{
34public:
35 ProtocolInterface() = default;
36 ~ProtocolInterface() override = default;
37 const char* GetScriptClassName() const override { return "WsfCommRouterProtocol"; }
38
40
41 WsfComponent* CloneComponent() const override = 0;
42 WsfStringId GetComponentName() const override final { return GetNameId(); }
43 const int* GetComponentRoles() const override = 0;
44 void* QueryInterface(int aRole) override = 0;
46
48
49 ProtocolInterface* Clone() const override = 0;
51
53
54 bool Initialize(double aSimTime) override { return true; }
55 bool ProcessInput(UtInput& aInput) override { return false; }
57
59
60 bool operator<(const ProtocolInterface& aRhs) const { return GetPriority() < aRhs.GetPriority(); }
62
73
74 virtual bool ShouldPropagateTruth() const = 0;
75 virtual graph::Graph* GetGraph() const = 0;
77
82 virtual int GetPriority() const = 0;
83
90 virtual std::vector<Address> Routing(double aSimTime,
91 const Address& aSendingInterface,
92 size_t& aHopNumber,
93 double& aCost,
94 const Message& aMessage) = 0;
95
119
120 virtual bool Send(double aSimTime, Router::SendData& aData) { return false; }
121
122 virtual bool Receive(double aSimTime, const Address& aReceivingInterface, Message& aMessage, bool& aOverrideForward)
123 {
124 return false;
125 }
126
127
133
134 virtual void PerfectCommAdded(double aSimTime, Comm* aCommPtr) {}
135 virtual void PerfectCommRemoved(double aSimTime, Comm* aCommPtr) {}
136 virtual void PerfectNetworkAdded(double aSimTime, Network* aNetworkPtr) {}
137 virtual void PerfectNetworkRemoved(double aSimTime, Network* aNetworkPtr) {}
138 virtual void PerfectCommEnabled(double aSimTime, Comm* aCommPtr) {}
139 virtual void PerfectCommDisabled(double aSimTime, Comm* aCommPtr) {}
140 virtual void PerfectConnectionAdded(double aSimTime, const Address& aSourceAddress, const Address& aDestinationAddress)
141 {
142 }
143 virtual void PerfectConnectionRemoved(double aSimTime, const Address& aSourceAddress, const Address& aDestinationAddress)
144 {
145 }
146 virtual void PerfectConnectionEnabled(double aSimTime, const Address& aSourceAddress, const Address& aDestinationAddress)
147 {
148 }
149 virtual void PerfectConnectionDisabled(double aSimTime, const Address& aSourceAddress, const Address& aDestinationAddress)
150 {
151 }
152
153};
154
156class WSF_EXPORT ScriptRouterProtocolClass : public UtScriptClass
157{
158public:
159 ScriptRouterProtocolClass(const std::string& aClassName, UtScriptTypes* aTypesPtr);
160
161 ~ScriptRouterProtocolClass() override = default;
162};
163
164} // namespace router
165} // namespace comm
166} // namespace wsf
167
169
170#endif
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_COMM_ROUTER_PROTOCOL
Definition WsfComponentRoles.hpp:123
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfComponent.hpp:39
WsfStringId GetNameId() const
Definition WsfObject.hpp:66
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
Definition WsfCommAddress.hpp:57
Definition WsfComm.hpp:43
Definition WsfCommMessage.hpp:51
Definition WsfCommNetwork.hpp:51
Definition WsfCommGraph.hpp:150
Definition WsfCommRouterProtocolInterface.hpp:33
virtual void PerfectConnectionDisabled(double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress)
Definition WsfCommRouterProtocolInterface.hpp:149
WsfComponent * CloneComponent() const override=0
virtual graph::Graph * GetGraph() const =0
bool operator<(const ProtocolInterface &aRhs) const
Definition WsfCommRouterProtocolInterface.hpp:60
virtual bool Receive(double aSimTime, const Address &aReceivingInterface, Message &aMessage, bool &aOverrideForward)
Definition WsfCommRouterProtocolInterface.hpp:122
WsfStringId GetComponentName() const override final
Definition WsfCommRouterProtocolInterface.hpp:42
virtual void PerfectNetworkRemoved(double aSimTime, Network *aNetworkPtr)
Definition WsfCommRouterProtocolInterface.hpp:137
ProtocolInterface * Clone() const override=0
virtual void PerfectCommAdded(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouterProtocolInterface.hpp:134
bool ProcessInput(UtInput &aInput) override
Definition WsfCommRouterProtocolInterface.hpp:55
virtual void PerfectCommRemoved(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouterProtocolInterface.hpp:135
virtual void PerfectConnectionEnabled(double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress)
Definition WsfCommRouterProtocolInterface.hpp:146
virtual int GetPriority() const =0
virtual bool ShouldPropagateTruth() const =0
const char * GetScriptClassName() const override
Definition WsfCommRouterProtocolInterface.hpp:37
virtual std::vector< Address > Routing(double aSimTime, const Address &aSendingInterface, size_t &aHopNumber, double &aCost, const Message &aMessage)=0
virtual void PerfectConnectionAdded(double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress)
Definition WsfCommRouterProtocolInterface.hpp:140
virtual void PerfectCommDisabled(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouterProtocolInterface.hpp:139
virtual bool Send(double aSimTime, Router::SendData &aData)
Definition WsfCommRouterProtocolInterface.hpp:120
void * QueryInterface(int aRole) override=0
const int * GetComponentRoles() const override=0
virtual void PerfectConnectionRemoved(double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress)
Definition WsfCommRouterProtocolInterface.hpp:143
virtual void PerfectCommEnabled(double aSimTime, Comm *aCommPtr)
Definition WsfCommRouterProtocolInterface.hpp:138
bool Initialize(double aSimTime) override
Definition WsfCommRouterProtocolInterface.hpp:54
virtual void PerfectNetworkAdded(double aSimTime, Network *aNetworkPtr)
Definition WsfCommRouterProtocolInterface.hpp:136
Definition WsfCommRouter.hpp:60
ScriptRouterProtocolClass(const std::string &aClassName, UtScriptTypes *aTypesPtr)
Definition WsfCommRouterProtocolInterface.cpp:22
Definition WsfComm.hpp:36
Definition WsfComm.cpp:34
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved