MAK RTIspy API Documentation for HLA 4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rtiAssistantClient.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2016 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vlutil/vlPrint.h>
13 #include <vlutil/vlMutex.h>
14 #include <vlutil/vlInetAddr.h>
15 #include <rtiMsConfig.h>
16 
18 #include "assistantMsgCbMgr.h"
20 
22 typedef void (*DtAssistantDisconnectCb)( void* usr );
23 
27 class DtAssistantExitMsg;
29 class DtAssistantDisconnectCbInfo;
30 class DtTcpMsgSocket;
31 
33 {
41 
42 };
43 
45 {
51 };
52 
53 
60 {
61 public:
62 
65 
67  virtual ~DtRtiAssistantClient();
68 
69 private:
70 
73 
75  DtRtiAssistantClient& operator = ( const DtRtiAssistantClient& );
76 
77 public:
78 
81  virtual bool tick( unsigned int timeout = 0 );
82 
84  virtual bool isConnected();
85 
87  virtual bool isDisabled();
88 
91  virtual void addMsgCallback( DtAssistantMsgKind msgKind, DtAssistantMsgCbMgr::DtCallbackFcn fcn, void* usr );
92  virtual void removeMsgCallback( DtAssistantMsgKind msgKind, DtAssistantMsgCbMgr::DtCallbackFcn fcn, void* usr );
93  virtual void addWildcardMsgCallback( DtAssistantMsgCbMgr::DtCallbackFcn fcn, void* usr );
94  virtual void removeWildcardMsgCallback( DtAssistantMsgCbMgr::DtCallbackFcn fcn, void* usr );
95 
97  virtual void addDisconnectCallback( DtAssistantDisconnectCb cb, void* usr );
98  virtual void removeDisconnectCallback( DtAssistantDisconnectCb cb, void* usr );
99 
101  virtual bool sendLRCConnQueryMsg( bool error,
102  MAKRti::DtString& connectionName, bool& ridIsPreconfigured, MAKRti::DtString& ridConfig,
103  MAKRti::DtInetAddr& tcpAddr, int& tcpPort, MAKRti::DtInetAddr& tcpIntf,
104  MAKRti::DtInetAddr& udpAddr, int& udpPort, MAKRti::DtInetAddr& udpIntf,
105  int& forwarderPort, bool& useRtiexec, bool& forceFullCompliance);
106 
108  virtual bool sendForwardingComponentConnQueryMsg( bool error,
109  MAKRti::DtString& connectionName, bool& ridIsPreconfigured, MAKRti::DtString& ridConfig,
110  MAKRti::DtInetAddr& tcpAddr, int& tcpPort, MAKRti::DtInetAddr& tcpIntf,
111  MAKRti::DtInetAddr& udpAddr, int& udpPort, MAKRti::DtInetAddr& udpIntf,
112  MAKRti::DtInetAddr& forwarderToConnectTo, int& forwarderPort, bool& forceFullCompliance );
113 
115  virtual void sendLatencyTestMsg( const DtAssistantLatencyReportMsg& msg );
116 
118  virtual void sendLatencyTestStatusMsg( const DtAssistantTestMgrStatusMsg& msg );
119 
122  virtual bool getNewLicenseServerFromAssistant( bool allowUnlicensed,
123  bool& runUnlicensed, MAKRti::DtString& serverName, const MAKRti::DtString& featToCheck );
124 
126  virtual void sendNotifyMsg( const MAKRti::DtString& text, DtNotifyLevelType notifyLevel );
127 
129  virtual void sendSignalTickedMsg();
130 
132  virtual void sendDialogBoxMsg( const MAKRti::DtString& text,
133  const MAKRti::DtString& advancedText );
134 
137  virtual void sendClose();
138 
140  virtual void sendRidParamsMsg( const MAKRti::DtString& params,
141  const MAKRti::DtFilename& filename,
142  const MAKRti::DtString& federation = MAKRti::DtString::nullString(),
143  unsigned federateHdl = 0 );
144 
146  virtual void setMsgFactory(DtAssistantMessageFactory* fact);
147  virtual DtAssistantMessageFactory* msgFactory() const;
148 
152  virtual void shutDownConnection(const char* reason);
153 
155  virtual MAKRti::DtString getProcessName() const;
156 
158  virtual int getPID() const;
159 
161  virtual MAKRti::DtString getCommandArgs() const;
162 
164  bool testConnectionStatus();
165 
167  virtual int componentId() const;
168 
169 protected:
170 
173  virtual bool initialize();
174 
177  virtual DtAssistantConnectionStatus connectToAssistant();
178 
179  virtual DtAssistantConnectionStatus makeSingleConnectionAttempt();
180 
182  virtual bool startAssistant();
183 
185  virtual bool readAndProcess( MAKRti::DtTime maxTime );
186 
189  virtual bool sendMsg( const DtAssistantMsg& msg );
190 
197  virtual DtAssistantMsg* sendMsgAndWait( const DtAssistantMsg& msg,
198  DtAssistantMsgKind respKind, unsigned int waitSecs = 0 );
199 
202  virtual DtAssistantConnectionStatus sendConnectMsg();
203 
205  static void processRespMsg(const DtAssistantMsg& respMsg, void* usr);
206  virtual void processRespMsg(const DtAssistantMsg& respMsg);
207 
209  static void processNtfyLvlUpdateMsg(const DtAssistantNtfyLvlUpdateMsg& updateMsg, void* usr);
210  virtual void processNtfyLvlUpdateMsg(const DtAssistantNtfyLvlUpdateMsg& updateMsg);
211 
213  static void processAssistantExitMsg( const DtAssistantExitMsg& inter, void* usr);
214  virtual void processAssistantExitMsg( const DtAssistantExitMsg& inter);
215 
217  virtual void processDisconnect();
218 
220  virtual DtUniquePtr<DtAssistantMsg> netRead( int *retCode) const;
221 
223  virtual bool sendLicQueryMsg( bool allowUnlicensed, bool& runUnlicensed,
224  MAKRti::DtString& licServer );
225 
228  virtual void sendClientInfo(bool isReconnect = false);
229 
230 protected:
231 
234 
236  MAKRti::DtInetAddr myAssistantAddr;
237 
239  unsigned int myAssistantPort;
240 
243 
247 
250 
253 
255  MAKRti::DtU32 mySockOpts;
256 
259 
262 
265 
267  MAKRti::DtClock myClock;
268 
270  MAKRti::DtTime myConnTestInterval;
271 
273  MAKRti::DtTime myTimeToTestConnection;
274 
277 
279  DtUniquePtr<DtAssistantMsg> myRespMsg;
280 
282  std::list<DtAssistantDisconnectCbInfo*> myDisconnectCallbacks;
283 
285  MAKRti::DtMutex* mySocketMutex;
286 
288  const char* myShouldShutdown;
289 
293 
295  // the LRC sleeps.
296  static const MAKRti::DtTime theSleepBetweenAssistantConnectAttempts;
297 
300 
303 
305  static const MAKRti::DtInetAddr theFirstHostInetAddr;
306 
308  int myPID;
309 
311  MAKRti::DtString myProcessName;
312 
314  MAKRti::DtString myCommandArgs;
315 
318 
320  unsigned long mySequence;
321 
322 };
const char * myShouldShutdown
should be set with reason string when assistant exit msg has been received.
Definition: rtiAssistantClient.h:288
The DtAssistantTestMgrStatusMsg defines a msg for a client to report the results of a latency test...
Definition: assistantTestMgrStatusMsg.h:37
MAKRti::DtString myCommandArgs
the command line arguments
Definition: rtiAssistantClient.h:314
int myAssistantCompId
The assistant assigned component ID.
Definition: rtiAssistantClient.h:317
Definition: rtiAssistantClient.h:36
bool myInitializingConnection
Is connection being initialized.
Definition: rtiAssistantClient.h:252
Manages the client connection to the RTI Assistant.
Definition: rtiAssistantClient.h:59
int myNumSuccessfulAssistantConnects
How many assistant reconnects occurred.
Definition: rtiAssistantClient.h:302
This file contains the declaration of DtRtiConnectionInfo.
DtAssistantMsgKind
Definition: assistantMsg.h:54
Base class for assistant Messages.
Definition: assistantMsg.h:154
static const MAKRti::DtTime theSleepBetweenAssistantConnectAttempts
When attempting to connect, this is the number of seconds.
Definition: rtiAssistantClient.h:296
DtAssistantDfltMsgFactory myDefaultMessageFactory
Default message factory.
Definition: rtiAssistantClient.h:261
MAKRti::DtU32 mySockOpts
The socket options to be used when connecting to the Assistant.
Definition: rtiAssistantClient.h:255
int myPID
the Process ID ( PID )
Definition: rtiAssistantClient.h:308
Definition: rtiAssistantClient.h:49
bool myAssistantDisabled
Set to true if the Assistant is disabled.
Definition: rtiAssistantClient.h:233
unsigned int myAssistantPort
The port on which the RTI Assistant listens for connections.
Definition: rtiAssistantClient.h:239
Definition: rtiAssistantClient.h:40
unsigned long mySequence
Message sequence number.
Definition: rtiAssistantClient.h:320
int myNumFailedAssistantConnects
How many assistant restarts have we attempted.
Definition: rtiAssistantClient.h:299
The DtAssistantNtfyLvlUpdateMsg defines a wrapper for the RTI Assistant notify level update message u...
Definition: assistantNtfyLvlUpdateMsg.h:31
static const int theMaxNumberOfAssistantConnectAttempts
either starting up or reconnecting, how many assistant restarts do we tolerate before giving up...
Definition: rtiAssistantClient.h:292
bool myCreateIfConnectFails
Indicates whether an Assistant should be created if a connection cannot be established.
Definition: rtiAssistantClient.h:246
MAKRti::DtTime myConnTestInterval
Interval at which connection should be tested.
Definition: rtiAssistantClient.h:270
#define DT_DLL_ASSISTANT
Default – Unix or Win32 static.
Definition: rtiMsConfig.h:150
#define DtASSISTANT_DEFAULT_PORT
Definition: assistantMsg.h:30
Definition: rtiAssistantClient.h:47
DtAssistantConnectionStatus
Definition: rtiAssistantClient.h:44
DtAssistantConnectionStatus myConnStatus
The current connection status.
Definition: rtiAssistantClient.h:249
Instances of DtAssistantDfltMsgFactory are used to create DtRtiMsgs.
Definition: assistantDefaultMsgFact.h:20
DtAssistantComponentType myComponentType
The component type. (LRC, rtiexec, etc.)
Definition: rtiAssistantClient.h:264
The DtAssistantLatencyReportMsg defines a msg for a client to report the results of a latency test...
Definition: assistantLatencyReportMsg.h:33
The DtAssistantFederateStateMsg defines a wrapper for the RTI Assistant federate state message used b...
Definition: assistantSignalTickedMsg.h:30
Definition: rtiAssistantClient.h:46
std::list< DtAssistantDisconnectCbInfo * > myDisconnectCallbacks
Lists of pointers to socket disconnect callbacks.
Definition: rtiAssistantClient.h:282
DtUniquePtr< DtAssistantMsg > myRespMsg
The last response message to be received.
Definition: rtiAssistantClient.h:279
The DtTcpMsgSocket class provides an address family independent TCP socket that handles RTI messages...
Definition: tcpMsgSocket.h:40
DtTcpMsgSocket * mySocket
The socket to the RTI Assistant.
Definition: rtiAssistantClient.h:242
Definition: rtiAssistantClient.h:48
static const MAKRti::DtInetAddr theFirstHostInetAddr
The first InetAddr when the federate was launched.
Definition: rtiAssistantClient.h:305
The DtAssistantExitMsg defines a wrapper for the RTI Assistant exit message used by the Assistant to ...
Definition: assistantExitMsg.h:32
DtAssistantComponentType
Definition: rtiAssistantClient.h:32
Definition: rtiAssistantClient.h:39
MAKRti::DtInetAddr myAssistantAddr
The IP address of the Assistant.
Definition: rtiAssistantClient.h:236
Definition: rtiAssistantClient.h:50
DT_DLL_ASSISTANT DtMessageCallbackManager< DtAssistantMsg, DtAssistantMsgKind > DtAssistantMsgCbMgr
Definition: assistantMsgCbMgr.h:18
MAKRti::DtMutex * mySocketMutex
locks access to the socket connection.
Definition: rtiAssistantClient.h:285
MAKRti::DtTime myTimeToTestConnection
Next time to test connection.
Definition: rtiAssistantClient.h:273
Definition: rtiAssistantClient.h:38
Definition: rtiAssistantClient.h:34
Definition: rtiAssistantClient.h:35
DtAssistantMessageFactory * myMessageFactory
The message factory.
Definition: rtiAssistantClient.h:258
MAKRti::DtClock myClock
Clock for timeouts.
Definition: rtiAssistantClient.h:267
void(* DtAssistantDisconnectCb)(void *usr)
Socket disconnect callback signatures.
Definition: rtiAssistantClient.h:22
DtAssistantMsgCbMgr myMsgCbMgr
Message callback manager.
Definition: rtiAssistantClient.h:276
Definition: rtiAssistantClient.h:37
MAKRti::DtString myProcessName
the Process Name
Definition: rtiAssistantClient.h:311

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)