Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
SimpleEventQueueBuffer.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless 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
12
13#include <deque>
15
19{
20public:
24 ~SimpleEventQueueBuffer() override;
25
28
29 // IEventQueueBuffer overrides
30 void init() override
31 {
32 // do nothing
33 }
34 void waitForEvent(double timeout) override;
35 Type getEvent(Event &event, uint32_t &dataID) override;
36 bool addEvent(uint32_t dataID) override;
37 bool isEmpty() const override;
38 EventQueueTimer *newTimer(double duration, bool oneShot) const override;
39 void deleteTimer(EventQueueTimer *) const override;
40
41private:
42 using EventDeque = std::deque<uint32_t>;
43
44 ArchMutex m_queueMutex;
45 ArchCond m_queueReadyCond;
46 bool m_queueReady = false;
47 EventDeque m_queue;
48};
static fd_set FAR fd_set FAR fd_set FAR const struct timeval FAR * timeout
Definition ArchNetworkWinsock.cpp:39
ArchMutexImpl * ArchMutex
Opaque mutex type. An opaque type representing a mutex.
Definition IArchMultithread.h:39
ArchCondImpl * ArchCond
Opaque condition variable type. An opaque type representing a condition variable.
Definition IArchMultithread.h:25
Definition SimpleEventQueueBuffer.cpp:13
Event.
Definition Event.h:27
Event queue buffer interface.
Definition IEventQueueBuffer.h:21
Type
Definition IEventQueueBuffer.h:24
SimpleEventQueueBuffer & operator=(SimpleEventQueueBuffer &&)=delete
~SimpleEventQueueBuffer() override
Definition SimpleEventQueueBuffer.cpp:26
Type getEvent(Event &event, uint32_t &dataID) override
Get the next event.
Definition SimpleEventQueueBuffer.cpp:48
bool addEvent(uint32_t dataID) override
Post an event.
Definition SimpleEventQueueBuffer.cpp:60
bool isEmpty() const override
Check if event queue buffer is empty.
Definition SimpleEventQueueBuffer.cpp:71
SimpleEventQueueBuffer & operator=(SimpleEventQueueBuffer const &)=delete
void waitForEvent(double timeout) override
Block waiting for an event.
Definition SimpleEventQueueBuffer.cpp:32
SimpleEventQueueBuffer(SimpleEventQueueBuffer const &)=delete
SimpleEventQueueBuffer()
Definition SimpleEventQueueBuffer.cpp:20
EventQueueTimer * newTimer(double duration, bool oneShot) const override
Create a timer object.
Definition SimpleEventQueueBuffer.cpp:77
void init() override
Initialize.
Definition SimpleEventQueueBuffer.h:30
void deleteTimer(EventQueueTimer *) const override
Destroy a timer object.
Definition SimpleEventQueueBuffer.cpp:82
SimpleEventQueueBuffer(SimpleEventQueueBuffer &&)=delete