MAK RTIspy API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
extendedRtiMsgForwarder.h
Go to the documentation of this file.
1 /*******************************************************************************
2  ** Copyright (c) 2005 MaK Technologies, Inc.
3  ** All rights reserved.
4  *******************************************************************************/
5 /*******************************************************************************
6  ** $RCSfile: extendedRtiMsgForwarder.h,v $ $Revision: 1.7 $ $State: Exp $
7  *******************************************************************************/
10 
11 #ifndef DtExtendedRtiMsgForwarder_H_
12 #define DtExtendedRtiMsgForwarder_H_
13 
14 #include "forwarderPort.h"
15 #include "rtiMsConfig.h"
16 #include "rtiMessageForwarder.h"
17 #include "vlThreadedObject.h"
18 #include <vlutil/vlRunnable.h>
19 #include "vlThreadSafeQueue.h"
21 #include <vlutil/vlTime.h>
22 #include <udpMsgSocket.h>
23 #include <set>
24 
25 class DtRIDParameters;
26 class DtMessageBufferFilter;
28 class DtNetworkMapLanRequestFilter;
29 
31 {
32 protected:
33 
35  DtExtendedRtiMsgForwarder( unsigned long id, const DtRIDParameters& params, bool postMessagesToParent = true );
36 
37 public:
38 
40 
45  static DtExtendedRtiMsgForwarder* create( unsigned int id, const DtRIDParameters& params, bool postMessagesToParent = true );
46 
48  virtual ~DtExtendedRtiMsgForwarder();
49 
52  virtual void applyFilters();
53 
55  virtual void sendByTransport( const DtForwarderPort::DtForwarderMsg& msg );
56 
58  virtual void sendToAllReliable( const DtForwarderPort::DtForwarderMsg& msg );
59 
61  virtual void sendBestEffort( const DtForwarderPort::DtForwarderMsg& msg );
62 
65  virtual void sendMessageToWan( const DtRtiMsg& msg );
66 
69  virtual inline bool flush();
70 
73  virtual const DtCharBufferQueue::Buffer* getNextMsg();
74 
77  virtual void selectParams( MAKRti::DtSelectParamWithWrite& selectParams );
78 
80  virtual DtForwarderPort::DtAddressPortList newConnections() const;
81 
83  virtual DtForwarderPort::DtAddressPortList droppedConnections() const;
84 
86  virtual DtForwarderPort::DtAddressPortList connections() const;
87 
89  virtual void listenToMulticastGroup( const MAKRti::DtInetAddr& mcastAddr );
90  virtual void dropMulticastGroup( const MAKRti::DtInetAddr& mcastAddr );
91 
92 
94  virtual void federateJoined(const MAKRti::DtString&, const MAKRti::DtString&,
95  const MAKRti::DtString&,
96  unsigned int, unsigned int, const DtInetAddrAndPort&,
97  const MAKRti::DtString&, unsigned int, const MAKRti::DtString&,
98  const MAKRti::DtString&, DtHlaVersionId);
99  virtual void federateResigned(const MAKRti::DtString&,
100  const MAKRti::DtString&, unsigned int, unsigned int,
101  const DtInetAddrAndPort& );
102  virtual void updateSocketQueueStatus( unsigned int connId, int connQueueStatus);
103 
104  virtual void addFederateJoinedCb(
105  DtForwarderPort::DtFederateAddedCb callback, void* usr );
106  virtual void addFederateResignedCb(
107  DtForwarderPort::DtFederateRemovedCb callback, void* usr ) ;
108 
109  virtual void addSocketAdditionCb(
111  virtual void addSocketRemovalCb(
113 
114  virtual void addSocketQueueCb(
115  DtForwarderPort::DtSocketQueueCb cb, void* usr );
116 
118  virtual void addExecConnectionEstablishedCb(
119  DtForwarderPort::DtExecAddChangeCb callback, void* usr );
120  virtual void removeExecConnectionEstablishedCb(
121  DtForwarderPort::DtExecAddChangeCb callback, void* usr );
122 
124  virtual void addExecConnectionLostCb(
125  DtForwarderPort::DtExecRemovedChangeCb callback, void* usr );
126  virtual void removeExecConnectionLostCb(
127  DtForwarderPort::DtExecRemovedChangeCb callback, void* usr );
128 
129  virtual const DtFederateTrackingFilter* fedHandleTrackingFilter() const { return myFedHandleTracker; }
130 
131 
132 protected:
133 
135  virtual void init();
136 
138  virtual void tcpSocketAdditionCb(DtTcpMsgSocket* sock);
139  virtual void tcpSocketRemovalCb(DtTcpMsgSocket* sock);
140 
147  virtual void refreshConnectionList() const;
148 
149 public:
150 
152  static const unsigned int theForwarderId;
153 
154 protected:
155 
156  typedef std::pair< DtInetAddrAndPort, int > DtAddressAndSockIdPair;
157 
160 
161  std::auto_ptr<DtCharBufferQueue::Buffer> myLastReceivedMsg;
164  DtMessageBufferFilter* myOutMsgFilter;
166 
168  DtClock myClock;
169 
171  MAKRti::DtTime myLastDiscoveryTickTime;
172 
175 
177 
181 
186  typedef std::pair< bool, DtAddressAndSockIdPair > DtBoolAddressSocketIdPair;
188  mutable std::set< DtAddressAndSockIdPair > myConnections;
191 
192 
196 };
197 
199 {
200  bool status = true;
204  if ( myUdpSendSocket->isOpen() )
205  {
206  status = myUdpSendSocket->flush();
207  }
208 
209  return status;
210 }
211 #endif
212 

Document ID: Generated on Fri Sep 27 00:57:56 EDT 2019 from SVN revision 201708
Copyright © 2005-2018 VT MÄK Inc. All Rights Reserved (www.mak.com)