Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
HelloBack.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2024 Symless Ltd.
4 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
5 */
6
7#pragma once
8
9#include "common/Common.h"
11#include "io/IStream.h"
12
13#include <functional>
14#include <memory>
15
16namespace deskflow::client {
17
19{
20public:
21 struct Deps
22 {
23 Deps() = default;
24 explicit Deps(std::function<void()> invalidHello, std::function<void(int, int)> incompatible)
25 : m_invalidHello(std::move(invalidHello)),
26 m_incompatible(std::move(incompatible))
27 {
28 // do nothing
29 }
30 virtual ~Deps() = default;
31
35 virtual void invalidHello();
36
40 virtual void incompatible(int major, int minor);
41
42 private:
43 std::function<void()> m_invalidHello;
44 std::function<void(int, int)> m_incompatible;
45 };
46
47 explicit HelloBack(
48 std::shared_ptr<Deps> deps, const int16_t majorVersion = kProtocolMajorVersion,
49 const int16_t minorVersion = kProtocolMinorVersion
50 )
51 : m_deps(deps),
52 m_majorVersion(majorVersion),
53 m_minorVersion(minorVersion)
54 {
55 // do nothing
56 }
57
61 void handleHello(deskflow::IStream *stream, const std::string &clientName) const;
62
63private:
64 bool shouldDowngrade(int major, int minor) const;
65
66 std::shared_ptr<Deps> m_deps;
67 int16_t m_majorVersion;
68 int16_t m_minorVersion;
69};
70
71} // namespace deskflow::client
Deskflow Network Protocol Specification and Implementation.
Bidirectional stream interface.
Definition IStream.h:24
void handleHello(deskflow::IStream *stream, const std::string &clientName) const
Handle hello message from server and reply with hello back.
Definition HelloBack.cpp:36
HelloBack(std::shared_ptr< Deps > deps, const int16_t majorVersion=kProtocolMajorVersion, const int16_t minorVersion=kProtocolMinorVersion)
Definition HelloBack.h:47
static const int16_t kProtocolMinorVersion
Protocol minor version number.
Definition ProtocolTypes.h:50
static const int16_t kProtocolMajorVersion
Protocol major version number.
Definition ProtocolTypes.h:39
Definition HelloBack.cpp:16
Definition Config.h:29
virtual void incompatible(int major, int minor)
Call when the client is incompatible with the server.
Definition HelloBack.cpp:27
virtual void invalidHello()
Call when invalid hello message received from server.
Definition HelloBack.cpp:22
Deps(std::function< void()> invalidHello, std::function< void(int, int)> incompatible)
Definition HelloBack.h:24