QXRD  0.11.16
qxrdresultserializer.cpp
Go to the documentation of this file.
1 #include "qxrdresultserializer.h"
2 #include "qcepmutexlocker.h"
3 
5  QcepObject("resultSerializer", parent)
6 {
7 }
8 
10 {
11 }
12 
13 
14 template <typename T>
16  : QxrdResultSerializerBase(parent),
17  m_Counter(ctr)
18 {
19  connect(&m_Watcher, &QFutureWatcherBase::finished, this, &QxrdResultSerializerBase::resultAvailable);
20 }
21 
22 template <typename T>
23 void QxrdResultSerializer<T>::enqueue(QFuture<T> future)
24 {
25  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
26 
27  m_Results.enqueue(future);
28 
29  m_Watcher.setFuture(m_Results[0]);
30 
31  if (m_Counter) {
32  m_Counter->incValue(1);
33  }
34 }
35 
36 template <typename T>
38 {
39  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
40 
41  if (m_Results.size() > 0) {
42  QFuture<T> val = m_Results.dequeue();
43 
44  if (m_Results.size() > 0) {
45  m_Watcher.setFuture(m_Results[0]);
46  }
47 
48  if (m_Counter) {
49  m_Counter->incValue(-1);
50  }
51 
52  return val.result();
53  } else {
54  if (m_Counter) {
55  m_Counter->setValue(0);
56  }
57 
58  return T();
59  }
60 }
61 
62 template <typename T>
64 {
65  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
66 
67  return m_Results.size();
68 }
69 
70 #include "qcepimagedata.h"
71 #include "qcepimagedata-ptr.h"
72 #include "qcepintegrateddata.h"
73 #include "qcepintegrateddata-ptr.h"
74 #include "qxrdroidata.h"
75 #include "qxrdroidata-ptr.h"
76 #include "qxrdhistogramdata.h"
77 #include "qxrdhistogramdata-ptr.h"
78 
QxrdResultSerializer(QcepIntProperty *ctr, QcepObject *parent)
void enqueue(QFuture< T > future)
QxrdResultSerializerBase(QcepObject *parent)
QFutureWatcher< T > m_Watcher