MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rtiAmbassadorFedProBase.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2025 MAK Technologies
3 ** All rights reserved.
4 *********************************************************************/
5 
6 #pragma once
7 
8 #include <RTI/RTIambassador.h>
9 
10 #include <rtiutil/rtiMsConfig.h>
11 
14 
15 #include <vlutil/vlSmartPointers.h>
16 #include <vlutil/vlTime.h>
17 
18 #include <vector>
19 #include <set>
20 #include <queue>
21 
22 class DtTcpMsgSocket;
23 class DtMsgHeaderReader;
24 
25 namespace FedProSess
26 {
27  class DtCallResponseMessage;
28  class DtCallbackRequestMessage;
29  class DtHeartbeatResponseMessage;
30 };
31 
32 namespace rti1516_2025
33 {
34  class FederateAmbassador;
35 };
36 
37 namespace FedProWrap
38 {
40 
41  typedef std::string DtFedProHandle;
42 
44  {
45  RELIABLE = 1,
47  };
48 
54  {
55  public:
56 
59 
61  virtual ~DtRtiAmbassadorFedProBase();
62 
63  public:
64 
65  // The federate protocol "string" data is UTF8 in some cases converted from UTF16
66  // These functions convert between the two formats
67  static std::string wstringToString(const std::wstring& wstr);
68  static std::wstring stringToWstring(const std::string& str);
69 
70  protected:
71 
73  virtual bool initializeSession(rti1516_2025::FederateAmbassador& federateAmbassador);
74 
76  virtual void clearSession();
77 
79  virtual void terminateSession(MAKRti::DtTime waitInterval = 3.0);
80 
82  virtual bool reconnect();
83 
84  // Has connection and status is connected
85  virtual bool isConnected() const;
86 
88  template<class HandleType>
89  HandleType const& nameToHandle(std::map<std::wstring, HandleType> const& handleToNameMap, std::wstring const& handleName,
90  HandleType const& invalidHandle) const;
91 
93  template<class HandleType>
94  std::wstring const& handleToName(std::map<HandleType, std::wstring> const& nameToHandleMap, HandleType const& handle) const;
95 
97 
98  virtual rti1516_2025::ObjectClassHandle const& nameToObjectClassHandle(std::wstring const& name) const;
99  virtual std::wstring const& objectClassHandleToName(rti1516_2025::ObjectClassHandle const& handle) const;
100 
101  virtual rti1516_2025::ObjectInstanceHandle const& nameToObjectInstanceHandle(std::wstring const& name) const;
102  virtual std::wstring const& objectInstanceHandleToName(rti1516_2025::ObjectInstanceHandle const& handle) const;
103 
104  virtual rti1516_2025::AttributeHandle const& nameToAttributeHandle(rti1516_2025::ObjectClassHandle const& classHandle, std::wstring const& name) const;
105  virtual std::wstring const& attributeHandleToName(rti1516_2025::ObjectClassHandle const& classHandle, rti1516_2025::AttributeHandle const& attributeHandle) const;
106 
107  virtual rti1516_2025::InteractionClassHandle const& nameToInteractionClassHandle(std::wstring const& name) const;
108  virtual std::wstring const& interactionClassHandleToName(rti1516_2025::InteractionClassHandle const& handle) const;
109 
110  virtual rti1516_2025::ParameterHandle const& nameToParameterHandle(rti1516_2025::InteractionClassHandle const& classHandle, std::wstring const& name) const;
111  virtual std::wstring const& parameterHandleToName(rti1516_2025::InteractionClassHandle const& classHandle, rti1516_2025::ParameterHandle const& parameterHandle) const;
113 
115  template <class HandleType>
116  DtFedProHandle& convertToFedProHandle(HandleType const& rtiHandle, DtFedProHandle& fedProHandle) const;
117 
119 
120  virtual DtFedProHandle& convertToFedProFederateHandle(rti1516_2025::FederateHandle const& rtiHandle, DtFedProHandle& fedProHandle) const;
121  virtual DtFedProHandle& convertToFedProObjectClassHandle(rti1516_2025::ObjectClassHandle const& rtiHandle, DtFedProHandle& fedProHandle) const;
122  virtual DtFedProHandle& convertToFedProObjectInstanceHandle(rti1516_2025::ObjectInstanceHandle const& rtiHandle, DtFedProHandle& fedProHandle) const;
123  virtual DtFedProHandle& convertToFedProInteractionClassHandle(rti1516_2025::InteractionClassHandle const& rtiHandle, DtFedProHandle& fedProHandle) const;
124  virtual DtFedProHandle& convertToFedProAttributeHandle(rti1516_2025::AttributeHandle const& rtiHandle, DtFedProHandle& fedProHandle) const;
125  virtual DtFedProHandle& convertToFedProParameterHandle(rti1516_2025::ParameterHandle const& rtiHandle, DtFedProHandle& fedProHandle) const;
127 
129 
130  virtual rti1516_2025::FederateHandle convertToRtiFederateHandle(DtFedProHandle const& fedProHandle) const;
131  virtual rti1516_2025::ObjectClassHandle convertToRtiObjectClassHandle(DtFedProHandle const& fedProHandle) const;
132  virtual rti1516_2025::ObjectInstanceHandle convertToRtiObjectInstanceHandle(DtFedProHandle const& fedProHandle) const;
133  virtual rti1516_2025::InteractionClassHandle convertToRtiInteractionClassHandle(DtFedProHandle const& fedProHandle) const;
134  virtual rti1516_2025::AttributeHandle convertToRtiAttributeHandle(DtFedProHandle const& fedProHandle) const;
135  virtual rti1516_2025::ParameterHandle convertToRtiParameterHandle(DtFedProHandle const& fedProHandle) const;
137 
141  virtual int readAndProcess(MAKRti::DtTime maxTime = 0.0, MAKRti::DtTime minTime = 0.0);
142 
144 
145  virtual int sendMessage(FedProSess::DtFedproMessage& message);
147  virtual int sendMessage(FedProSess::DtFedproMessage* message);
149  virtual int resendMessage(FedProSess::DtFedproMessage* message);
151 
154  virtual FedProSess::DtFedproMessage* readMessage(MAKRti::DtTime waitInterval);
155 
159  virtual FedProSess::DtFedproMessage* pollForMessage(FedProSess::DtFedproMessage::MessageType messageType,
160  MAKRti::DtTime waitInterval);
161 
167  virtual int pollForCallResponse(unsigned long sequenceNumber, MAKRti::DtTime waitInterval,
169 
171  virtual void updateLastReceived(unsigned long sequenceNumber);
172 
174  virtual void processHeartbeatResponse(FedProSess::DtHeartbeatResponseMessage* heartbeatResponseMessage);
175 
178  virtual void processCallResponse(FedProSess::DtCallResponseMessage* callResponseMessage);
179 
181  virtual void processCallbackRequest(FedProSess::DtCallbackRequestMessage* callbackRequestMessage);
182 
185  virtual bool sendAndWait(rti1516_2025::fedpro::CallRequest const& callRequest, MAKRti::DtTime waitInterval,
187 
189 
190  virtual void bufferMessage(FedProSess::DtFedproMessage* message);
192 
195  virtual void clearBuffer(unsigned long lastReceived);
197 
198  protected:
199 
201 
204  std::shared_ptr<DtMsgHeaderReader> myHeaderReader;
205  MAKRti::DtClock myClock;
206 
207  unsigned long mySequenceNumber;
208  unsigned long mySessionId;
210  std::map<unsigned long, FedProSess::DtFedproMessage*> myMessageBuffer;
211  std::map<unsigned long, bool> myOldestSentMessage;
212  std::set <unsigned long> myReceivedNumbers;
213  MAKRti::DtTime myNextHeartbeat;
216  MAKRti::DtTime myHeartbeatTimeout;
218 
222  std::queue<FedProSess::DtCallbackRequestMessage*> myCallbackRequestQueue;
224  std::vector<char> myCallRequestBuffer;
225 
227  rti1516_2025::ObjectInstanceHandle myInvalidObjectInstanceHandle;
231  const std::wstring myUknownName;
232 
233  std::map<rti1516_2025::ObjectClassHandle, std::wstring> myObjectClassHandleToNameMap;
234  std::map<rti1516_2025::ObjectInstanceHandle, std::wstring> myObjectInstanceHandleToNameMap;
235  std::map<rti1516_2025::InteractionClassHandle, std::wstring> myInteractionClassHandleToNameMap;
236  std::map<rti1516_2025::ObjectClassHandle, std::map<rti1516_2025::AttributeHandle, std::wstring>> myAttributeHandleToNameMap;
237  std::map<rti1516_2025::InteractionClassHandle, std::map<rti1516_2025::ParameterHandle, std::wstring>> myParameterHandleToNameMap;
238 
239  std::map<std::wstring, rti1516_2025::ObjectClassHandle> myObjectClassNameToHandleMap;
240  std::map<std::wstring, rti1516_2025::ObjectInstanceHandle> myObjectInstanceNameToHandleMap;
241  std::map<std::wstring, rti1516_2025::InteractionClassHandle> myInteractionClassNameToHandleMap;
242  std::map<rti1516_2025::ObjectClassHandle, std::map<std::wstring, rti1516_2025::AttributeHandle>> myAttributeNameToHandleMap;
243  std::map<rti1516_2025::InteractionClassHandle, std::map<std::wstring, rti1516_2025::ParameterHandle>> myParameterNameToHandleMap;
244 
246  };
247 }
MAKRti::DtTime myHeartbeatTimeout
Definition: rtiAmbassadorFedProBase.h:216
std::map< rti1516_2025::InteractionClassHandle, std::wstring > myInteractionClassHandleToNameMap
Definition: rtiAmbassadorFedProBase.h:235
std::map< unsigned long, bool > myOldestSentMessage
Definition: rtiAmbassadorFedProBase.h:211
rti1516_2025::AttributeHandle myInvalidAttributeHandle
Definition: rtiAmbassadorFedProBase.h:228
rti1516_2025::ObjectInstanceHandle myInvalidObjectInstanceHandle
Definition: rtiAmbassadorFedProBase.h:227
#define DT_DLL_FEDPRO_WRAPPER
Definition: rtiMsConfig.h:158
CallResponseCase
Definition: RTIambassador.pb.h:56943
std::map< unsigned long, FedProSess::DtFedproMessage * > myMessageBuffer
Definition: rtiAmbassadorFedProBase.h:210
Definition: RTIambassador.pb.h:52845
std::map< rti1516_2025::InteractionClassHandle, std::map< rti1516_2025::ParameterHandle, std::wstring > > myParameterHandleToNameMap
Definition: rtiAmbassadorFedProBase.h:237
std::map< rti1516_2025::ObjectClassHandle, std::wstring > myObjectClassHandleToNameMap
Definition: rtiAmbassadorFedProBase.h:233
std::map< std::wstring, rti1516_2025::ObjectInstanceHandle > myObjectInstanceNameToHandleMap
Definition: rtiAmbassadorFedProBase.h:240
std::vector< char > myCallRequestBuffer
Definition: rtiAmbassadorFedProBase.h:224
Base class that provides infrastructure to support exchanging RTI Ambassador service call request mes...
Definition: rtiAmbassadorFedProBase.h:53
FedProSess::DtHeartbeatMessage myHeartbeatMessage
Definition: rtiAmbassadorFedProBase.h:215
friend DtFederateAmbassadorWrapper
Definition: rtiAmbassadorFedProBase.h:200
Definition: callbackRequestMessage.h:21
DtTcpMsgSocket * mySocket
Definition: rtiAmbassadorFedProBase.h:202
Definition: federateAmbassadorWrapper.h:25
ULong InteractionClassHandle
Definition: RTItypes13.h:106
std::map< rti1516_2025::InteractionClassHandle, std::map< std::wstring, rti1516_2025::ParameterHandle > > myParameterNameToHandleMap
Definition: rtiAmbassadorFedProBase.h:243
TransportationType
Definition: rtiAmbassadorFedProBase.h:43
Handle ParameterHandle
Definition: RTItypes13.h:114
Definition: rtiAmbassadorFedProBase.h:46
std::shared_ptr< DtMsgHeaderReader > myHeaderReader
Definition: rtiAmbassadorFedProBase.h:204
const rti1516_2025::ObjectClassHandle myInvalidObjectClassHandle
Definition: rtiAmbassadorFedProBase.h:226
The DtMsgHeaderReader class provides an interface to read data from the headers of messages...
Definition: msgHeaderReader.h:25
rti1516_2025::fedpro::CallResponse myCallResponse
Definition: rtiAmbassadorFedProBase.h:221
DtFederateAmbassadorWrapper * myFederateAmbassador
Definition: rtiAmbassadorFedProBase.h:245
int myServerPort
Definition: rtiAmbassadorFedProBase.h:203
rti1516_2025::ParameterHandle myInvalidParameterHandle
Definition: rtiAmbassadorFedProBase.h:230
std::map< rti1516_2025::ObjectInstanceHandle, std::wstring > myObjectInstanceHandleToNameMap
Definition: rtiAmbassadorFedProBase.h:234
std::string DtFedProHandle
Definition: rtiAmbassadorFedProBase.h:39
std::queue< FedProSess::DtCallbackRequestMessage * > myCallbackRequestQueue
Definition: rtiAmbassadorFedProBase.h:222
std::map< std::wstring, rti1516_2025::ObjectClassHandle > myObjectClassNameToHandleMap
Definition: rtiAmbassadorFedProBase.h:239
unsigned long myLastReceivedMessageNumber
Definition: rtiAmbassadorFedProBase.h:209
double myHeartbeatTimeoutPeriod
Definition: rtiAmbassadorFedProBase.h:217
The DtTcpMsgSocket class provides an address family independent TCP socket that handles RTI messages...
Definition: tcpMsgSocket.h:40
MAKRti::DtTime myNextHeartbeat
Definition: rtiAmbassadorFedProBase.h:213
Definition: heartbeatResponseMessage.h:11
An abstract base class which must be implemented, and used by a federate.
unsigned long mySessionId
Definition: rtiAmbassadorFedProBase.h:208
ULong FederateHandle
Definition: RTItypes13.h:120
std::map< std::wstring, rti1516_2025::InteractionClassHandle > myInteractionClassNameToHandleMap
Definition: rtiAmbassadorFedProBase.h:241
std::map< rti1516_2025::ObjectClassHandle, std::map< std::wstring, rti1516_2025::AttributeHandle > > myAttributeNameToHandleMap
Definition: rtiAmbassadorFedProBase.h:242
std::map< rti1516_2025::ObjectClassHandle, std::map< rti1516_2025::AttributeHandle, std::wstring > > myAttributeHandleToNameMap
Definition: rtiAmbassadorFedProBase.h:236
Definition: callResponseMessage.h:21
double myHeartbeatInterval
Definition: rtiAmbassadorFedProBase.h:214
rti1516_2025::fedpro::CallResponse::CallResponseCase myExpectedResponseType
Definition: rtiAmbassadorFedProBase.h:219
MessageType
Definition: fedproMessage.h:22
ULong ObjectClassHandle
Definition: RTItypes13.h:104
std::set< unsigned long > myReceivedNumbers
Definition: rtiAmbassadorFedProBase.h:212
Definition: rtiAmbassadorFedProBase.h:45
rti1516_2025::InteractionClassHandle myInvalidInteractionClassHandle
Definition: rtiAmbassadorFedProBase.h:229
Definition: heartbeatMessage.h:11
Definition: fedproMessage.h:18
Definition: RTIambassador.pb.h:56904
Handle AttributeHandle
Definition: RTItypes13.h:112
const std::wstring myUknownName
Definition: rtiAmbassadorFedProBase.h:231
unsigned long mySequenceNumber
Definition: rtiAmbassadorFedProBase.h:207
bool myQueueCallbackRequests
Definition: rtiAmbassadorFedProBase.h:223
unsigned long myExpectedResponseRequestNumber
Definition: rtiAmbassadorFedProBase.h:220
MAKRti::DtClock myClock
Definition: rtiAmbassadorFedProBase.h:205

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)