55 virtual void parseArgs(
int argc,
const char *
const *argv) = 0;
57 virtual bool loadConfig(
const std::string &pathname) = 0;
66 void bye(
int error)
override
83 int run(
int argc,
char **argv);
87 void initApp(
int argc,
const char **argv)
override;
90 initApp(argc, (
const char **)argv);
98 m_socketMultiplexer = std::move(sm);
103 return m_socketMultiplexer.get();
108 assert(s_instance !=
nullptr);
121 static App *s_instance;
124 std::unique_ptr<SocketMultiplexer> m_socketMultiplexer;
128#define DAEMON_RUNNING(running_) ArchMiscWindows::daemonRunning(running_)
130#define DAEMON_RUNNING(running_)
133 " -d, --debug <level> filter out log messages with priority below level.\n"
134 " level may be: FATAL, ERROR, WARNING, NOTE, INFO,\n"
135 " DEBUG, DEBUG1, DEBUG2.\n"
136 " -n, --name <screen-name> use screen-name instead the hostname to identify\n"
137 " this screen in the configuration.\n"
138 " -1, --no-restart do not try to restart on failure.\n"
139 "* --restart restart the server automatically if it fails.\n"
140 " -l --log <file> write log messages to file.\n"
141 " --enable-crypto enable TLS encryption.\n"
142 " --tls-cert specify the path to the TLS certificate file.\n";
145 " -h, --help display this help and exit.\n"
146 " --version display version information and exit.\n";
149 " [--name <screen-name>]"
150 " [--restart|--no-restart]"
151 " [--debug <level>]";
157constexpr static auto s_helpSysArgs =
" [--daemon|--no-daemon]";
158constexpr static auto s_helpSysInfo =
159 " -f, --no-daemon run in the foreground.\n"
160 "* --daemon run as a daemon.\n";
165constexpr static auto s_helpSysArgs =
" [--service <action>] [--relaunch]";
166constexpr static auto s_helpSysInfo =
167 " --service <action> manage the windows service, valid options are:\n"
168 " install/uninstall/start/stop\n"
169 " --relaunch persistently relaunches process in current user \n"
170 " session (useful for vista and upward).\n";
173#if !defined(WINAPI_LIBEI) && WINAPI_XWINDOWS
175 "\nYour Linux distribution does not support Wayland EI (emulated input)\n"
176 "which is required for Wayland support. Please use a Linux distribution\n"
177 "that supports Wayland EI.\n";
#define ARCH_APP_UTIL
Definition AppUtilUnix.h:12
static constexpr auto s_helpCommonArgs
Definition App.h:148
static constexpr auto s_helpNoWayland
Definition App.h:180
static constexpr auto s_helpVersionArgs
Definition App.h:144
static constexpr auto s_helpGeneralArgs
Definition App.h:132
static int(PASCAL FAR *bind_winsock)(SOCKET s
XNoEiSupport()
Definition App.h:40
virtual bool loadConfig(const std::string &pathname)=0
virtual void parseArgs(int argc, const char *const *argv)=0
int run(int argc, char **argv)
Definition App.cpp:72
IEventQueue * m_events
Definition App.h:117
IEventQueue * getEvents() const override
Definition App.h:70
virtual void loadConfig()=0
static App & instance()
Definition App.h:106
virtual const char * daemonInfo() const =0
App(IEventQueue *events, deskflow::ArgsBase *args)
Definition App.cpp:44
void initApp(int argc, const char **argv) override
Definition App.cpp:145
SocketMultiplexer * getSocketMultiplexer() const
Definition App.h:101
App & operator=(App &&)=delete
virtual std::string configSection() const =0
void loggingFilterWarning() const
Definition App.cpp:135
void setupFileLogging()
Definition App.cpp:126
void setByeFunc(void(*bye)(int)) override
Definition App.h:62
int daemonMainLoop(int, const char **)
Definition App.cpp:116
void initApp(int argc, char **argv)
Definition App.h:88
ARCH_APP_UTIL & appUtil()
Definition App.h:75
void runEventsLoop(void *)
Definition App.cpp:186
void(* m_bye)(int)
Definition App.h:112
virtual void version()
Definition App.cpp:60
void bye(int error) override
Definition App.h:66
App & operator=(App const &)=delete
void setEvents(EventQueue &events)
Definition App.h:92
~App() override
Definition App.cpp:54
void setSocketMultiplexer(std::unique_ptr< SocketMultiplexer > &&sm)
Definition App.h:96
deskflow::ArgsBase & argsBase() const override
Definition App.h:79
Event queue.
Definition EventQueue.h:29
Write log to file.
Definition LogOutputters.h:60
Event queue interface.
Definition IEventQueue.h:32
Outputter interface.
Definition ILogOutputter.h:21
Socket multiplexer.
Definition SocketMultiplexer.h:26
This is the base Argument class that will store the generic arguments passed into the applications th...
Definition ArgsBase.h:19
Platform independent screen.
Definition Screen.h:30
Definition EventTypes.h:11