QXRD  0.11.16
qxrdsimpleserverthread.cpp
Go to the documentation of this file.
1 #include "qxrddebug.h"
2 #include "qxrdsimpleserver.h"
4 #include "qxrdexperiment.h"
5 #include "qxrdapplication.h"
6 #include "qcepmutexlocker.h"
7 
9  m_Saver(saver),
10  m_Experiment(doc),
11  m_Name(name),
12  m_Server(NULL)
13 {
15  printf("QxrdSimpleServerThread::QxrdSimpleServerThread(%p)\n", this);
16  }
17 
18  setObjectName("simpleserver");
19 }
20 
22 {
23  shutdown();
24 
26  printf("QxrdSimpleServerThread::~QxrdSimpleServerThread(%p)\n", this);
27  }
28 }
29 
31 {
32  while (isRunning()) {
33  {
34  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
35 
36  if (m_Server) return m_Server;
37  }
38 
39  QThread::msleep(50);
40  }
41 
42  return QxrdSimpleServerPtr();
43 }
44 
46 {
47  exit();
48 
49  wait();
50 }
51 
53 {
54  if (qcepDebug(DEBUG_THREADS)) {
55  printf("Simple Server Thread Started\n");
56  }
57 
58  {
60 
61  if (server) {
62  m_Mutex.lock();
63 // server->moveToThread(g_Application->thread());
64  m_Server = server;
65  m_Mutex.unlock();
66  }
67  }
68 
69  int rc = -1;
70 
71  rc = exec();
72 
73  {
74  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
75 
77  }
78 
79  if (qcepDebug(DEBUG_THREADS)) {
80  printf("Simple Server Thread Terminated with rc %d\n", rc);
81  }
82 }
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QcepSettingsSaverWPtr m_Saver
QxrdSimpleServerThread(QcepSettingsSaverWPtr saver, QxrdExperimentWPtr doc, QString name)
QSharedPointer< QxrdSimpleServer > QxrdSimpleServerPtr
QxrdExperimentWPtr m_Experiment
QWeakPointer< QxrdExperiment > QxrdExperimentWPtr
QxrdSimpleServerPtr m_Server
QxrdSimpleServerPtr server() const
QMutex m_Mutex
Definition: qcepthread.h:17
QWeakPointer< QcepSettingsSaver > QcepSettingsSaverWPtr