Deskflow
1.26.0.418
Keyboard and mouse sharing utility
Toggle main menu visibility
Loading...
Searching...
No Matches
TSocketMultiplexerMethodJob.h
Go to the documentation of this file.
1
/*
2
* Deskflow -- mouse and keyboard sharing utility
3
* SPDX-FileCopyrightText: (C) 2012 - 2016 Synergy App Ltd
4
* SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
5
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6
*/
7
8
#pragma once
9
10
#include "
arch/Arch.h
"
11
#include "
net/ISocketMultiplexerJob.h
"
12
14
17
template
<
class
T>
class
TSocketMultiplexerMethodJob
:
public
ISocketMultiplexerJob
18
{
19
public
:
20
using
Method
=
ISocketMultiplexerJob
*(T::*)(
ISocketMultiplexerJob
*,
bool
,
bool
,
bool
);
21
23
TSocketMultiplexerMethodJob
(T *
object
,
Method
method,
ArchSocket
socket,
bool
readable,
bool
writeable);
24
TSocketMultiplexerMethodJob
(
TSocketMultiplexerMethodJob
const
&) =
delete
;
25
TSocketMultiplexerMethodJob
(
TSocketMultiplexerMethodJob
&&) =
delete
;
26
~TSocketMultiplexerMethodJob
()
override
;
27
28
TSocketMultiplexerMethodJob
&
operator=
(
TSocketMultiplexerMethodJob
const
&) =
delete
;
29
TSocketMultiplexerMethodJob
&
operator=
(
TSocketMultiplexerMethodJob
&&) =
delete
;
30
31
// IJob overrides
32
ISocketMultiplexerJob
*
run
(
bool
readable,
bool
writable,
bool
error)
override
;
33
ArchSocket
getSocket
()
const override
;
34
bool
isReadable
()
const override
;
35
bool
isWritable
()
const override
;
36
37
private
:
38
T *m_object;
39
Method
m_method;
40
ArchSocket
m_socket;
41
bool
m_readable;
42
bool
m_writable;
43
void
*m_arg;
44
};
45
46
template
<
class
T>
47
inline
TSocketMultiplexerMethodJob<T>::TSocketMultiplexerMethodJob
(
48
T *
object
,
Method
method,
ArchSocket
socket,
bool
readable,
bool
writable
49
)
50
: m_object(object),
51
m_method(method),
52
m_socket(
ARCH
->copySocket(socket)),
53
m_readable(readable),
54
m_writable(writable)
55
{
56
// do nothing
57
}
58
59
template
<
class
T>
inline
TSocketMultiplexerMethodJob<T>::~TSocketMultiplexerMethodJob
()
60
{
61
ARCH
->closeSocket(m_socket);
62
}
63
64
template
<
class
T>
inline
ISocketMultiplexerJob
*
TSocketMultiplexerMethodJob<T>::run
(
bool
read,
bool
write,
bool
error)
65
{
66
if
(m_object !=
nullptr
) {
67
return
(m_object->*m_method)(
this
, read, write, error);
68
}
69
return
nullptr
;
70
}
71
72
template
<
class
T>
inline
ArchSocket
TSocketMultiplexerMethodJob<T>::getSocket
()
const
73
{
74
return
m_socket;
75
}
76
77
template
<
class
T>
inline
bool
TSocketMultiplexerMethodJob<T>::isReadable
()
const
78
{
79
return
m_readable;
80
}
81
82
template
<
class
T>
inline
bool
TSocketMultiplexerMethodJob<T>::isWritable
()
const
83
{
84
return
m_writable;
85
}
Arch.h
ARCH
#define ARCH
Definition
Arch.h:43
ArchSocket
ArchSocketImpl * ArchSocket
Opaque socket type. An opaque type representing a socket.
Definition
IArchNetwork.h:30
ISocketMultiplexerJob.h
ISocketMultiplexerJob
Socket multiplexer job.
Definition
ISocketMultiplexerJob.h:18
TSocketMultiplexerMethodJob::isWritable
bool isWritable() const override
Check for interest in writability.
Definition
TSocketMultiplexerMethodJob.h:82
TSocketMultiplexerMethodJob::Method
ISocketMultiplexerJob *(T::*)(ISocketMultiplexerJob *, bool, bool, bool) Method
Definition
TSocketMultiplexerMethodJob.h:20
TSocketMultiplexerMethodJob::TSocketMultiplexerMethodJob
TSocketMultiplexerMethodJob(TSocketMultiplexerMethodJob const &)=delete
TSocketMultiplexerMethodJob::getSocket
ArchSocket getSocket() const override
Get the socket.
Definition
TSocketMultiplexerMethodJob.h:72
TSocketMultiplexerMethodJob::TSocketMultiplexerMethodJob
TSocketMultiplexerMethodJob(T *object, Method method, ArchSocket socket, bool readable, bool writeable)
run() invokes object->method(arg)
Definition
TSocketMultiplexerMethodJob.h:47
TSocketMultiplexerMethodJob::~TSocketMultiplexerMethodJob
~TSocketMultiplexerMethodJob() override
Definition
TSocketMultiplexerMethodJob.h:59
TSocketMultiplexerMethodJob::TSocketMultiplexerMethodJob
TSocketMultiplexerMethodJob(TSocketMultiplexerMethodJob &&)=delete
TSocketMultiplexerMethodJob::operator=
TSocketMultiplexerMethodJob & operator=(TSocketMultiplexerMethodJob &&)=delete
TSocketMultiplexerMethodJob::isReadable
bool isReadable() const override
Check for interest in readability.
Definition
TSocketMultiplexerMethodJob.h:77
TSocketMultiplexerMethodJob::run
ISocketMultiplexerJob * run(bool readable, bool writable, bool error) override
Handle socket event.
Definition
TSocketMultiplexerMethodJob.h:64
TSocketMultiplexerMethodJob::operator=
TSocketMultiplexerMethodJob & operator=(TSocketMultiplexerMethodJob const &)=delete
src
lib
net
TSocketMultiplexerMethodJob.h
Generated by
1.18.0