VR-Link API Documentation for HLA 4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
baseTransferControlManager.h
Go to the documentation of this file.
1 #pragma once
2 
7 #include <map>
8 #include <list>
12 
13 class DtExerciseConn;
14 class DtStateRepository;
15 class DtRecordSetList;
16 
17 #ifdef DtDIS
18 typedef DtTransferControlRequestPduCb DtTransferControlInteractionCb;
19 typedef DtSetRecordPduCb DtSetRecordInteractionCb;
20 #endif
21 
23 {
25  void* userData;
26 };
27 
29 {
31  void* userData;
32 };
33 
35 {
37  void* userData;
38 };
39 
41 {
44  std::set<DtGlobalObjectDesignator> listOfTransferredObjects;
45 };
46 
48 {
49 public:
50 
52 
54 
56  virtual void addTransferControlNotificationCallback(DtTransferControlInteractionCb usrCallback, void* user);
58  virtual void addAcknowledgementNotificationCallback(DtAcknowledgeInteractionCb usrCallback, void* user);
60  virtual void addSetRecordNotificationCallback(DtSetRecordInteractionCb usrCallback, void* user);
61 
64  virtual void processTransferControlRequest(DtTransferControlInteraction* tci);
65 
68  virtual bool processAcknowledge(DtAcknowledgeInteraction* tci);
69 
71  virtual void processSetRecord(DtSetRecordInteraction* setRec);
72 
77  virtual void sendAcknowledgement(DtU32 requestIdentifier, bool approve, DtRecordSetList* recordSetList = nullptr, DtStateRepository* stateRepo = nullptr);
78 
80  virtual void sendSetRecord(DtEntityIdentifier originatingApplicationId, DtU32 requestIdentifier, DtRecordSetList* recordSetList, DtStateRepository* stateRepo);
81 
83  virtual unsigned int sendTransferControlRequest(DtTransferControlInteraction* tci);
84 
86  virtual unsigned int sendTransferControlRequest(DtEntityIdentifier receivingApplicationId, DtGlobalObjectDesignator transferredEntityId);
87 
90  virtual DtTransferControlInteraction* pendingOutgoingTransferRequest(DtU32 requestIdentifier);
91 
93  virtual bool getSetRecordTracker(DtU32 requestIdentifier, DtSetRecordTracker& tracker );
94 
96  virtual void sendEventReport(DtGlobalObjectDesignator identifier);
97 
99  virtual void sendSetRecordInteraction(DtU32 requestIdentifier) = 0;
100 
103  virtual void invokeNewAndLostObjectCallbacks() = 0;
104 
105  virtual DtU32 findRequestIdForObject(const DtGlobalObjectDesignator& objDesignator);
106 
107  virtual bool removeObjectFromTransferredSet(const DtGlobalObjectDesignator& objectDesignator, DtU32 requestId);
108 
109  virtual bool isTransferredSetEmpty(DtU32 requestIdentifier) const;
110 
111 public:
112 
114  static void transferControlRequestCallback(DtTransferControlInteraction* tci, void* user);
115 
117  static void acknowledgeCallback(DtAcknowledgeInteraction* ack, void* user);
119  static void setRecordCallback(DtSetRecordInteraction* setRec, void* user);
121  static void postDrainCallback(void* user);
122 
123 protected:
124 
126  virtual void addOutgoingTransferControlRequest(DtTransferControlInteraction* tci);
128  virtual void addIncomingTransferControlRequest(DtTransferControlInteraction* tci);
131  virtual void removeOutgoingTransferControlRequest(DtGlobalObjectDesignator identifier);
134  virtual void removeIncomingTransferControlRequest(DtGlobalObjectDesignator identifier);
135 
136 private:
139 
142 
143 protected:
144  //Pointer to the exercise connection
146 
147  //Callback lists
148  std::list<DtTransferControlCbInfo> myTransferControlNotificationCbList;
149  std::list<DtAcknowledgementCbInfo> myAcknowledgementNotificationCbList;
150  std::list<DtSetRecordCbInfo> mySetRecordNotificationList;
151 
152  //Incoming transfer control requests will stay in this map until an acknowledge is sent out
153  std::map<DtU32, DtTransferControlInteraction> myIncomingTransferControlRequests;
154  //Outgoing transfer control requests will stay in this map until an acknowledge is received.
155  std::map<DtU32, DtTransferControlInteraction> myOutgoingTransferControlRequests;
156 
157  //Map to track object names and their associated request identifiers.
158  std::map<DtGlobalObjectDesignator, DtU32> myObjectIdToRequestIdMap;
159 
160  //Map to track SetRecord counts for each request identifier. Allows VR-Link to know when all
161  //SetRecord messages for a particular transfer have been received.
162  std::map<DtU32, DtSetRecordTracker> mySetRecordTrackerMap;
163 
164  //Map of Request Identifiers and the set of related objects to transfer (DIGuy, EmitterBeams, etc)
165  std::map<DtU32, std::set<DtGlobalObjectDesignator>> myRequestIdToTransferredObjectListMap;
166 
167 };
DtTransferControlInteractionCb cbFunction
Definition: baseTransferControlManager.h:24
Instances of DtExerciseConn are used to provide an application&#39;s interface or connection to the netwo...
Definition: exerciseConnHLA.h:61
This file provides protocol independence for DtAcknowledgeInteraction.
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
std::map< DtU32, DtSetRecordTracker > mySetRecordTrackerMap
Definition: baseTransferControlManager.h:162
Definition: baseTransferControlManager.h:34
void(* DtSetRecordInteractionCb)(DtSetRecordInteraction *inter, void *user)
Definition: setRecordInteractionHLA.h:22
Instances of DtRecordSetList are lists of RecordSets.
Definition: vlpi/recordSetList.h:17
void * userData
Definition: baseTransferControlManager.h:25
void * userData
Definition: baseTransferControlManager.h:37
Definition: baseTransferControlManager.h:40
std::map< DtU32, std::set< DtGlobalObjectDesignator > > myRequestIdToTransferredObjectListMap
Definition: baseTransferControlManager.h:165
DtExerciseConn * myExConn
Definition: baseTransferControlManager.h:145
Definition: baseTransferControlManager.h:47
Definition: baseTransferControlManager.h:22
DtAcknowledgeInteractionCb cbFunction
Definition: baseTransferControlManager.h:30
std::map< DtU32, DtTransferControlInteraction > myOutgoingTransferControlRequests
Definition: baseTransferControlManager.h:155
int receivedNumberOfRecords
Definition: baseTransferControlManager.h:43
DtSetRecordInteractionCb cbFunction
Definition: baseTransferControlManager.h:36
Definition: baseTransferControlManager.h:28
DtStateRepository is an abstract base class for maintaining state for an object.
Definition: stateRepository.h:50
int totalNumberOfRecords
Definition: baseTransferControlManager.h:42
Instances of DtEntityIdentifier are used as a unique ID for entities in DIS.
Definition: entityIdentifier.h:31
Instances of DtAcknowledgeInteraction are used to represent Acknowledge Interactions in the RPR ROM...
Definition: acknowledgeInteractionHLA.h:34
std::list< DtTransferControlCbInfo > myTransferControlNotificationCbList
Definition: baseTransferControlManager.h:148
std::list< DtSetRecordCbInfo > mySetRecordNotificationList
Definition: baseTransferControlManager.h:150
std::set< DtGlobalObjectDesignator > listOfTransferredObjects
Definition: baseTransferControlManager.h:44
Definition: setRecordInteractionHLA.h:24
std::list< DtAcknowledgementCbInfo > myAcknowledgementNotificationCbList
Definition: baseTransferControlManager.h:149
void(* DtAcknowledgeInteractionCb)(DtAcknowledgeInteraction *inter, void *usr)
Acknowledge interaction callback function signature.
Definition: acknowledgeInteractionHLA.h:27
unsigned long DtU32
A 32 bit unsigned integer value.
Definition: vlMachineTypes.h:153
void * userData
Definition: baseTransferControlManager.h:31
Instances of DtString are used to represent strings.
Definition: vlString.h:36
std::map< DtU32, DtTransferControlInteraction > myIncomingTransferControlRequests
Definition: baseTransferControlManager.h:153
class DtTransferControlInteraction:
Definition: transferControlInteractionHLA.h:31
void(* DtTransferControlInteractionCb)(DtTransferControlInteraction *inter, void *user)
TransferControl interaction callback function signature.
Definition: transferControlInteractionHLA.h:24
std::map< DtGlobalObjectDesignator, DtU32 > myObjectIdToRequestIdMap
Definition: baseTransferControlManager.h:158

Document ID: Generated on Thu Oct 16 00:12:25 EDT 2025 from SVN revision 280738
Copyright © 1992-2025 MAK Technologies. All Rights Reserved (www.mak.com)