stec-platform
subscription.h
1 #ifndef SUBSCRIPTION_H
2 #define SUBSCRIPTION_H
3 /*
4 *
5 * $LastChangedDate: 2022-04-25 15:05:33 -0400 (Mon, 25 Apr 2022) $
6 * $LastChangedBy: ed $
7 * $Revision: 3190 $
8 * $Author: ed $
9 * $URL: svn+ssh://svn.vremsoft.com/var/share/svn/tags/platfom3.4.3/platformlib/subscription.h $
10 * $Id: subscription.h 3190 2022-04-25 19:05:33Z ed $
11 * edc@vremsoft.com
12 *
13 * 19
14 *
15 * *** 2014<c> ***
16 *
17 *
18 */
19 #include <QObject>
20 
21 #include "platform_global.h"
22 #include "publication.h"
23 #include "memoryheap.h"
24 #include "algo.h"
25 #include <QString>
26 #include <QList>
27 #include <QVariantList>
28 
29 
30 #include <QStringList>
31 #include <QDataStream>
32 
33 class Publication;
34 
35 
42 class PLATFORMSHARED_EXPORT Subscription : public QObject
43 {
44  Q_OBJECT
45 
46 public:
47  typedef enum { EventOnly = 0, CacheData = 1 } StorageType ;
48 
49 private :
50  Publication *publication;
51  MemoryHeap storeRoom;
52  bool needUpdate;
53  QString nameOfPublication;
54  QVariant userdata;
55  quint64 ourId;
56  bool owner;
57 
58 private slots:
59  void SlotUpdateHasOccured( qint16 index, qint16 count, QVariant src );
60  void SlotDataResetHasOccured( qint16 count, QVariant src );
61  void SlotHasSubscriberConnectedEvent(int connections)
62  {
63  Q_UNUSED(connections)
64  emit SignalEventIamTheLastSubscription();
65  }
66 
67 public:
68 
74  Subscription(QString name, QObject *parent = nullptr);
75 
77  virtual ~Subscription();
78 
80  virtual MemoryHeap &getMemoryHeap();
81 
83  virtual int getSize();
84 
86  virtual Publication *getPublication(void)
87  {
88  return publication;
89  }
90 
92  virtual void PeerConnect()
93  {
94 
95  }
96  virtual void setUserData( QVariant UserInfo)
97  {
98  userdata = UserInfo;
99  }
100 
102  virtual QVariant userData( )
103  {
104  return userdata;
105  }
106 
108  virtual void UserResetEventOccured( qint16 count, QVariant src)
109  {
110  Q_UNUSED(count)
111  Q_UNUSED(src)
112  }
113 
115  virtual void UserEventOccured(qint16 index, qint16 count, QVariant src)
116  {
117  Q_UNUSED(index)
118  Q_UNUSED(count)
119  Q_UNUSED(src)
120  }
121 
123  virtual void ResetArray( const VremVArray values, QVariant src = "local" )
124  {
125  getPublication()->resetArray(values,src);
126  }
127 
129  virtual void Update( const QVariant value, int index = 0, QVariant src = "local" )
130  {
131  getPublication()->insertVariant(index, value, src);
132  }
134  virtual void Update( const VremVArray values, int index = 0, QVariant src = "local" )
135  {
136  getPublication()->insertArray(index,values,src);
137  }
138 
140  virtual bool isResident()
141  {
142  return false;
143  }
144 
146  virtual bool isOwner()
147  {
148  return owner;
149  }
150 
152  virtual void Update( const VremList values, int index = 0, QVariant src = "local" )
153  {
154  if( values.size())
155  {
156  VremVArray v( values.size());
157  int i;
158  for( i = 0; i < v.size() && i < values.size(); ++i)
159  v[i] = values[i];
160  getPublication()->insertArray(index,v,src);
161  }
162  }
163 
165  void SetPublisherProperty(QVariant property);
166 
168  QVariant GetPublisherPropery(void);
169 
171  void SetPublisherPropertyDescription(QString desc);
172 
174  QString GetPublisherProperyDescription(void);
175 
177  virtual void Update( const QStringList values, int index = 0, QVariant src = "local" )
178  {
179  if( values.size())
180  {
181  VremVArray v( values.size());
182  int i;
183  for( i = 0; i < v.size() && i < values.size(); ++i)
184  v[i] = values[i];
185  getPublication()->insertArray(index,v,src);
186  }
187  }
188 
190  virtual VremVArray RequestValues(int index = 0, int count = 1)
191  {
192  return getMemoryHeap().getArray(index,count);
193  }
194 
195 
197  virtual QVariant getSnglValue( int index = 0)
198  {
199  VremVArray i1 = RequestValues(index,1);
200  if( i1.size() )
201  {
202  return i1[0];
203  }
204  return QVariant();
205  }
206 
208  virtual VremVArray RequestAllValues(int index = 0)
209  {
210  return getMemoryHeap().getArray(index,0);
211  }
212 
214  virtual void Repeat( QVariant v, int count, int index = 0 );
215 
217  QString const text(void)
218  {
219  return nameOfPublication;
220  }
221 
222  void ForceGlobal(void);
223  void RemoveGlobal(void);
224 
225 signals:
226  void SignalEventDataReset( qint16 count, QVariant src);
227  void SignalEventOccured(qint16 index, qint16 count, QVariant src);
228  void SignalEventIamTheLastSubscription();
229  void SignalNamedEventOccured(QString name, qint16 index, qint16 count, QVariant src);
230  void SignalUserDataEventOccured(QVariant udata, qint16 index, qint16 count, QVariant src);
231 
232 public slots:
233 
234 private slots :
235  void SlotPeerConnect();
236 
237 };
238 
239 #endif // SUBSCRIPTION_H
The MemoryHeap class provides a memory atom for use anywhere based on insert and rules for memory ato...
Definition: memoryheap.h:18
virtual VremVArray getArray()
returns the memory atom
Definition: memoryheap.cpp:30
The Publication class this is only used by the cloud, users should never use this class....
Definition: publication.h:17
The Subscription class A platform subscriber must use or inheit this class.
Definition: subscription.h:43
virtual QVariant getSnglValue(int index=0)
gets just one element of the data
Definition: subscription.h:197
virtual bool isOwner()
return true if owner of data
Definition: subscription.h:146
virtual void UserEventOccured(qint16 index, qint16 count, QVariant src)
user event from src
Definition: subscription.h:115
virtual void UserResetEventOccured(qint16 count, QVariant src)
reset event
Definition: subscription.h:108
QString const text(void)
returns the name of the subscription
Definition: subscription.h:217
virtual Publication * getPublication(void)
this returns a pointer to the cloud publication for this subsciber
Definition: subscription.h:86
virtual void Update(const VremVArray values, int index=0, QVariant src="local")
update data
Definition: subscription.h:134
virtual void Update(const QStringList values, int index=0, QVariant src="local")
update data
Definition: subscription.h:177
virtual VremVArray RequestValues(int index=0, int count=1)
get the data for this subscription
Definition: subscription.h:190
virtual QVariant userData()
gets the user data, if set, for this subscription
Definition: subscription.h:102
virtual void PeerConnect()
called is peer connect
Definition: subscription.h:92
virtual void Update(const VremList values, int index=0, QVariant src="local")
update data
Definition: subscription.h:152
virtual void Update(const QVariant value, int index=0, QVariant src="local")
update data
Definition: subscription.h:129
virtual void ResetArray(const VremVArray values, QVariant src="local")
force complete new data and size for this subscription
Definition: subscription.h:123
virtual bool isResident()
returns true if resident subscription
Definition: subscription.h:140
virtual VremVArray RequestAllValues(int index=0)
request all the data the subsciber has
Definition: subscription.h:208