mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-11 07:56:08 -06:00
606a14f9f7
Added a timer to call back if a signal from the socket has to be ignored. This way we should not loose signals and state. Needs to be experienced over some time to be verified.
82 lines
2.4 KiB
C++
82 lines
2.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (C) 2011-2012 Statoil ASA, Ceetron AS
|
|
//
|
|
// ResInsight is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
|
//
|
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
|
// for more details.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <vector>
|
|
#include <QDataStream>
|
|
|
|
class QLabel;
|
|
class QPushButton;
|
|
class QTcpServer;
|
|
class QTcpSocket;
|
|
class QNetworkSession;
|
|
class QErrorMessage;
|
|
class QTimer;
|
|
class RimCase;
|
|
class RiaSocketCommand;
|
|
|
|
namespace riOctavePlugin
|
|
{
|
|
const int qtDataStreamVersion = QDataStream::Qt_4_0;
|
|
}
|
|
|
|
class RiaSocketServer : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
enum ReadState {ReadingCommand, ReadingPropertyData};
|
|
|
|
public:
|
|
RiaSocketServer(QObject *parent = 0);
|
|
~RiaSocketServer();
|
|
|
|
unsigned short serverPort();
|
|
RimCase* findReservoir(int caseId);
|
|
QErrorMessage* errorMessageDialog() { return m_errorMessageDialog; }
|
|
QTcpSocket* currentClient() { return m_currentClient; }
|
|
|
|
void setCurrentCaseId(int caseId);
|
|
int currentCaseId() const;
|
|
|
|
private slots:
|
|
void slotNewClientConnection();
|
|
void slotCurrentClientDisconnected();
|
|
void slotReadyRead();
|
|
void handleNextPendingConnection();
|
|
|
|
private:
|
|
void terminateCurrentConnection();
|
|
bool readCommandFromOctave();
|
|
|
|
private:
|
|
QTcpServer* m_tcpServer;
|
|
QErrorMessage* m_errorMessageDialog;
|
|
|
|
QTcpSocket* m_currentClient;
|
|
qint64 m_currentCommandSize; ///< The size in bytes of the command we are currently reading.
|
|
|
|
RiaSocketCommand* m_currentCommand;
|
|
|
|
QTimer* m_nextPendingConnectionTimer;
|
|
|
|
int m_currentCaseId; // Set to -1 to use default server behavior
|
|
};
|