8 #ifndef DtRtiMsgForwarder_H_
9 #define DtRtiMsgForwarder_H_
19 #include <vlutil/vlRunnable.h>
20 #include <vlutil/vlThreadSafe.h>
23 #include <vlutil/vlSelectParamW.h>
24 #include <vlutil/vlSmartPointers.h>
25 #include <vlutil/vlInetAddr.h>
41 class DtMsgFwdrFunctor;
67 const MAKRti::DtInetAddr& ipAddr,
int port,
68 unsigned long federateHandle = 0,
69 const MAKRti::DtString& federateName =
"",
70 const MAKRti::DtString& federateType =
"",
71 const MAKRti::DtString& fedexName =
"",
73 const MAKRti::DtInetAddr& webServerAddr = MAKRti::DtInetAddr(),
74 int webServerPort = 0 );
77 bool operator==(
const ConnectionInfo& rhs );
78 bool operator<(
const ConnectionInfo& rhs );
81 void setFederateInfo(
unsigned long fedexHandle,
unsigned long handle,
82 const MAKRti::DtString& name,
const MAKRti::DtString& type,
84 void setConnectionId(
unsigned long connId );
87 void setWebServerAddr(
const MAKRti::DtInetAddr& ip );
88 void setWebServerPort(
int port );
125 virtual bool hasExec()
const;
135 virtual void setEnableBundling(
unsigned int maxBundleSize );
138 virtual void setUseSmartForwarding(
bool yesNo );
141 virtual void setRouteFedexMessages(
bool yesNo );
150 virtual inline unsigned long forwarderId()
const;
153 virtual void setForwarderId(
unsigned long newId);
156 void updateTcpForwarderQueuedSockets();
167 virtual ConnectionInfoSP getConnectionInfoByConnId(
unsigned long connId )
const;
170 virtual ConnectionInfoSP getConnectionInfoByHandle(
unsigned long federateHandle )
const;
176 virtual std::pair< bool, unsigned long > rtiExecConnected()
const;
184 virtual void requestCloseAllConnections();
191 virtual void requestKillSingleConnection(
const DtTcpMsgSocket* sock );
197 virtual void markConnectionAsAboutToBeDeleted(
DtTcpMsgSocket const* socket,
unsigned int connectionId);
200 virtual bool isConnectionMarkedForDeletion(
unsigned int connectionId)
const;
205 virtual void removeOldConnection(
unsigned int connectionId);
209 virtual void shutdownRequestedByExec();
214 virtual bool updateFederateConnectionId(
unsigned long orig,
unsigned long final );
217 virtual bool updateFederateWebServer(
unsigned long connId, MAKRti::DtInetAddr ip,
int port );
220 virtual void updateConnectionProcessParameters(
unsigned long connId,
unsigned long processId, MAKRti::DtString processName, MAKRti::DtString commandArgs );
223 virtual bool shouldStop();
241 virtual void performMcastDiscovery();
245 virtual void applyRegisteredFilters();
246 virtual void disableRegisteredFilters();
250 virtual void waitForIo();
257 virtual unsigned long consumeConnId();
267 virtual bool populateConnectionInformation(
268 unsigned int& numForwarderToForwarderConns,
269 std::vector<MAKRti::DtString>& forwarderIdentifiers,
270 std::vector<MAKRti::DtString>& forwarderConnectionHostNames,
271 std::vector<MAKRti::DtInetAddr>& forwarderConnectionAddrs,
272 unsigned int& numForwarderClientConns,
273 std::vector<MAKRti::DtString>& clientConnectionHostNames,
274 std::vector<MAKRti::DtInetAddr>& clientConnectionAddrs)
const;
277 virtual void closeAllConnectionsIfRequested();