File indexing completed on 2024-04-21 04:58:42

0001 /*
0002     Copyright (C) 2009-2010 Collabora Ltd <info@collabora.co.uk>
0003       @author George Goldberg <george.goldberg@collabora.co.uk>
0004       @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
0005     Copyright (C) 2007 Alessandro Praduroux <pradu@pradu.it>
0006 
0007     This program is free software; you can redistribute it and/or
0008     modify it under the terms of the GNU General Public
0009     License as published by the Free Software Foundation; either
0010     version 2 of the License, or (at your option) any later version.
0011 
0012     This program is distributed in the hope that it will be useful,
0013     but WITHOUT ANY WARRANTY; without even the implied warranty of
0014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0015     GNU General Public License for more details.
0016 
0017     You should have received a copy of the GNU Lesser General Public License
0018     along with this program.  If not, see <http://www.gnu.org/licenses/>.
0019 */
0020 #ifndef RFBSERVERMANAGER_H
0021 #define RFBSERVERMANAGER_H
0022 
0023 #include "rfb.h"
0024 #include "framebuffer.h"
0025 #include <QObject>
0026 #include <QVariantMap>
0027 
0028 class RfbClient;
0029 struct RfbServerManagerStatic;
0030 class RfbServer;
0031 
0032 class RfbServerManager : public QObject
0033 {
0034     Q_OBJECT
0035 public:
0036     static RfbServerManager *instance();
0037 
0038     QSharedPointer<FrameBuffer> framebuffer() const;
0039     static QVariantMap s_pluginArgs;
0040 Q_SIGNALS:
0041     void clientConnected(RfbClient *cc);
0042     void clientDisconnected(RfbClient *cc);
0043 
0044 private Q_SLOTS:
0045     void init();
0046     void updateFrameBuffer();
0047     void updateScreens();
0048     void cleanup();
0049 
0050 private:
0051     void registerServer(RfbServer *server);
0052     void unregisterServer(RfbServer *server);
0053 
0054     rfbScreenInfoPtr newScreen();
0055 
0056     void addClient(RfbClient *cc);
0057     void removeClient(RfbClient *cc);
0058 
0059     RfbServerManager();
0060     ~RfbServerManager() override;
0061     Q_DISABLE_COPY(RfbServerManager)
0062 
0063     friend class RfbServer;
0064     friend struct RfbServerManagerStatic;
0065 
0066     struct Private;
0067     Private *const d;
0068 };
0069 
0070 #endif // RFBSERVERMANAGER_H