QXRD  0.11.16
qcepintegrateddataqueue.cpp
Go to the documentation of this file.
1 #include "qcepdebug.h"
3 #include "qcepapplication.h"
4 #include "qcepintegrateddata.h"
5 
7  m_Name(name)
8 {
9 }
10 
12 {
14  g_Application->printMessage(tr("QcepIntegratedDataQueue::~QcepIntegratedDataQueue(%1) %2 begin [contains %3]")
15  .arg(m_Name).HEXARG(this).arg(m_Queue.size()));
16  }
17 
18  deallocate();
19 
21  g_Application->printMessage(tr("QcepIntegratedDataQueue::~QcepIntegratedDataQueue(%1) %2 end [contains %3]")
22  .arg(m_Name).HEXARG(this).arg(m_Queue.size()));
23  }
24 }
25 
27 {
28  QWriteLocker lock(&m_Lock);
29 
30  if (m_Queue.isEmpty()) {
32  g_Application->printMessage(tr("QcepIntegratedDataQueue::dequeue() = NULL from %1").arg(m_Name));
33  }
34 
35  return QcepIntegratedDataPtr(NULL);
36  } else {
37  QcepIntegratedDataPtr res = m_Queue.dequeue();
38 
40  g_Application->printMessage(tr("QcepIntegratedDataQueue::dequeue() = %1 from %2, leaving %3")
41  .HEXARG(res.data()).arg(m_Name).arg(m_Queue.size()));
42  }
43 
44  return res;
45  }
46 }
47 
49 {
50  QWriteLocker lock(&m_Lock);
51 
53  g_Application->printMessage(tr("QcepIntegratedDataQueue::enqueue(%1) into %2, starting with %3")
54  .HEXARG(data.data()).arg(m_Name).arg(m_Queue.size()));
55  }
56 
57  if (data) {
58  m_Queue.enqueue(data);
59  }
60 }
61 
63 {
64  QReadLocker lock(&m_Lock);
65 
67  g_Application->printMessage(tr("QcepIntegratedDataQueue::size() = %1 for %2")
68  .arg(m_Queue.size()).arg(m_Name));
69  }
70 
71  return m_Queue.size();
72 }
73 
75 {
76  QReadLocker lock(&m_Lock);
77 
78  if (n < 0 || n >= m_Queue.size()) {
79  return QcepIntegratedDataPtr(NULL);
80  } else {
81  return m_Queue[n];
82  }
83 }
84 
86 {
87  while (!m_Queue.isEmpty()) {
88  QcepIntegratedDataPtr img = m_Queue.dequeue();
90  g_Application->printMessage(tr("Deallocate %1").HEXARG(img.data()));
91  }
92  }
93 }
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QcepIntegratedDataPtr dequeue()
QSharedPointer< QcepIntegratedData > QcepIntegratedDataPtr
QcepIntegratedDataPtr operator[](int n)
#define HEXARG(a)
Definition: qcepdebug.h:50
void enqueue(QcepIntegratedDataPtr data)
virtual void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())=0
QcepApplication * g_Application
QQueue< QcepIntegratedDataPtr > m_Queue