MAK RTIspy API Documentation for HLA Evolved
 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 
151  virtual void shutDownConnection();
152 
154  virtual MAKRti::DtString getProcessName() const;
155 
157  virtual int getPID() const;
158 
160  virtual MAKRti::DtString getCommandArgs() const;
161 
163  bool testConnectionStatus();
164 
166  virtual int componentId() const;
167 
168 protected:
169 
172  virtual bool initialize();
173 
176  virtual DtAssistantConnectionStatus connectToAssistant();
177 
178  virtual DtAssistantConnectionStatus makeSingleConnectionAttempt();
179 
181  virtual bool startAssistant();
182 
184  virtual bool readAndProcess( MAKRti::DtTime maxTime );
185 
188  virtual bool sendMsg( const DtAssistantMsg& msg );
189 
196  virtual DtAssistantMsg* sendMsgAndWait( const DtAssistantMsg& msg,
197  DtAssistantMsgKind respKind, unsigned int waitSecs = 0 );
198 
201  virtual DtAssistantConnectionStatus sendConnectMsg();
202 
204  static void processRespMsg(const DtAssistantMsg& respMsg, void* usr);
205  virtual void processRespMsg(const DtAssistantMsg& respMsg);
206 
208  static void processNtfyLvlUpdateMsg(const DtAssistantNtfyLvlUpdateMsg& updateMsg, void* usr);
209  virtual void processNtfyLvlUpdateMsg(const DtAssistantNtfyLvlUpdateMsg& updateMsg);
210 
212  static void processAssistantExitMsg( const DtAssistantExitMsg& inter, void* usr);
213  virtual void processAssistantExitMsg( const DtAssistantExitMsg& inter);
214 
216  virtual void processDisconnect();
217 
219  virtual std::auto_ptr<DtAssistantMsg> netRead( int *retCode) const;
220 
222  virtual bool sendLicQueryMsg( bool allowUnlicensed, bool& runUnlicensed,
223  MAKRti::DtString& licServer );
224 
227  virtual void sendClientInfo();
228 
229 protected:
230 
233 
235  MAKRti::DtInetAddr myAssistantAddr;
236 
238  unsigned int myAssistantPort;
239 
242 
246 
249 
252 
254  MAKRti::DtU32 mySockOpts;
255 
258 
261 
264 
266  MAKRti::DtClock myClock;
267 
269  MAKRti::DtTime myConnTestInterval;
270 
272  MAKRti::DtTime myTimeToTestConnection;
273 
276 
278  std::auto_ptr<DtAssistantMsg> myRespMsg;
279 
281  std::list<DtAssistantDisconnectCbInfo*> myDisconnectCallbacks;
282 
284  MAKRti::DtMutex* mySocketMutex;
285 
288 
292 
294  // the LRC sleeps.
295  static const MAKRti::DtTime theSleepBetweenAssistantConnectAttempts;
296 
299 
302 
304  static const MAKRti::DtInetAddr theFirstHostInetAddr;
305 
307  int myPID;
308 
310  MAKRti::DtString myProcessName;
311 
313  MAKRti::DtString myCommandArgs;
314 
317 
319  unsigned long mySequence;
320 
321 };
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:313
int myAssistantCompId
The assistant assigned component ID.
Definition: rtiAssistantClient.h:316
Definition: rtiAssistantClient.h:36
bool myInitializingConnection
Is connection being initialized.
Definition: rtiAssistantClient.h:251
Manages the client connection to the RTI Assistant.
Definition: rtiAssistantClient.h:59
int myNumSuccessfulAssistantConnects
How many assistant reconnects occurred.
Definition: rtiAssistantClient.h:301
This file contains the declaration of DtRtiConnectionInfo.
DtAssistantMsgKind
Definition: assistantMsg.h:52
Base class for assistant Messages.
Definition: assistantMsg.h:152
static const MAKRti::DtTime theSleepBetweenAssistantConnectAttempts
When attempting to connect, this is the number of seconds.
Definition: rtiAssistantClient.h:295
DtAssistantDfltMsgFactory myDefaultMessageFactory
Default message factory.
Definition: rtiAssistantClient.h:260
MAKRti::DtU32 mySockOpts
The socket options to be used when connecting to the Assistant.
Definition: rtiAssistantClient.h:254
int myPID
the Process ID ( PID )
Definition: rtiAssistantClient.h:307
Definition: rtiAssistantClient.h:49
bool myAssistantDisabled
Set to true if the Assistant is disabled.
Definition: rtiAssistantClient.h:232
unsigned int myAssistantPort
The port on which the RTI Assistant listens for connections.
Definition: rtiAssistantClient.h:238
Definition: rtiAssistantClient.h:40
unsigned long mySequence
Message sequence number.
Definition: rtiAssistantClient.h:319
int myNumFailedAssistantConnects
How many assistant restarts have we attempted.
Definition: rtiAssistantClient.h:298
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:291
bool myCreateIfConnectFails
Indicates whether an Assistant should be created if a connection cannot be established.
Definition: rtiAssistantClient.h:245
MAKRti::DtTime myConnTestInterval
Interval at which connection should be tested.
Definition: rtiAssistantClient.h:269
#define DT_DLL_ASSISTANT
_WIN32
Definition: rtiMsConfig.h:121
#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:248
Instances of DtAssistantDfltMsgFactory are used to create DtRtiMsgs.
Definition: assistantDefaultMsgFact.h:20
DtAssistantComponentType myComponentType
The component type. (LRC, rtiexec, etc.)
Definition: rtiAssistantClient.h:263
The DtAssistantLatencyReportMsg defines a msg for a client to report the results of a latency test...
Definition: assistantLatencyReportMsg.h:38
The DtAssistantFederateStateMsg defines a wrapper for the RTI Assistant federate state message used b...
Definition: assistantSignalTickedMsg.h:30
Definition: rtiAssistantClient.h:46
bool myShouldShutdown
should be set when assistant exit msg has been received.
Definition: rtiAssistantClient.h:287
std::list< DtAssistantDisconnectCbInfo * > myDisconnectCallbacks
Lists of pointers to socket disconnect callbacks.
Definition: rtiAssistantClient.h:281
The DtTcpMsgSocket class provides an address family independent TCP socket that handles RTI messages...
Definition: tcpMsgSocket.h:42
DtTcpMsgSocket * mySocket
The socket to the RTI Assistant.
Definition: rtiAssistantClient.h:241
Definition: rtiAssistantClient.h:48
static const MAKRti::DtInetAddr theFirstHostInetAddr
The first InetAddr when the federate was launched.
Definition: rtiAssistantClient.h:304
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:235
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:284
MAKRti::DtTime myTimeToTestConnection
Next time to test connection.
Definition: rtiAssistantClient.h:272
Definition: rtiAssistantClient.h:38
Definition: rtiAssistantClient.h:34
Definition: rtiAssistantClient.h:35
DtAssistantMessageFactory * myMessageFactory
The message factory.
Definition: rtiAssistantClient.h:257
MAKRti::DtClock myClock
Clock for timeouts.
Definition: rtiAssistantClient.h:266
void(* DtAssistantDisconnectCb)(void *usr)
Socket disconnect callback signatures.
Definition: rtiAssistantClient.h:22
std::auto_ptr< DtAssistantMsg > myRespMsg
The last response message to be received.
Definition: rtiAssistantClient.h:278
DtAssistantMsgCbMgr myMsgCbMgr
Message callback manager.
Definition: rtiAssistantClient.h:275
Definition: rtiAssistantClient.h:37
MAKRti::DtString myProcessName
the Process Name
Definition: rtiAssistantClient.h:310

Document ID: Generated on Thu May 11 15:55:32 EDT 2023 from SVN revision 254743
Copyright © 2005-2020 MAK Technologies Inc. All Rights Reserved (www.mak.com)