Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
StreamFilter.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 Symless 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 "base/IEventQueue.h"
12#include "io/IStream.h"
13
15
20{
21public:
27 StreamFilter(IEventQueue *events, deskflow::IStream *stream, bool adoptStream = true);
28 StreamFilter(StreamFilter const &) = delete;
30 ~StreamFilter() override;
31
34
35 // IStream overrides
36 // These all just forward to the underlying stream except getEventTarget.
37 // Override as necessary. getEventTarget returns a pointer to this.
38 void close() override;
39 uint32_t read(void *buffer, uint32_t n) override;
40 void write(const void *buffer, uint32_t n) override;
41 void flush() override;
42 void shutdownInput() override;
43 void shutdownOutput() override;
44 void *getEventTarget() const override;
45 bool isReady() const override;
46 uint32_t getSize() const override;
47
49
53
54protected:
56
60 virtual void filterEvent(const Event &);
61
62private:
63 deskflow::IStream *m_stream;
64 bool m_adopted;
65 IEventQueue *m_events;
66};
Event.
Definition Event.h:27
Event queue interface.
Definition IEventQueue.h:32
deskflow::IStream * getStream() const
Get the stream.
Definition StreamFilter.cpp:79
uint32_t getSize() const override
Get bytes available to read.
Definition StreamFilter.cpp:74
virtual void filterEvent(const Event &)
Handle events from source stream.
Definition StreamFilter.cpp:84
StreamFilter(IEventQueue *events, deskflow::IStream *stream, bool adoptStream=true)
Definition StreamFilter.cpp:16
void flush() override
Flush the stream.
Definition StreamFilter.cpp:49
bool isReady() const override
Test if read() will succeed.
Definition StreamFilter.cpp:69
~StreamFilter() override
Definition StreamFilter.cpp:26
StreamFilter & operator=(StreamFilter &&)=delete
void write(const void *buffer, uint32_t n) override
Write to stream.
Definition StreamFilter.cpp:44
void close() override
Close the stream.
Definition StreamFilter.cpp:34
void shutdownOutput() override
Shutdown output.
Definition StreamFilter.cpp:59
StreamFilter & operator=(StreamFilter const &)=delete
StreamFilter(StreamFilter &&)=delete
StreamFilter(StreamFilter const &)=delete
uint32_t read(void *buffer, uint32_t n) override
Read from stream.
Definition StreamFilter.cpp:39
void shutdownInput() override
Shutdown input.
Definition StreamFilter.cpp:54
void * getEventTarget() const override
Get event target.
Definition StreamFilter.cpp:64
Bidirectional stream interface.
Definition IStream.h:24