Deskflow
1.26.0.418
Keyboard and mouse sharing utility
Toggle main menu visibility
Loading...
Searching...
No Matches
Event.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) 2004 Chris Schoeneman
5
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6
*/
7
8
#pragma once
9
10
#include "
EventTypes.h
"
11
12
#include <assert.h>
13
#include <cstdlib>
14
15
using
deskflow::EventTypes
;
16
17
class
EventData
18
{
19
public
:
20
EventData
() =
default
;
21
virtual
~EventData
() =
default
;
22
};
23
24
class
ExitEventData
:
public
EventData
25
{
26
public
:
27
explicit
ExitEventData
(
int
exitCode
) : m_exitCode(
exitCode
) {};
28
~ExitEventData
()
override
=
default
;
29
int
exitCode
()
const
30
{
31
return
m_exitCode;
32
}
33
34
private
:
35
int
m_exitCode;
36
};
37
39
42
class
Event
43
{
44
public
:
45
using
Flags
= uint32_t;
46
struct
EventFlags
47
{
48
inline
static
const
Flags
NoFlags
= 0x00;
49
inline
static
const
Flags
DeliverImmediately
= 0x01;
50
inline
static
const
Flags
DontFreeData
= 0x02;
51
};
52
53
Event
() =
default
;
54
Event
(
const
Event
&) =
delete
;
55
Event
(
Event
&&other) =
default
;
56
Event
&
operator=
(
const
Event
&) =
delete
;
57
Event
&
operator=
(
Event
&&) =
default
;
58
60
68
explicit
Event
(
EventTypes
type
,
void
*target =
nullptr
,
void
*
data
=
nullptr
,
Flags
flags
=
EventFlags::NoFlags
)
69
: m_type(
type
),
70
m_target(target),
71
m_data(
data
),
72
m_flags(
flags
)
73
{
74
// do nothing
75
}
76
77
Event
(
EventTypes
type
,
void
*target,
EventData
*dataObject) : m_type(
type
), m_target(target), m_dataObject(dataObject)
78
{
79
// do nothing
80
}
81
83
84
86
89
static
void
deleteData
(
const
Event
&event)
90
{
91
switch
(event.
getType
()) {
92
using
enum
EventTypes
;
93
case
Unknown:
94
case
System:
95
case
Timer:
96
break
;
97
98
default
:
99
if
((event.
getFlags
() &
EventFlags::DontFreeData
) == 0) {
100
free(event.
getData
());
101
delete
event
.getDataObject();
102
}
103
break
;
104
}
105
}
106
108
112
void
setDataObject
(
EventData
*dataObject)
113
{
114
assert(m_dataObject ==
nullptr
);
115
m_dataObject = dataObject;
116
};
117
119
121
123
126
EventTypes
getType
()
const
127
{
128
return
m_type;
129
}
130
132
135
void
*
getTarget
()
const
136
{
137
return
m_target;
138
}
139
141
144
void
*
getData
()
const
145
{
146
return
m_data;
147
}
148
150
155
EventData
*
getDataObject
()
const
156
{
157
return
m_dataObject;
158
}
159
161
164
Flags
getFlags
()
const
165
{
166
return
m_flags;
167
}
168
170
171
private
:
172
EventTypes
m_type =
EventTypes::Unknown
;
173
void
*m_target =
nullptr
;
174
void
*m_data =
nullptr
;
175
Flags
m_flags =
EventFlags::NoFlags
;
176
EventData
*m_dataObject =
nullptr
;
177
};
flags
static void FAR int int flags
Definition
ArchNetworkWinsock.cpp:39
data
static int void FAR * data
Definition
ArchNetworkWinsock.cpp:36
type
static int type
Definition
ArchNetworkWinsock.cpp:46
EventTypes.h
EventData
Definition
Event.h:18
EventData::~EventData
virtual ~EventData()=default
EventData::EventData
EventData()=default
Event::Flags
uint32_t Flags
Definition
Event.h:45
Event::operator=
Event & operator=(const Event &)=delete
Event::getTarget
void * getTarget() const
Get the event target.
Definition
Event.h:135
Event::operator=
Event & operator=(Event &&)=default
Event::Event
Event(Event &&other)=default
Event::getDataObject
EventData * getDataObject() const
Get the event data (non-POD).
Definition
Event.h:155
Event::Event
Event(EventTypes type, void *target=nullptr, void *data=nullptr, Flags flags=EventFlags::NoFlags)
Create Event with data (POD).
Definition
Event.h:68
Event::getData
void * getData() const
Get the event data (POD).
Definition
Event.h:144
Event::deleteData
static void deleteData(const Event &event)
Release event data.
Definition
Event.h:89
Event::Event
Event(const Event &)=delete
Event::Event
Event(EventTypes type, void *target, EventData *dataObject)
Definition
Event.h:77
Event::getType
EventTypes getType() const
Get event type.
Definition
Event.h:126
Event::setDataObject
void setDataObject(EventData *dataObject)
Set data (non-POD).
Definition
Event.h:112
Event::Event
Event()=default
Event::getFlags
Flags getFlags() const
Get event flags.
Definition
Event.h:164
ExitEventData::ExitEventData
ExitEventData(int exitCode)
Definition
Event.h:27
ExitEventData::~ExitEventData
~ExitEventData() override=default
ExitEventData::exitCode
int exitCode() const
Definition
Event.h:29
deskflow::EventTypes
EventTypes
Definition
EventTypes.h:13
deskflow::EventTypes::Unknown
@ Unknown
Definition
EventTypes.h:17
Event::EventFlags
Definition
Event.h:47
Event::EventFlags::NoFlags
static const Flags NoFlags
No flags.
Definition
Event.h:48
Event::EventFlags::DontFreeData
static const Flags DontFreeData
Don't free data in deleteData.
Definition
Event.h:50
Event::EventFlags::DeliverImmediately
static const Flags DeliverImmediately
Dispatch and free event immediately.
Definition
Event.h:49
src
lib
base
Event.h
Generated by
1.18.0