Deskflow 1.26.0.134
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);
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
85 double retryTime() const;
86
87private:
88 ISocketFactory *getSocketFactory() const;
89 NetworkAddress &getCurrentServerAddress();
90 void tryNextServer();
91
92 bool m_suspended = false;
93 Client *m_client = nullptr;
94 deskflow::Screen *m_clientScreen = nullptr;
95 QList<NetworkAddress> m_serverAddresses;
96 size_t m_currentServerIndex = 0;
97 size_t m_lastServerAddressIndex = 0;
98 uint m_retryCount = 0;
99};
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:28
int(*)() StartupFunc
Definition IApp.h:11
static App & instance()
Definition App.h:97
App(IEventQueue *events, const QString &processName)
Definition App.cpp:41
QString processName() const
Definition App.h:103
ClientApp(IEventQueue *events, const QString &processName=QString())
Definition ClientApp.cpp:46
bool startClient()
Definition ClientApp.cpp:272
void parseArgs() override
Definition ClientApp.cpp:51
void handleClientRefused(const Event &e)
Definition ClientApp.cpp:207
void scheduleClientRestart(double retryTime)
Definition ClientApp.cpp:161
void handleClientDisconnected()
Definition ClientApp.cpp:223
int start() override
Definition ClientApp.cpp:341
deskflow::Screen * openClientScreen()
Definition ClientApp.cpp:134
Client * openClient(const std::string &name, const NetworkAddress &address, deskflow::Screen *screen)
Definition ClientApp.cpp:233
static ClientApp & instance()
Definition ClientApp.h:76
const char * daemonName() const override
Definition ClientApp.cpp:94
void closeClient(Client *client)
Definition ClientApp.cpp:259
void startNode() override
Definition ClientApp.cpp:376
int mainLoop() override
Definition ClientApp.cpp:318
void handleClientFailed(const Event &e)
Definition ClientApp.cpp:179
int runInner(StartupFunc startup) override
Definition ClientApp.cpp:347
void closeClientScreen(deskflow::Screen *screen)
Definition ClientApp.cpp:143
deskflow::Screen * createScreen() override
Definition ClientApp.cpp:101
void handleClientConnected()
Definition ClientApp.cpp:170
Client * getClientPtr()
Definition ClientApp.h:67
void handleClientRestart(const Event &, EventQueueTimer *vtimer)
Definition ClientApp.cpp:151
~ClientApp() override=default
bool loadConfig(const QString &) override
Definition ClientApp.h:42
void loadConfig() override
Definition ClientApp.h:38
void stopClient()
Definition ClientApp.cpp:309
double retryTime() const
retryTime
Definition ClientApp.cpp:391
Deskflow client.
Definition Client.h:40
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