WSF
WsfXIO_TrackRequest.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 2003-2015 The Boeing 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 WSFXIO_TRACKREQUEST_HPP
13#define WSFXIO_TRACKREQUEST_HPP
14
15#include "wsf_export.h"
16
17#include "GenUniqueId.hpp"
18#include "WsfStringId.hpp"
23
27{
28public:
31 WsfXIO_TrackRequest(int aRemotePlatformIndex, WsfXIO_Connection* aConnectionPtr, bool aIsReliable = true);
32
35 void SetSensorName(WsfStringId aSensorName) { mSensorNameId = aSensorName; }
36
38
42
45 void SetRequiredData(int aRequiredData) { mRequiredData = aRequiredData; }
46
49 virtual void Handle(const WsfXIO_RawTrackPkt& aPkt) {}
50 virtual void Handle(const WsfXIO_LocalTrackPkt& aPkt) {}
51 virtual void Handle(const WsfXIO_TrackDropPkt& aPkt) {}
52
54 int GetPlatformIndex() const { return mRemotePlatformIndex; }
55
56 void SetUpdateInterval(double aUpdateInterval, bool aRealTime);
57 void HandleResponse(WsfXIO_ResponsePkt& aPkt) override;
58
60 bool IsGlobalRequest() const { return mSensorNameId == nullptr && mUpdateInterval == 0; }
61
62protected:
63 void Initialized() override;
64
71};
72
73
76{
77public:
78 typedef std::pair<GenUniqueId, int> TargetId;
79
81
82 void AddRequest(WsfXIO_TrackRequest* aRequestPtr);
83 void RemoveRequest(WsfXIO_TrackRequest* aRequestPtr);
84 void RemoveRequest(int aRequestId);
85 void RemoveRequest(GenUniqueId& aAppId, int aPlatformIndex);
86
87protected:
88 WsfXIO_TrackRequest* FindRequest(GenUniqueId& aAppId, int aPlatformIndex);
89
90 template<typename T>
91 void ForwardPacket(T& aPkt)
92 {
93 WsfXIO_TrackRequest* requestPtr = FindRequest(aPkt.mApplicationId, aPkt.mPlatformIndex);
94 if (requestPtr != nullptr)
95 {
96 requestPtr->Handle(aPkt);
97 }
98 }
99
100 void RequestCancelled(WsfXIO_Request* aRequestPtr) override;
101
102 void HandleRawTrack(WsfXIO_RawTrackPkt& aPkt);
103 void HandleLocalTrack(WsfXIO_LocalTrackPkt& aPkt);
104 void HandleDropTrack(WsfXIO_TrackDropPkt& aPkt);
105
106 typedef std::map<TargetId, WsfXIO_TrackRequest*> RequestMap;
108};
109
110#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfXIO_Connection.hpp:37
Definition WsfXIO_Interface.hpp:54
A local track.
Definition WsfXIO_PacketRegistry.hpp:268
A raw track.
Definition WsfXIO_PacketRegistry.hpp:281
WsfXIO_RequestManager(WsfXIO_Interface *aInterfacePtr)
Definition WsfXIO_Request.cpp:23
Definition WsfXIO_Request.hpp:81
virtual void HandleResponse(WsfXIO_ResponsePkt &aPkt)
Definition WsfXIO_Request.hpp:87
virtual void Initialized()=0
WsfXIO_Request(WsfXIO_Connection *aConnectionPtr, bool aIsReliable=true)
Definition WsfXIO_Request.cpp:160
Definition WsfXIO_PacketRegistry.hpp:171
Notification of a track drop.
Definition WsfXIO_PacketRegistry.hpp:316
void ForwardPacket(T &aPkt)
Definition WsfXIO_TrackRequest.hpp:91
WsfXIO_TrackRequestManager(WsfXIO_Interface *aInterfacePtr)
Definition WsfXIO_TrackRequest.cpp:17
void AddRequest(WsfXIO_TrackRequest *aRequestPtr)
Definition WsfXIO_TrackRequest.cpp:37
std::map< TargetId, WsfXIO_TrackRequest * > RequestMap
Definition WsfXIO_TrackRequest.hpp:106
void RemoveRequest(WsfXIO_TrackRequest *aRequestPtr)
Definition WsfXIO_TrackRequest.cpp:59
RequestMap mRequests
Definition WsfXIO_TrackRequest.hpp:107
std::pair< GenUniqueId, int > TargetId
Definition WsfXIO_TrackRequest.hpp:78
WsfXIO_TrackRequest * FindRequest(GenUniqueId &aAppId, int aPlatformIndex)
Definition WsfXIO_TrackRequest.cpp:78
Definition WsfXIO_TrackRequest.hpp:27
int GetPlatformIndex() const
Returns the index of platform whose tracks this object is requesting.
Definition WsfXIO_TrackRequest.hpp:54
WsfStringId mSensorNameId
Definition WsfXIO_TrackRequest.hpp:68
WsfXIO_TrackRequest(int aRemotePlatformIndex, WsfXIO_Connection *aConnectionPtr, bool aIsReliable=true)
Definition WsfXIO_TrackRequest.cpp:115
void SetSensorName(WsfStringId aSensorName)
Definition WsfXIO_TrackRequest.hpp:35
virtual void Handle(const WsfXIO_RawTrackPkt &aPkt)
Definition WsfXIO_TrackRequest.hpp:49
int mRequiredData
Definition WsfXIO_TrackRequest.hpp:66
WsfStringId GetSensorName() const
Definition WsfXIO_TrackRequest.hpp:37
double mUpdateInterval
Definition WsfXIO_TrackRequest.hpp:69
bool mRealTime
Definition WsfXIO_TrackRequest.hpp:70
bool IsGlobalRequest() const
Returns 'true' if this request will be serviced with undirected responses. Used internally.
Definition WsfXIO_TrackRequest.hpp:60
void EnableSendInitialTracks()
Definition WsfXIO_TrackRequest.hpp:41
virtual void Handle(const WsfXIO_TrackDropPkt &aPkt)
Definition WsfXIO_TrackRequest.hpp:51
virtual void Handle(const WsfXIO_LocalTrackPkt &aPkt)
Definition WsfXIO_TrackRequest.hpp:50
bool mSendInitialTracks
Definition WsfXIO_TrackRequest.hpp:67
void SetRequiredData(int aRequiredData)
Definition WsfXIO_TrackRequest.hpp:45
int mRemotePlatformIndex
Definition WsfXIO_TrackRequest.hpp:65
Copyrights Multiple, All Rights Reserved