Deskflow 1.22.0.197
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);
28 ~ClientApp() override = default;
29
30 //
31 // IApp overrides
32 //
33
34 void parseArgs(int argc, const char *const *argv) override;
35 void help() override;
36 const char *daemonName() const override;
37 const char *daemonInfo() const override;
38 void loadConfig() override
39 {
40 // do nothing
41 }
42 bool loadConfig(const std::string &pathname) override
43 {
44 return false;
45 }
46 int foregroundStartup(int argc, char **argv) override;
47 int standardStartup(int argc, char **argv) override;
48 int runInner(int argc, char **argv, StartupFunc startup) override;
50 int mainLoop() override;
51 void startNode() override;
52
53 //
54 // App overrides
55 //
56
57 std::string configSection() const override
58 {
59 return "client";
60 }
61
62 //
63 // Regular functions
64 //
65
66 void updateStatus() const;
67 void updateStatus(const std::string_view &) const;
68 void handleScreenError();
71 void handleClientRestart(const Event &, EventQueueTimer *vtimer);
72 void scheduleClientRestart(double retryTime);
73 void handleClientConnected() const;
74 void handleClientFailed(const Event &e);
75 void handleClientRefused(const Event &e);
77 Client *openClient(const std::string &name, const NetworkAddress &address, deskflow::Screen *screen);
78 void closeClient(Client *client);
79 bool startClient();
80 void stopClient();
82 {
83 return m_client;
84 }
85
87 {
89 }
90
91 //
92 // Static functions
93 //
94
96 {
97 return (ClientApp &)App::instance();
98 }
99
100private:
101 ISocketFactory *getSocketFactory() const;
102
103 bool m_suspended = false;
104 Client *m_client = nullptr;
105 deskflow::Screen *m_clientScreen = nullptr;
106 NetworkAddress *m_serverAddress = nullptr;
107 size_t m_lastServerAddressIndex = 0;
108};
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:27
int(*)(int, char **) StartupFunc
Definition IApp.h:12
static App & instance()
Definition App.h:106
App(IEventQueue *events, deskflow::ArgsBase *args)
Definition App.cpp:44
deskflow::ArgsBase & argsBase() const override
Definition App.h:79
std::string configSection() const override
Definition ClientApp.h:57
void parseArgs(int argc, const char *const *argv) override
Definition ClientApp.cpp:68
bool startClient()
Definition ClientApp.cpp:337
void handleClientConnected() const
Definition ClientApp.cpp:241
bool loadConfig(const std::string &pathname) override
Definition ClientApp.h:42
ClientApp(IEventQueue *events)
Definition ClientApp.cpp:63
void handleScreenError()
Definition ClientApp.cpp:200
const char * daemonInfo() const override
Definition ClientApp.cpp:145
void handleClientRefused(const Event &e)
Definition ClientApp.cpp:263
void scheduleClientRestart(double retryTime)
Definition ClientApp.cpp:233
void handleClientDisconnected()
Definition ClientApp.cpp:279
deskflow::Screen * openClientScreen()
Definition ClientApp.cpp:206
Client * openClient(const std::string &name, const NetworkAddress &address, deskflow::Screen *screen)
Definition ClientApp.cpp:290
static ClientApp & instance()
Definition ClientApp.h:95
const char * daemonName() const override
Definition ClientApp.cpp:136
void closeClient(Client *client)
Definition ClientApp.cpp:316
int runInner(int argc, char **argv, StartupFunc startup) override
Definition ClientApp.cpp:440
void updateStatus() const
Definition ClientApp.cpp:190
deskflow::ClientArgs & args() const
Definition ClientApp.h:86
void help() override
Definition ClientApp.cpp:99
void startNode() override
Definition ClientApp.cpp:459
int mainLoop() override
Definition ClientApp.cpp:385
int standardStartup(int argc, char **argv) override
Definition ClientApp.cpp:428
void handleClientFailed(const Event &e)
Definition ClientApp.cpp:247
void closeClientScreen(deskflow::Screen *screen)
Definition ClientApp.cpp:215
deskflow::Screen * createScreen() override
Definition ClientApp.cpp:155
Client * getClientPtr()
Definition ClientApp.h:81
void handleClientRestart(const Event &, EventQueueTimer *vtimer)
Definition ClientApp.cpp:223
~ClientApp() override=default
void loadConfig() override
Definition ClientApp.h:38
void stopClient()
Definition ClientApp.cpp:377
int foregroundStartup(int argc, char **argv) override
Definition ClientApp.cpp:329
Deskflow client.
Definition Client.h:42
Definition SimpleEventQueueBuffer.cpp:13
Event.
Definition Event.h:27
Event queue interface.
Definition IEventQueue.h:32
Socket factory.
Definition ISocketFactory.h:24
Network address type.
Definition NetworkAddress.h:18
Thread handle.
Definition Thread.h:33
Definition ClientArgs.h:19
Platform independent screen.
Definition Screen.h:30
Definition EventTypes.h:11