Deskflow 1.24.0.365
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
13namespace deskflow {
14class Screen;
15class ClientArgs;
16} // namespace deskflow
17
18class Event;
19class Client;
20class NetworkAddress;
21class Thread;
22class ISocketFactory;
23
24class ClientApp : public App
25{
26public:
27 explicit ClientApp(IEventQueue *events, const QString &processName = QString());
28 ~ClientApp() override = default;
29
30 //
31 // IApp overrides
32 //
33
34 void parseArgs() override;
35 const char *daemonName() const override;
36 const char *daemonInfo() const override;
37 void loadConfig() override
38 {
39 // do nothing
40 }
41 bool loadConfig(const std::string &) override
42 {
43 return false;
44 }
45 int start() override;
46 int runInner(StartupFunc startup) override;
48 int mainLoop() override;
49 void startNode() override;
50
51 //
52 // Regular functions
53 //
56 void handleClientRestart(const Event &, EventQueueTimer *vtimer);
57 void scheduleClientRestart(double retryTime);
58 void handleClientConnected() const;
59 void handleClientFailed(const Event &e);
60 void handleClientRefused(const Event &e);
62 Client *openClient(const std::string &name, const NetworkAddress &address, deskflow::Screen *screen);
63 void closeClient(Client *client);
64 bool startClient();
65 void stopClient();
67 {
68 return m_client;
69 }
70
71 //
72 // Static functions
73 //
74
76 {
77 return (ClientApp &)App::instance();
78 }
79
80private:
81 ISocketFactory *getSocketFactory() const;
82
83 bool m_suspended = false;
84 Client *m_client = nullptr;
85 deskflow::Screen *m_clientScreen = nullptr;
86 NetworkAddress *m_serverAddress = nullptr;
87 size_t m_lastServerAddressIndex = 0;
88};
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:28
int(*)() StartupFunc
Definition IApp.h:11
static App & instance()
Definition App.h:95
App(IEventQueue *events, const QString &processName)
Definition App.cpp:42
QString processName() const
Definition App.h:101
ClientApp(IEventQueue *events, const QString &processName=QString())
Definition ClientApp.cpp:54
bool startClient()
Definition ClientApp.cpp:254
void handleClientConnected() const
Definition ClientApp.cpp:172
void parseArgs() override
Definition ClientApp.cpp:59
bool loadConfig(const std::string &) override
Definition ClientApp.h:41
const char * daemonInfo() const override
Definition ClientApp.cpp:86
void handleClientRefused(const Event &e)
Definition ClientApp.cpp:192
void scheduleClientRestart(double retryTime)
Definition ClientApp.cpp:164
void handleClientDisconnected()
Definition ClientApp.cpp:207
int start() override
Definition ClientApp.cpp:339
deskflow::Screen * openClientScreen()
Definition ClientApp.cpp:137
Client * openClient(const std::string &name, const NetworkAddress &address, deskflow::Screen *screen)
Definition ClientApp.cpp:215
static ClientApp & instance()
Definition ClientApp.h:75
const char * daemonName() const override
Definition ClientApp.cpp:79
void closeClient(Client *client)
Definition ClientApp.cpp:241
void startNode() override
Definition ClientApp.cpp:363
int mainLoop() override
Definition ClientApp.cpp:297
void handleClientFailed(const Event &e)
Definition ClientApp.cpp:177
int runInner(StartupFunc startup) override
Definition ClientApp.cpp:345
void closeClientScreen(deskflow::Screen *screen)
Definition ClientApp.cpp:146
deskflow::Screen * createScreen() override
Definition ClientApp.cpp:93
Client * getClientPtr()
Definition ClientApp.h:66
void handleClientRestart(const Event &, EventQueueTimer *vtimer)
Definition ClientApp.cpp:154
~ClientApp() override=default
void loadConfig() override
Definition ClientApp.h:37
void stopClient()
Definition ClientApp.cpp:289
Deskflow client.
Definition Client.h:41
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 EventTypes.h:11