Deskflow 1.26.0.0
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
ClientApp.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
4 * SPDX-FileCopyrightText: (C) 2012 Symless Ltd.
5 * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
6 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
7 */
8
9#pragma once
10
11#include "deskflow/App.h"
12#include "net/NetworkAddress.h"
13
14#include <QList>
15
16namespace deskflow {
17class Screen;
18class ClientArgs;
19} // namespace deskflow
20
21class Event;
22class Client;
23class Thread;
24class ISocketFactory;
25
26class ClientApp : public App
27{
28public:
29 explicit ClientApp(IEventQueue *events, const QString &processName = QString());
30 ~ClientApp() override = default;
31
32 //
33 // IApp overrides
34 //
35
36 void parseArgs() override;
37 const char *daemonName() const override;
38 void loadConfig() override
39 {
40 // do nothing
41 }
42 bool loadConfig(const QString &) override
43 {
44 return false;
45 }
46 int start() override;
47 int runInner(StartupFunc startup) override;
49 int mainLoop() override;
50 void startNode() override;
51
52 //
53 // Regular functions
54 //
57 void handleClientRestart(const Event &, EventQueueTimer *vtimer);
58 void scheduleClientRestart(double retryTime);
60 void handleClientFailed(const Event &e);
61 void handleClientRefused(const Event &e);
63 Client *openClient(const std::string &name, const NetworkAddress &address, deskflow::Screen *screen);
64 void closeClient(Client *client);
65 bool startClient();
66 void stopClient();
68 {
69 return m_client;
70 }
71
72 //
73 // Static functions
74 //
75
77 {
78 return (ClientApp &)App::instance();
79 }
80
81private:
82 ISocketFactory *getSocketFactory() const;
83 NetworkAddress &getCurrentServerAddress();
84 void tryNextServer();
85
86 bool m_suspended = false;
87 Client *m_client = nullptr;
88 deskflow::Screen *m_clientScreen = nullptr;
89 QList<NetworkAddress> m_serverAddresses;
90 size_t m_currentServerIndex = 0;
91 size_t m_lastServerAddressIndex = 0;
92};
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:28
int(*)() StartupFunc
Definition IApp.h:11
static App & instance()
Definition App.h:94
App(IEventQueue *events, const QString &processName)
Definition App.cpp:42
QString processName() const
Definition App.h:100
ClientApp(IEventQueue *events, const QString &processName=QString())
Definition ClientApp.cpp:50
bool startClient()
Definition ClientApp.cpp:277
void parseArgs() override
Definition ClientApp.cpp:55
void handleClientRefused(const Event &e)
Definition ClientApp.cpp:215
void scheduleClientRestart(double retryTime)
Definition ClientApp.cpp:171
void handleClientDisconnected()
Definition ClientApp.cpp:230
int start() override
Definition ClientApp.cpp:356
deskflow::Screen * openClientScreen()
Definition ClientApp.cpp:144
Client * openClient(const std::string &name, const NetworkAddress &address, deskflow::Screen *screen)
Definition ClientApp.cpp:238
static ClientApp & instance()
Definition ClientApp.h:76
const char * daemonName() const override
Definition ClientApp.cpp:98
void closeClient(Client *client)
Definition ClientApp.cpp:264
void startNode() override
Definition ClientApp.cpp:391
int mainLoop() override
Definition ClientApp.cpp:322
void handleClientFailed(const Event &e)
Definition ClientApp.cpp:187
int runInner(StartupFunc startup) override
Definition ClientApp.cpp:362
void closeClientScreen(deskflow::Screen *screen)
Definition ClientApp.cpp:153
deskflow::Screen * createScreen() override
Definition ClientApp.cpp:105
void handleClientConnected()
Definition ClientApp.cpp:179
Client * getClientPtr()
Definition ClientApp.h:67
void handleClientRestart(const Event &, EventQueueTimer *vtimer)
Definition ClientApp.cpp:161
~ClientApp() override=default
bool loadConfig(const QString &) override
Definition ClientApp.h:42
void loadConfig() override
Definition ClientApp.h:38
void stopClient()
Definition ClientApp.cpp:314
Deskflow client.
Definition Client.h:39
Definition EventQueueTimer.h:12
Event.
Definition Event.h:29
Event queue interface.
Definition IEventQueue.h:29
Socket factory.
Definition ISocketFactory.h:23
Network address type.
Definition NetworkAddress.h:17
Thread handle.
Definition Thread.h:33
Platform independent screen.
Definition Screen.h:30
Definition DaemonApp.h:20