QXRD  0.11.16
qxrdserverthread.cpp
Go to the documentation of this file.
1 #include "qxrddebug.h"
2 #include "qxrdserverthread.h"
3 
4 #include "qxrdserver.h"
5 #include <QMetaObject>
6 #include <QDateTime>
7 #include "qxrdapplication.h"
8 #include "qxrdexperiment.h"
9 #include "qcepmutexlocker.h"
10 
12  m_Saver(saver),
13  m_Experiment(doc),
14  m_Name(name),
15  m_Server(NULL)
16 {
18  printf("QxrdServerThread::QxrdServerThread(%p)\n", this);
19  }
20 
21  setObjectName("specserver");
22 }
23 
25 {
26  shutdown();
27 
29  printf("QxrdServerThread::~QxrdServerThread(%p)\n", this);
30  }
31 }
32 
34 {
35  while (isRunning()) {
36  {
37  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
38 
39  if (m_Server) return m_Server;
40  }
41 
42  QThread::msleep(50);
43  }
44 
45  return QxrdServerPtr();
46 }
47 
49 {
50  exit();
51 
52  wait();
53 }
54 
56 {
57  if (qcepDebug(DEBUG_THREADS)) {
58  printf("Spec Server Thread Started\n");
59  }
60 
61  {
63 
64 
65  if (server) {
66  m_Mutex.lock();
67 // server -> moveToThread(g_Application->thread());
68  m_Server = server;
69  m_Mutex.unlock();
70  }
71  }
72 
73  int rc = -1;
74 
75  if (m_Server) {
76  rc = exec();
77  }
78 
79  {
80  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
81 
83  }
84 
85  if (qcepDebug(DEBUG_THREADS)) {
86  printf("Spec Server Thread Terminated with rc %d\n", rc);
87  }
88 }
89 
91 {
92  emit execute(cmd);
93 }
QSharedPointer< QxrdServer > QxrdServerPtr
Definition: qxrdserver-ptr.h:6
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QcepSettingsSaverWPtr m_Saver
QWeakPointer< QxrdExperiment > QxrdExperimentWPtr
QxrdServerThread(QcepSettingsSaverWPtr saver, QxrdExperimentWPtr doc, QString name)
QxrdServerPtr m_Server
QxrdServerPtr server() const
QMutex m_Mutex
Definition: qcepthread.h:17
void execute(QString cmd)
QxrdExperimentWPtr m_Experiment
void executeScript(QString cmd)
QWeakPointer< QcepSettingsSaver > QcepSettingsSaverWPtr