stec-platform
autoqtcpdistribution.h
1 #ifndef AUTOQTCPDISTRIBUTION_H
2 #define AUTOQTCPDISTRIBUTION_H
3 
4 
5 #include <QObject>
6 #include <QList>
7 #include <subscription.h>
8 #include <QHash>
9 #include <QString>
10 #include <QStringList>
11 #include <QVariant>
12 #include <QVariantList>
13 #include <QList>
14 #include <QPair>
15 #include <QSet>
16 #include <QUuid>
17 #include <autoqtcpserver.h>
18 #include <autoqtcpheader.h>
19 #include <platform_global.h>
20 
21 namespace ADI {
22 
23 class AutoQTcpSubDaemon;
24 class AutoQTcpSubClient;
25 
37 class PLATFORMSHARED_EXPORT AutoQTcpDistribution : public QObject
38 {
39  Q_OBJECT
40 
41 private :
42 
43 
44  AutoQTcpServer *Layer1Server;
45 
46  QHash <QString, Subscription *> AllAutoSubscriptions;
47 
48  QSet<QString> GlobalSubscription;
49  QSet<QString> LocalCloudSubscriptions;
50 
51  QHash <QString, AutoQTcpSubDaemon *> AllSubDaemons;
52  QHash <QString, AutoQTcpSubClient *> AllSubClients;
53 
54  QVariant ourUniqueId;
55 
56  bool allowServer;
57 
58 
59 private slots :
60 
61  void SlotNewServerGlobalPub(QString newPub, bool yes);
62 
63  void SlotNewPublication(QString name);
64  void SlotLostPublication(QString name);
65 
66 
67 
68 public:
69 
70 
75  typedef enum { Originals, OnLooker } SUBORIGIN;
76 
85  explicit AutoQTcpDistribution(QString interface, QString netmask = "255.255.255.205"
86  , int servicePort = 4892, SUBORIGIN author = Originals, QObject *parent = nullptr);
87 
89  virtual ~AutoQTcpDistribution();
90 
96  virtual Subscription *GetSubscription(QString name );
97 
102  bool GetAllowServer(void )
103  {
104  return allowServer ;
105  }
106 
112  bool IsThisGlobal(QString name) {
113  return GlobalSubscription.contains(name);
114  }
115 
120  QStringList GetAllGlobalNames(void);
121 
126  QStringList GetAllLocalNames(void);
127 
133  bool HaveLocal(QString name)
134  {
135  return LocalCloudSubscriptions.contains(name);
136  }
137 
143  void WriteAsDaemon( QString Key, QVariantList &vl );
144 
150  void WriteAsClient( QString Key, QVariantList &vl );
151 
156  void RemoteNameFound(int, QString name);
157 
162  void RemoteNameLost( int, QString name);
163 
168  QVariant getOurUniqueId(void)
169  {
170  return ourUniqueId;
171  }
172 
173  public slots :
174 
178  void ClientConnected(QString);
179 
183  void ClientDisconnected(QString);
184 
188  void DaemonConnected(QString);
189 
193  void DaemonDisconnected(QString);
194 
200  void DataReadyDaemon( QString key, QVariantList message );
201 
207  void DataReadyClient( QString key, QVariantList message );
208 
209 signals:
210 
214  void NewGlobalName(QString);
215 
219  void LostGlobalName(QString);
220 
224  void NewLocalName(QString);
225 
229  void LostLocalName(QString);
230 
234  void SignalNewRemotePublication(int,QString);
235 
239  void SignalLostRemotePublication(int,QString);
240 
241 };
242 
243 }
244 
245 #endif // AUTOQTCPDISTRIBUTION_H
The AutoQTcpDistribution class.
Definition: autoqtcpdistribution.h:38
void SignalNewRemotePublication(int, QString)
SignalNewRemotePublication.
QVariant getOurUniqueId(void)
getOurUniqueId
Definition: autoqtcpdistribution.h:168
void NewLocalName(QString)
NewLocalName.
void NewGlobalName(QString)
NewGlobalName.
bool IsThisGlobal(QString name)
IsThisGlobal.
Definition: autoqtcpdistribution.h:112
void SignalLostRemotePublication(int, QString)
SignalLostRemotePublication.
void LostGlobalName(QString)
LostGlobalName.
bool GetAllowServer(void)
GetAllowServer.
Definition: autoqtcpdistribution.h:102
void LostLocalName(QString)
LostLocalName.
bool HaveLocal(QString name)
HaveLocal.
Definition: autoqtcpdistribution.h:133
The AutoQTcpServer class This is a level #1 layer class.. It does all the connections to all the node...
Definition: autoqtcpserver.h:29
The GlobalSubscription class creates a global subscription this node become the owner of.
Definition: globalsubscription.h:19
The Subscription class A platform subscriber must use or inheit this class.
Definition: subscription.h:43
Definition: autoqtcpdistribution.cpp:10