#include <WsfCommRouterProtocolInterface.hpp>
|
If a protocol uses a graph representation, this method should return it for operations. Not all protocols have this functionality, and should return a nullptr on the GetGraph function if that is the case. The ShouldPropagateTruth function provides whether or not the router should push updates from the truth representation (the network manager) to this protocol during updates (otherwise it is up to the protocol or direct user input do accomplish this).
|
| virtual bool | ShouldPropagateTruth () const=0 |
| virtual graph::Graph * | GetGraph () const=0 |
| virtual int | GetPriority () const=0 |
| virtual std::vector< Address > | Routing (double aSimTime, const Address &aSendingInterface, size_t &aHopNumber, double &aCost, const Message &aMessage)=0 |
|
The send and receive methods for the routing protocol provide hooks into querying each protocol for router message processing.
The send method is queried, allowing the protocol to process the the message prior to a transmission. By default, this method returns true with no additional message processing. Returning false indicates an issue with this protocol not being able to process this message transmission, upon which the router will attempt the same process for other available protocols (if applicable). This method also allows the protocol to conduct internal bookkeeping when messages are sent.
The receive method is called when an interface receives a message. If the destination address of the message isn't natively mapped to the receiving interface, a protocol may use a different addressing schema (such as in multicast groups). This method also allows the protocol to conduct internal bookkeeping when messages are received. This method returns true to indicate the message is intended for the current receiving interface, false if not. Any given protocol that returns false will allow other, lower priority protocols, an attempt to process this message after returning false.
|
| virtual bool | Send (double aSimTime, Router::SendData &aData) |
| virtual bool | Receive (double aSimTime, const Address &aReceivingInterface, Message &aMessage, bool &aOverrideForward) |
|
Some protocols may wish to take implementation defined actions based on truth state updates in the simulation via the Network Manager. These methods may be overridden, and are called during the applicable event from the router.
|
| virtual void | PerfectCommAdded (double aSimTime, Comm *aCommPtr) |
| virtual void | PerfectCommRemoved (double aSimTime, Comm *aCommPtr) |
| virtual void | PerfectNetworkAdded (double aSimTime, Network *aNetworkPtr) |
| virtual void | PerfectNetworkRemoved (double aSimTime, Network *aNetworkPtr) |
| virtual void | PerfectCommEnabled (double aSimTime, Comm *aCommPtr) |
| virtual void | PerfectCommDisabled (double aSimTime, Comm *aCommPtr) |
| virtual void | PerfectConnectionAdded (double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress) |
| virtual void | PerfectConnectionRemoved (double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress) |
| virtual void | PerfectConnectionEnabled (double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress) |
| virtual void | PerfectConnectionDisabled (double aSimTime, const Address &aSourceAddress, const Address &aDestinationAddress) |
◆ ProtocolInterface()
◆ ~ProtocolInterface()
◆ Clone()
Return a copy of this object. Must be implemented by all derived types. If cloning is impossible, a WsfUncloneableException should be thrown.
Implements WsfObject.
◆ CloneComponent()
Clones a component. May return null if component does not support clone.
Implements WsfComponent.
◆ GetComponentName()
|
|
inlinefinaloverridevirtual |
Returns the component's name. Each component in a component list has a unique name. Names are usually defined by the user, but they may also be generated by code and prefixed with a '#' to guarantee no collisions with user-defined names.
Implements WsfComponent.
◆ GetComponentRoles()
Returns a zero-terminated array of component roles. Note that the array should be in decreasing order of specificity and should generally the inheritance hierarchy. The first entry should be the components 'primary' role. For example a sensor would do the following:
return roles;
@ cWSF_COMPONENT_SENSOR
A 'sensor' component (WsfSensor).
Definition WsfComponentRoles.hpp:105
@ cWSF_COMPONENT_PLATFORM_PART
The component derives from WsfPlatformPart.
Definition WsfComponentRoles.hpp:98
@ cWSF_COMPONENT_ARTICULATED_PART
The component derives from WsfArticulatedPart.
Definition WsfComponentRoles.hpp:99
Implements WsfComponent.
◆ GetGraph()
◆ GetPriority()
Required query for protocol priority. Protocols are evaluated in order based on their assigned priorities. A lower value indicates a higher priority.
◆ GetScriptClassName()
◆ Initialize()
Perform phase 1 initialization. This is called by WsfPlatform::Initialize() during phase 1 initialization of the platform. The component should complete validation of input data that could not be done by ProcessInput, as well as any other functions to prepare for simulation use (subject to the next paragraph).
The order in which components are initialized is defined by GetComponentInitializationOrder. In general a component implementation of this method should not be dependent on the state of another component, i.e.: it should not assume that the other components Initialize() method has been called. If such a dependency exists one should use Initialize2() if possible, or specify a value GetComponentInitializationOrder to force things to initialize in a particular order.
- Parameters
-
| aSimTime | The current simulation time. |
- Returns
- true if successful or false if unsuccessful (bad input data, etc.)
- Note
- This method should NOT add any other components to the platform. This MUST be done in PreInitialize().
Reimplemented from WsfComponent.
◆ operator<()
| bool wsf::comm::router::ProtocolInterface::operator< |
( |
const ProtocolInterface & | aRhs | ) |
const |
|
inline |
◆ PerfectCommAdded()
◆ PerfectCommDisabled()
◆ PerfectCommEnabled()
◆ PerfectCommRemoved()
◆ PerfectConnectionAdded()
◆ PerfectConnectionDisabled()
◆ PerfectConnectionEnabled()
◆ PerfectConnectionRemoved()
◆ PerfectNetworkAdded()
◆ PerfectNetworkRemoved()
◆ ProcessInput()
Evaluate the current input command and determine if it is one processed by the component. The component should get the current command from the input stream and determine if it is one that it recognizes. If it does not recognize the command then it should leave the command in the input stream and return false. If it does recognize the command then it should process the command and return true. If invalid arguments are encountered then it should throw an exception.
- Parameters
-
- Returns
- true if the current command was recognized (and processed), or false if the command was not recognized.
- Exceptions
-
| UtInput::ExceptionBase | if an invalid input was encountered. |
Reimplemented from WsfComponent.
◆ QueryInterface()
Requests a component's role interface. A component can support one or more roles.
- Parameters
-
| aRole | The role whose interface is to be returned. |
- Returns
- A pointer to the object if it supports the indicated role, or 'null' if it does not. Usage: WsfProcessor* procPtrOrNull = (WsfProcessor*)componentPtr->QueryComponentInterface(cWSF_COMPONENT_PROCESSOR);
Implements WsfComponent.
◆ Receive()
◆ Routing()
The routing method is used by the router to determine the route based on the protocol defined routing algorithm. A return of an empty vector indicates that no path was found. The router will utilize any of its available interfaces to find a valid path.
◆ Send()
◆ ShouldPropagateTruth()
The documentation for this class was generated from the following file: