VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtDeCommunicator.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 #pragma once
10 
12 #include <vrvCore/DtDeRecord.h>
13 #include <vrvUtil/signalslib.h>
14 #include <list>
15 #include <string>
16 
17 namespace makVrv
18 {
19  class DtDe;
20  class DtTcpServer;
21  class DtUdpServer;
22  class DtTcpMessageClient;
23  class DtMessageDispatcher;
24  class DtDriverConfiguration;
25  class DtIgCommunicatorSignaler;
26  class DtDeRemoteDisplayReconnector;
27 
32  {
33  public:
34 
38 
39  typedef std::list<DtDeRecord> IgRecords;
40 
42  virtual ~DtDeCommunicator();
43 
45  virtual bool initialize();
46 
49  virtual void listenForMasterIg();
50 
52  virtual bool hasMasterIg() const;
53 
55  virtual void disconnectMasterIg(const std::string& masterName);
56 
60  bool connectToSlaveIg(const std::string& slaveAddr,int port, std::string& igNameOut);
61 
66  void disconnectSlaveIg(const std::string& name, bool lostConnection=false);
67 
69  virtual void tick();
70 
72  /*virtual const DtDriverConfiguration& configuration() const;*/
73 
75  virtual void addIgRecord(const DtDeRecord& record);
76 
80  virtual void removeIgRecord(const DtDeRecord& record, bool lostConnection=false );
81 
84  DtDeRecord& hostIgRecord();
85 
87  DtDeRecord* findRecordByIgName(const std::string& igName);
88 
90  DtDeRecord* findRecordByDisplayName(const std::string& displayName);
91 
93  bool masterIgOnly() const;
94 
96  const IgRecords& connectedIgs() const;
97 
100  virtual const std::string& name() const;
101 
104  static const char* className();
105 
106  protected:
107 
110 
112  bool validateSlaveConnection( const std::string& ipAddr );
113 
115  void invalidateSlaveConnection( const std::string& ipAddr );
116 
119  virtual void addSlave(DtTcpMessageClient* client, std::string& igNameOut );
120 
121  protected:
122 
123  static const char* myClassName;
124 
128  std::string myName;
134  };
135 
139  {
140 
141  public:
142 
144  static DtIgCommunicatorSignaler& instance(DtDe& de);
145 
147  virtual ~DtIgCommunicatorSignaler();
148 
150 
151 
153  boost::signalslib::signal<void (const std::string&)> signal_masterIgConnected;
154 
156  boost::signalslib::signal<void (const std::string&)> signal_masterIgLost;
157 
159  boost::signalslib::signal<void (const DtDeRecord&)> signal_clientAdded;
160 
164  boost::signalslib::signal<void (const std::string& clientName, bool lostConnection)> signal_clientToByDeleted;
165 
167  boost::signalslib::signal<void (const std::string&)> signal_clientModified;
168 
170 
171  protected:
172 
174 
175  };
176 
177 
181  {
182  public:
183 
185  static DtDeCommunicatorCreator& instance(DtDe&);
186 
188  static void registerInstance(DtDe& de,DtDeCommunicatorCreator*);
189 
191  virtual DtDeCommunicator* create(DtDe& de, DtDriverConfiguration& config);
192  };
193 
194 }
195 
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
boost::signalslib::signal< void(const std::string &)> signal_masterIgConnected
Signal emitted when the IG is a slave and a master connects.
Definition: DtDeCommunicator.h:153
Contains makVrv::DtDeRecord class.
the Signals for DtDeCommunicator
Definition: DtDeCommunicator.h:138
A remote TCP client that the TCP server communicates with.
Definition: DtTcpMessageClient.h:26
bool myUseUdpForUpdates
Definition: DtDeCommunicator.h:125
DtUdpServer * myUdpServer
Definition: DtDeCommunicator.h:131
A Record of an IG instance.
Definition: DtDeRecord.h:24
boost::signalslib::signal< void(const std::string &)> signal_masterIgLost
Signal emitted when the IG is a slave and a master connection is lost.
Definition: DtDeCommunicator.h:156
DtDriverConfiguration & myConfiguration
Definition: DtDeCommunicator.h:127
Configuration for the makVrv::DtIgDriver class.
Definition: DtDriverConfiguration.h:19
std::list< DtDeRecord > IgRecords
Definition: DtDeCommunicator.h:39
Contains makVrv::DtVirtualBaseClass class.
boost::signalslib::signal< void(const std::string &)> signal_clientModified
Signal emitted when a client is modified.
Definition: DtDeCommunicator.h:167
boost::signalslib::signal< void(const std::string &clientName, bool lostConnection)> signal_clientToByDeleted
Signal emitted when a client is removed. If lostConnection is true, the connection to the client was ...
Definition: DtDeCommunicator.h:164
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
The class responsible for restarting remote displays that have disconnected unexpectedly. If a connection to a remote display is lost, it will attempt to reconnect to the same ip address and port, every retryPeriod seconds (default is 5.s). If reconnected it will also provide the display configuration that was in use when the remote display disconnected. It uses an instance of DtThreadedDisplayReconnector for each disconnected remote display to detect the RDE startup and create a connection to it.
Definition: DtDeRemoteDisplayReconnector.h:34
DtTcpServer * myTcpServer
Definition: DtDeCommunicator.h:130
static const char * myClassName
Definition: DtDeCommunicator.h:123
boost::signalslib::signal< void(const DtDeRecord &)> signal_clientAdded
Signal emitted when a client is added.
Definition: DtDeCommunicator.h:159
Creator class.
Definition: DtDeCommunicator.h:180
IgRecords myIgRecords
Definition: DtDeCommunicator.h:129
DtIgCommunicatorSignaler & mySignaler
Definition: DtDeCommunicator.h:132
The class responsible for managing communication between multiple DtDe instances typically running in...
Definition: DtDeCommunicator.h:31
DtDe & myDe
Definition: DtDeCommunicator.h:126
The class responsible for restarting a specific disconnected remote display. It uses a separate threa...
Definition: DtThreadedDisplayReconnector.h:37
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
std::string myName
Definition: DtDeCommunicator.h:128
This is used by the master to send and RDEs to receive UDP (broadcast or multicast) messages...
Definition: DtUdpServer.h:27
DtDeRemoteDisplayReconnector * myDeRemoteDisplayReconnector
Definition: DtDeCommunicator.h:133
This is used by the master to connect to slaves.
Definition: DtTcpServer.h:33

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)