Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
StreamFilter Class Reference

A stream filter. More...

#include <StreamFilter.h>

Inheritance diagram for StreamFilter:
Collaboration diagram for StreamFilter:

Public Member Functions

 StreamFilter (IEventQueue *events, deskflow::IStream *stream, bool adoptStream=true)
 StreamFilter (StreamFilter const &)=delete
 StreamFilter (StreamFilter &&)=delete
 ~StreamFilter () override
StreamFilteroperator= (StreamFilter const &)=delete
StreamFilteroperator= (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::IStreamgetStream () 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.

Detailed Description

A stream filter.

This class wraps a stream. Subclasses provide indirect access to the wrapped stream, typically performing some filtering.

Constructor & Destructor Documentation

◆ StreamFilter() [1/3]

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.

◆ StreamFilter() [2/3]

StreamFilter::StreamFilter ( StreamFilter const & )
delete

◆ StreamFilter() [3/3]

StreamFilter::StreamFilter ( StreamFilter && )
delete

◆ ~StreamFilter()

StreamFilter::~StreamFilter ( )
override

Member Function Documentation

◆ close()

void StreamFilter::close ( )
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.

◆ filterEvent()

void StreamFilter::filterEvent ( const Event & event)
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.

◆ flush()

void StreamFilter::flush ( )
overridevirtual

Flush the stream.

Waits until all buffered data has been written to the stream.

Implements deskflow::IStream.

◆ getEventTarget()

void * StreamFilter::getEventTarget ( ) const
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.

◆ getSize()

uint32_t StreamFilter::getSize ( ) const
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.

◆ getStream()

deskflow::IStream * StreamFilter::getStream ( ) const

Get the stream.

Returns the stream passed to the c'tor.

◆ isReady()

bool StreamFilter::isReady ( ) const
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.

◆ operator=() [1/2]

StreamFilter & StreamFilter::operator= ( StreamFilter && )
delete

◆ operator=() [2/2]

StreamFilter & StreamFilter::operator= ( StreamFilter const & )
delete

◆ read()

uint32_t StreamFilter::read ( void * buffer,
uint32_t n )
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.

◆ shutdownInput()

void StreamFilter::shutdownInput ( )
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.

◆ shutdownOutput()

void StreamFilter::shutdownOutput ( )
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.

◆ write()

void StreamFilter::write ( const void * buffer,
uint32_t n )
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.


The documentation for this class was generated from the following files: