Deskflow
1.26.0.418
Keyboard and mouse sharing utility
Toggle main menu visibility
Loading...
Searching...
No Matches
ClientListener.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 - 2016 Synergy App Ltd
5
* SPDX-FileCopyrightText: (C) 2004 Chris Schoeneman
6
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
7
*/
8
9
#pragma once
10
11
#include "
net/SecurityLevel.h
"
12
#include "
server/Config.h
"
13
14
#include <deque>
15
#include <memory>
16
#include <set>
17
18
class
ClientProxy
;
19
class
ClientProxyUnknown
;
20
class
NetworkAddress
;
21
class
IListenSocket
;
22
class
ISocketFactory
;
23
class
Server
;
24
class
IEventQueue
;
25
class
IDataSocket
;
26
27
class
ClientListener
28
{
29
public
:
30
// The factories are adopted.
31
ClientListener
(
32
const
NetworkAddress
&, std::unique_ptr<ISocketFactory> socketFactory,
IEventQueue
*events,
33
SecurityLevel
securityLevel
34
);
35
ClientListener
(
ClientListener
const
&) =
delete
;
36
ClientListener
(
ClientListener
&&) =
delete
;
37
~ClientListener
();
38
39
ClientListener
&
operator=
(
ClientListener
const
&) =
delete
;
40
ClientListener
&
operator=
(
ClientListener
&&) =
delete
;
41
43
44
45
void
setServer
(
Server
*server);
46
48
50
51
53
58
ClientProxy
*
getNextClient
();
59
61
Server
*
getServer
()
62
{
63
return
m_server;
64
}
65
66
67
private
:
68
// client connection event handlers
69
void
handleClientConnecting();
70
void
handleClientAccepted(
IDataSocket
*socket);
71
void
handleUnknownClient(
ClientProxyUnknown
*unknownClient);
72
void
handleClientDisconnected(
ClientProxy
*client);
73
74
void
removeClientSocket(
IDataSocket
*socket);
75
void
cleanupListenSocket();
76
void
cleanupClientSockets();
77
void
start();
78
void
stop();
79
void
removeUnknownClient(
ClientProxyUnknown
*unknownClient);
80
81
private
:
82
using
NewClients = std::set<ClientProxyUnknown *>;
83
using
WaitingClients = std::deque<ClientProxy *>;
84
using
ClientSockets = std::set<IDataSocket *>;
85
86
IListenSocket
*m_listen;
87
std::unique_ptr<ISocketFactory> m_socketFactory;
88
NewClients m_newClients;
89
WaitingClients m_waitingClients;
90
Server
*m_server =
nullptr
;
91
IEventQueue
*m_events;
92
SecurityLevel
m_securityLevel;
93
ClientSockets m_clientSockets;
94
NetworkAddress
m_address;
95
};
Config.h
SecurityLevel.h
SecurityLevel
SecurityLevel
This enum is used to set how the client and server will communicate.
Definition
SecurityLevel.h:14
ClientListener::operator=
ClientListener & operator=(ClientListener const &)=delete
ClientListener::getNextClient
ClientProxy * getNextClient()
Get next connected client.
Definition
ClientListener.cpp:64
ClientListener::ClientListener
ClientListener(ClientListener &&)=delete
ClientListener::ClientListener
ClientListener(const NetworkAddress &, std::unique_ptr< ISocketFactory > socketFactory, IEventQueue *events, SecurityLevel securityLevel)
Definition
ClientListener.cpp:27
ClientListener::operator=
ClientListener & operator=(ClientListener &&)=delete
ClientListener::setServer
void setServer(Server *server)
Definition
ClientListener.cpp:58
ClientListener::getServer
Server * getServer()
Get server which owns this listener.
Definition
ClientListener.h:61
ClientListener::ClientListener
ClientListener(ClientListener const &)=delete
ClientProxyUnknown
Definition
ClientProxyUnknown.h:22
ClientProxy
Generic proxy for client.
Definition
ClientProxy.h:18
IDataSocket
Data stream socket interface.
Definition
IDataSocket.h:21
IEventQueue
Event queue interface.
Definition
IEventQueue.h:29
IListenSocket
Listen socket interface.
Definition
IListenSocket.h:22
ISocketFactory
Socket factory.
Definition
ISocketFactory.h:23
NetworkAddress
Network address type.
Definition
NetworkAddress.h:17
Server
Deskflow server.
Definition
Server.h:41
src
lib
server
ClientListener.h
Generated by
1.18.0