Kstars

servermanager.h
1/*
2 SPDX-FileCopyrightText: 2012 Jasem Mutlaq <mutlaqja@ikarustech.com>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#pragma once
8
9#include "indicommon.h"
10
11#include <QFile>
12#include <QObject>
13#include <QProcess>
14#include <QTcpSocket>
15#include <QTemporaryFile>
16#include <QFuture>
17
18#include <memory>
19
20class DriverInfo;
21
22/**
23 * @class ServerManager
24 * ServerManager is responsible for starting and shutting local INDI servers.
25 *
26 * @author Jasem Mutlaq
27 */
28class ServerManager : public QObject
29{
31
32 public:
34 ~ServerManager() override;
35
36 bool start();
37 void stop();
38
39 QString getLogBuffer();
40 const QString &getHost() const
41 {
42 return host;
43 }
44 int getPort() const
45 {
46 return port;
47 }
48
49 void setPendingDrivers(QList<QSharedPointer<DriverInfo>> drivers)
50 {
51 m_PendingDrivers = drivers;
52 }
53 const QList<QSharedPointer<DriverInfo>> &pendingDrivers() const
54 {
55 return m_PendingDrivers;
56 }
57
58 void startDriver(const QSharedPointer<DriverInfo> &driver);
59 void stopDriver(const QSharedPointer<DriverInfo> &driver);
60 bool restartDriver(const QSharedPointer<DriverInfo> &driver);
61
62 const QList<QSharedPointer<DriverInfo>> &managedDrivers() const
63 {
64 return m_ManagedDrivers;
65 }
66 bool contains(const QSharedPointer<DriverInfo> &driver)
67 {
68 return m_ManagedDrivers.contains(driver);
69 }
70
71 void setMode(ServerMode inMode)
72 {
73 mode = inMode;
74 }
75 ServerMode getMode()
76 {
77 return mode;
78 }
79
80 QString errorString();
81
82 int size()
83 {
84 return m_ManagedDrivers.size();
85 }
86
87 public slots:
88 void processServerError(QProcess::ProcessError);
89 void processStandardError();
90
91 private:
92 QTcpSocket serverSocket;
93 QString host;
94 int port;
95 QTemporaryFile serverBuffer;
96 std::unique_ptr<QProcess> serverProcess;
97
98 void insertEnvironmentPath(QProcessEnvironment *env, const QString &variable, const QString &relativePath);
99
100 ServerMode mode { SERVER_CLIENT };
101
102 QList<QSharedPointer<DriverInfo>> m_ManagedDrivers;
103
104 QList<QSharedPointer<DriverInfo>> m_PendingDrivers;
105
106 QFile indiFIFO;
107
108 signals:
109 void started();
110 void stopped();
111 void failed(const QString &message);
112 void terminated(const QString &message);
113
114
115 void newServerLog();
116
117 // Driver Signals
118 void driverStarted(const QSharedPointer<DriverInfo> &driver);
119 void driverStopped(const QSharedPointer<DriverInfo> &driver);
120 void driverRestarted(const QSharedPointer<DriverInfo> &driver);
121 void driverFailed(const QSharedPointer<DriverInfo> &driver, const QString &message);
122};
DriverInfo holds all metadata associated with a particular INDI driver.
Definition driverinfo.h:46
ServerManager is responsible for starting and shutting local INDI servers.
bool contains(const AT &value) const const
qsizetype size() const const
Q_OBJECTQ_OBJECT
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:19:03 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.