WSF
WsfCommDatalinkLayer.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 2017 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 WSFCOMMDATALINKLAYER_HPP
13#define WSFCOMMDATALINKLAYER_HPP
14
15#include "wsf_export.h"
16
17#include <list>
18
19#include "WsfCommLayer.hpp"
20#include "WsfCommQueue.hpp"
21
22namespace wsf
23{
24namespace comm
25{
26
28{
29public:
30 DatalinkLayer() = default;
31 ~DatalinkLayer() override = default;
32
34
35 LayerImp* Clone() const override;
36 bool Initialize(double aSimTime) override { return true; }
37 bool ProcessInput(UtInput& aInput) override;
39
41
42 bool Receive(double aSimTime, Comm* aXmtrPtr, Message& aMessage, bool& aNotifyNextLayer) override;
43
44 bool Send(double aSimTime, size_t aLayerIndex, Message& aMessage, bool& aNotifyNextLayer) override;
46
48
49 bool ProcessLayerMessage(double aSimTime, layer::Message aLayerMessage, Message* aCommMessagePtr) override;
51
52protected:
53 DatalinkLayer(const DatalinkLayer& aSrc);
54
55 virtual bool AddToQueue(double aSimTime, Message& aMessage, size_t aPreviousAttempts = 0);
56
57 virtual bool ReadyToTransmit(double aSimTime);
58
59 virtual bool TransmitComplete(double aSimTime, Message* aMessagePtr);
60
61 virtual bool TransmitFailed(double aSimTime, Message* aMessagePtr);
62
63 virtual bool PurgeQueue(double aSimTime);
64
66 double mPurgeInterval{0.0};
68 double mReTransmitDelay{0.0};
69 size_t mCurTransmissions{0U};
70};
71
72} // namespace comm
73} // namespace wsf
74
75#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfComm.hpp:43
Definition WsfCommDatalinkLayer.hpp:28
double mPurgeInterval
The queue, where messages coming to this layer are placed.
Definition WsfCommDatalinkLayer.hpp:66
double mReTransmitDelay
How many transmissions attempts for each message.
Definition WsfCommDatalinkLayer.hpp:68
size_t mMaximumTransmitAttempts
How long in seconds a message can sit in the queue before being dropped.
Definition WsfCommDatalinkLayer.hpp:67
size_t mCurTransmissions
How long in seconds between retransmission attempts.
Definition WsfCommDatalinkLayer.hpp:69
bool Initialize(double aSimTime) override
Definition WsfCommDatalinkLayer.hpp:36
~DatalinkLayer() override=default
LayerImp * Clone() const override
Definition WsfCommDatalinkLayer.cpp:32
Queue mQueue
Definition WsfCommDatalinkLayer.hpp:65
A base class defining the interface for the implementation classes. (Implementor).
Definition WsfCommLayer.hpp:127
Definition WsfCommMessage.hpp:51
Definition WsfCommQueue.hpp:37
Definition WsfCommLayerMessage.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