Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
PacketStreamFilter.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
10#include "io/StreamBuffer.h"
11#include "io/StreamFilter.h"
12
13#include <mutex>
14
15class IEventQueue;
16
18
22{
23public:
24 PacketStreamFilter(IEventQueue *events, deskflow::IStream *stream, bool adoptStream = true);
25 ~PacketStreamFilter() override = default;
26
27 // IStream overrides
28 void close() override;
29 uint32_t read(void *buffer, uint32_t n) override;
30 void write(const void *buffer, uint32_t n) override;
31 void shutdownInput() override;
32 bool isReady() const override;
33 uint32_t getSize() const override;
34
35protected:
36 // StreamFilter overrides
37 void filterEvent(const Event &) override;
38
39private:
40 bool isReadyNoLock() const;
41 bool readPacketSize();
42 bool readMore();
43
44private:
45 mutable std::mutex m_mutex;
46 uint32_t m_size = 0;
47 StreamBuffer m_buffer;
48 bool m_inputShutdown = false;
49 IEventQueue *m_events = nullptr;
50};
Event.
Definition Event.h:27
Event queue interface.
Definition IEventQueue.h:32
void shutdownInput() override
Shutdown input.
Definition PacketStreamFilter.cpp:84
void filterEvent(const Event &) override
Handle events from source stream.
Definition PacketStreamFilter.cpp:156
uint32_t getSize() const override
Get bytes available to read.
Definition PacketStreamFilter.cpp:98
uint32_t read(void *buffer, uint32_t n) override
Read from stream.
Definition PacketStreamFilter.cpp:34
void close() override
Close the stream.
Definition PacketStreamFilter.cpp:26
bool isReady() const override
Test if read() will succeed.
Definition PacketStreamFilter.cpp:92
PacketStreamFilter(IEventQueue *events, deskflow::IStream *stream, bool adoptStream=true)
Definition PacketStreamFilter.cpp:19
void write(const void *buffer, uint32_t n) override
Write to stream.
Definition PacketStreamFilter.cpp:70
~PacketStreamFilter() override=default
FIFO of bytes.
Definition StreamBuffer.h:20
StreamFilter(IEventQueue *events, deskflow::IStream *stream, bool adoptStream=true)
Definition StreamFilter.cpp:16
Bidirectional stream interface.
Definition IStream.h:24