Deskflow 1.22.0.197
Keyboard and mouse sharing utility
|
A stream filter. More...
#include <StreamFilter.h>
Public Member Functions | |
StreamFilter (IEventQueue *events, deskflow::IStream *stream, bool adoptStream=true) | |
StreamFilter (StreamFilter const &)=delete | |
StreamFilter (StreamFilter &&)=delete | |
~StreamFilter () override | |
StreamFilter & | operator= (StreamFilter const &)=delete |
StreamFilter & | operator= (StreamFilter &&)=delete |
void | close () override |
Close the stream. | |
uint32_t | read (void *buffer, uint32_t n) override |
Read from stream. | |
void | write (const void *buffer, uint32_t n) override |
Write to stream. | |
void | flush () override |
Flush the stream. | |
void | shutdownInput () override |
Shutdown input. | |
void | shutdownOutput () override |
Shutdown output. | |
void * | getEventTarget () const override |
Get event target. | |
bool | isReady () const override |
Test if read() will succeed. | |
uint32_t | getSize () const override |
Get bytes available to read. | |
deskflow::IStream * | getStream () const |
Get the stream. | |
Public Member Functions inherited from deskflow::IStream | |
IStream ()=default | |
Public Member Functions inherited from IInterface | |
virtual | ~IInterface ()=default |
Interface destructor does nothing. |
Protected Member Functions | |
virtual void | filterEvent (const Event &) |
Handle events from source stream. |
A stream filter.
This class wraps a stream. Subclasses provide indirect access to the wrapped stream, typically performing some filtering.
StreamFilter::StreamFilter | ( | IEventQueue * | events, |
deskflow::IStream * | stream, | ||
bool | adoptStream = true ) |
Create a wrapper around stream
. Iff adoptStream
is true then this object takes ownership of the stream and will delete it in the d'tor.
|
delete |
|
delete |
|
override |
|
overridevirtual |
Close the stream.
Closes the stream. Pending input data and buffered output data are discarded. Use flush()
before close()
to send buffered output data. Attempts to read()
after a close return 0, attempts to write()
generate output error events, and attempts to flush()
return immediately.
Implements deskflow::IStream.
|
protectedvirtual |
Handle events from source stream.
Does the event filtering. The default simply dispatches an event identical except using this object as the event target.
Reimplemented in PacketStreamFilter.
|
overridevirtual |
Flush the stream.
Waits until all buffered data has been written to the stream.
Implements deskflow::IStream.
|
overridevirtual |
Get event target.
Returns the event target for events generated by this stream. It should be the source stream in a chain of stream filters.
Implements deskflow::IStream.
|
overridevirtual |
Get bytes available to read.
Returns a conservative estimate of the available bytes to read (i.e. a number not greater than the actual number of bytes). Some streams may not be able to determine this and will always return zero.
Implements deskflow::IStream.
deskflow::IStream * StreamFilter::getStream | ( | ) | const |
Get the stream.
Returns the stream passed to the c'tor.
|
overridevirtual |
Test if read()
will succeed.
Returns true iff an immediate read()
will return data. This may or may not be the same as getSize()
> 0, depending on the stream type.
Implements deskflow::IStream.
|
delete |
|
delete |
|
overridevirtual |
Read from stream.
Read up to n
bytes into buffer
, returning the number read (zero if no data is available or input is shutdown). buffer
may be nullptr in which case the data is discarded.
Implements deskflow::IStream.
|
overridevirtual |
Shutdown input.
Shutdown the input side of the stream. Any pending input data is discarded and further reads immediately return 0.
Implements deskflow::IStream.
|
overridevirtual |
Shutdown output.
Shutdown the output side of the stream. Any buffered output data is discarded and further writes generate output error events. Use flush()
before shutdownOutput()
to send buffered output data.
Implements deskflow::IStream.
|
overridevirtual |
Write to stream.
Write n
bytes from buffer
to the stream. If this can't complete immediately it will block. Data may be buffered in order to return more quickly. A output error event is generated when writing fails.
Implements deskflow::IStream.