MAK RTIspy API Documentation for HLA 4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
FederateProxyManager.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 <rtiutil/rtiMsConfig.h>
9 
10 #include <vlutil/vlSmartPointers.h>
11 #include <vlutil/vlTime.h>
12 
13 #include <map>
14 #include <list>
15 
16 class FederateProxy;
17 class DtMsgHeaderReader;
18 class DtTcpMsgSocketMgr;
19 class DtTcpMsgSocket;
20 
21 namespace rti1516_2025
22 {
23  class RTIambassadorFactory;
24 };
25 
27 {
28 public:
29  FederateProxyManager(const std::string serverAddress, int serverPort);
31 
32  bool tick();
33 
34  void listProxies();
35 
36  void killProxy(unsigned long long sessionId);
37 
38 protected:
39 
40  void socketAdded(DtTcpMsgSocket* sock);
41  void socketRemoved(DtTcpMsgSocket* sock);
42  void checkTimeout();
43 
44  void removeProxy(FederateProxy* proxy);
45  void disconnectProxy(FederateProxy* proxy);
46  void removeProxyFromTimeout(FederateProxy* proxy);
47 
48 
49  void processAddedConnections();
50  // Returns result of processing socket
51  // < 0: socket should be removed from list and discarded
52  // = 0: no action
53  // > 0: socket should be removed from list (given to federate proxy)
54  int processAddedConnection(DtTcpMsgSocket* sock);
55 
56  bool processNewSession(DtTcpMsgSocket* sock, unsigned long protocolVersion);
57  bool processReconnect(DtTcpMsgSocket* sock, unsigned long sessionId, unsigned long lastReceived, unsigned long oldestSent);
58 
59 protected:
60 
61  static void socketAdded(DtTcpMsgSocket* sock, void* usr);
62  static void socketRemoved(DtTcpMsgSocket* sock, void* usr);
63 
64 protected:
65 
68  std::shared_ptr<DtMsgHeaderReader> myHeaderReader;
69  std::map<DtTcpMsgSocket*, FederateProxy*> mySocketToProxyMap;
70  std::map<FederateProxy*, DtTcpMsgSocket*> myProxyToSocketMap;
71  std::map<unsigned long long, FederateProxy*> mySessionIdToProxyMap;
72  std::map<unsigned long long, FederateProxy*> mySessionIdToDisconnectedMap;
73  std::map<MAKRti::DtTime, FederateProxy*> myTimeoutToDisconnectedMap;
74  std::list<DtTcpMsgSocket*> myAddedSockets;
75 
76  unsigned long myNextId;
77  MAKRti::DtClock myClock;
78 
79 };
80 
#define DT_DLL_FEDPRO_SERVER
Definition: rtiMsConfig.h:157
DtTcpMsgSocketMgr * mySocketMgr
Pointer to the socket manager object owned by this instance.
Definition: FederateProxyManager.h:67
std::map< unsigned long long, FederateProxy * > mySessionIdToProxyMap
Definition: FederateProxyManager.h:71
unsigned long myNextId
Definition: FederateProxyManager.h:76
std::map< DtTcpMsgSocket *, FederateProxy * > mySocketToProxyMap
Definition: FederateProxyManager.h:69
Definition: tcpMsgSocketMgr.h:43
Definition: FederateProxyManager.h:26
std::list< DtTcpMsgSocket * > myAddedSockets
Definition: FederateProxyManager.h:74
MAKRti::DtClock myClock
Definition: FederateProxyManager.h:77
The DtMsgHeaderReader class provides an interface to read data from the headers of messages...
Definition: msgHeaderReader.h:25
std::shared_ptr< DtMsgHeaderReader > myHeaderReader
Definition: FederateProxyManager.h:68
std::map< FederateProxy *, DtTcpMsgSocket * > myProxyToSocketMap
Definition: FederateProxyManager.h:70
Definition: FederateProxy.h:41
The DtTcpMsgSocket class provides an address family independent TCP socket that handles RTI messages...
Definition: tcpMsgSocket.h:40
std::map< unsigned long long, FederateProxy * > mySessionIdToDisconnectedMap
Definition: FederateProxyManager.h:72
std::map< MAKRti::DtTime, FederateProxy * > myTimeoutToDisconnectedMap
Definition: FederateProxyManager.h:73

Document ID: Generated on Sun Jul 20 16:15:30 EDT 2025 from SVN revision 277985
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)