l_maliakal_d 10e47581e0 gui_client more stable with 2 servers for stop and acquire
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@169 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-21 09:27:16 +00:00

138 lines
2.6 KiB
C++

/*
* qServer.h.h
*
* Created on: Feb 27, 2013
* Author: Dhanya Maliakal
*/
#ifndef QSERVER_H
#define QSERVER_H
/** Qt Project Class Headers */
#include "sls_detector_defs.h"
#include "qDefs.h"
class qDetectorMain;
/** Project Class Headers */
class multiSlsDetector;
class MySocketTCP;
/** Qt Include Headers */
#include <QWidget>
/** C++ Include Headers */
/**
*@short Sets up the gui server
*/
class qServer: public QWidget, public virtual slsDetectorDefs{
Q_OBJECT
public:
/** \short The constructor */
qServer(qDetectorMain *t);
/** Destructor */
~qServer();
/** Start or Stop Gui Server
* @param start is 1 to start and 0 to stop
*/
int StartStopServer(int start);
private:
/** assigns functions to the fnum enum */
int FunctionTable();
/** Decodes Function */
int DecodeFunction(MySocketTCP* sock);
/** Exit Server */
int ExitServer();
/**
* Static function - Thread started which listens to client gui.
* Called by StartStopServer()
* @param this_pointer pointer to this object
*/
static void* StartServerThread(void *this_pointer);
/**
* Thread started which listens to client gui.
* Called by startServerThread()
*
*/
int StartServer();
/**
* Static function - Thread started which listens to client gui to stop acquisition
* Called by StartStopServer()
* @param this_pointer pointer to this object
*/
static void* StopServerThread(void *this_pointer);
/**
* Thread started which listens to client gui to stop acquisition.
* Called by startServerThread()
*
*/
int StopServer();
/** Get Detector Status */
int GetStatus();
/** Starts Acquisition */
int StartAcquisition();
/** Stops Acquisition */
int StopsAcquisition();
/** Acquire - blocking */
int Acquire();
/**The measurement tab object*/
qDetectorMain *myMainTab;
/** tcp socket to gui client */
MySocketTCP *mySocket;
/** tcp socket to gui client to stop or get status */
MySocketTCP *myStopSocket;
/** server port number*/
int port_no;
/** Lock Status if server locked to a client */
int lockStatus;
/** Function List */
static const int NUMBER_OF_FUNCTIONS = 256;
int (qServer::*flist[NUMBER_OF_FUNCTIONS])();
/** if the gui server thread is running*/
static int gui_server_thread_running;
/** thread listening to gui client*/
pthread_t gui_server_thread;
/** thread also listening to gui client to stop acquisition*/
pthread_t gui_stop_server_thread;
/** server started */
int checkStarted;
int checkStopStarted;
/** Message */
char mess[MAX_STR_LENGTH];
signals:
void ServerStoppedSignal();
};
#endif /* QSERVER_H */