Crypto++ 8.9
Free C++ class library of cryptographic schemes
Public Types | Public Member Functions | List of all members
Redirector Class Reference

Redirect input to another BufferedTransformation without owning it. More...

#include <filters.h>

+ Inheritance diagram for Redirector:

Public Types

enum  Behavior { DATA_ONLY = 0x00 , PASS_SIGNALS = 0x01 , PASS_WAIT_OBJECTS = 0x02 , PASS_EVERYTHING = PASS_SIGNALS | PASS_WAIT_OBJECTS }
 Controls signal propagation behavior. More...
 

Public Member Functions

 Redirector ()
 Construct a Redirector.
 
 Redirector (BufferedTransformation &target, Behavior behavior=PASS_EVERYTHING)
 Construct a Redirector.
 
void Redirect (BufferedTransformation &target)
 Redirect input to another BufferedTransformation.
 
void StopRedirection ()
 Stop redirecting input.
 
Behavior GetBehavior ()
 Retrieve signal propagation behavior.
 
void SetBehavior (Behavior behavior)
 Set signal propagation behavior.
 
bool GetPassSignals () const
 Retrieve signal propagation behavior.
 
void SetPassSignals (bool pass)
 Set signal propagation behavior.
 
bool GetPassWaitObjects () const
 Retrieve signal propagation behavior.
 
void SetPassWaitObjects (bool pass)
 Set signal propagation behavior.
 
bool CanModifyInput () const
 
void Initialize (const NameValuePairs &parameters, int propagation)
 Initialize or reinitialize this object, with signal propagation.
 
byteCreatePutSpace (size_t &size)
 
size_t Put2 (const byte *inString, size_t length, int messageEnd, bool blocking)
 
bool Flush (bool hardFlush, int propagation=-1, bool blocking=true)
 Flush buffered input and/or output, with signal propagation.
 
bool MessageSeriesEnd (int propagation=-1, bool blocking=true)
 
byteChannelCreatePutSpace (const std::string &channel, size_t &size)
 
size_t ChannelPut2 (const std::string &channel, const byte *begin, size_t length, int messageEnd, bool blocking)
 
size_t ChannelPutModifiable2 (const std::string &channel, byte *begin, size_t length, int messageEnd, bool blocking)
 
bool ChannelFlush (const std::string &channel, bool completeFlush, int propagation=-1, bool blocking=true)
 
bool ChannelMessageSeriesEnd (const std::string &channel, int propagation=-1, bool blocking=true)
 
unsigned int GetMaxWaitObjectCount () const
 
void GetWaitObjects (WaitObjectContainer &container, CallStack const &callStack)
 
- Public Member Functions inherited from CustomFlushPropagation< T >

Detailed Description

Redirect input to another BufferedTransformation without owning it.

Since
Crypto++ 4.0

Definition at line 883 of file filters.h.

Member Enumeration Documentation

◆ Behavior

Controls signal propagation behavior.

Enumerator
DATA_ONLY 

Pass data only.

PASS_SIGNALS 

Pass signals.

PASS_WAIT_OBJECTS 

Pass wait events.

PASS_EVERYTHING 

Pass everything.

PASS_EVERYTHING is default

Definition at line 888 of file filters.h.

Constructor & Destructor Documentation

◆ ~Redirector()

virtual Redirector::~Redirector ( )
inlinevirtual

Definition at line 901 of file filters.h.

◆ Redirector() [1/2]

Redirector::Redirector ( )
inline

Construct a Redirector.

Definition at line 904 of file filters.h.

◆ Redirector() [2/2]

Redirector::Redirector ( BufferedTransformation & target,
Behavior behavior = PASS_EVERYTHING )
inline

Construct a Redirector.

Parameters
targetthe destination BufferedTransformation
behaviorBehavior "flags" specifying signal propagation

Definition at line 909 of file filters.h.

Member Function Documentation

◆ Redirect()

void Redirector::Redirect ( BufferedTransformation & target)
inline

Redirect input to another BufferedTransformation.

Parameters
targetthe destination BufferedTransformation

Definition at line 914 of file filters.h.

◆ StopRedirection()

void Redirector::StopRedirection ( )
inline

Stop redirecting input.

Definition at line 916 of file filters.h.

◆ GetBehavior()

Behavior Redirector::GetBehavior ( )
inline

Retrieve signal propagation behavior.

Returns
the current signal propagation behavior

Definition at line 920 of file filters.h.

◆ SetBehavior()

void Redirector::SetBehavior ( Behavior behavior)
inline

Set signal propagation behavior.

Parameters
behaviorthe new signal propagation behavior

Definition at line 923 of file filters.h.

◆ GetPassSignals()

bool Redirector::GetPassSignals ( ) const
inline

Retrieve signal propagation behavior.

Returns
true if the Redirector passes signals, false otherwise.

Definition at line 926 of file filters.h.

◆ SetPassSignals()

void Redirector::SetPassSignals ( bool pass)
inline

Set signal propagation behavior.

Parameters
passflag indicating if the Redirector should pass signals

Definition at line 929 of file filters.h.

◆ GetPassWaitObjects()

bool Redirector::GetPassWaitObjects ( ) const
inline

Retrieve signal propagation behavior.

Returns
true if the Redirector passes wait objects, false otherwise.

Definition at line 932 of file filters.h.

◆ SetPassWaitObjects()

void Redirector::SetPassWaitObjects ( bool pass)
inline

Set signal propagation behavior.

Parameters
passflag indicating if the Redirector should pass wait objects

Definition at line 935 of file filters.h.

◆ CanModifyInput()

bool Redirector::CanModifyInput ( ) const
inline

Definition at line 937 of file filters.h.

◆ Initialize()

void Redirector::Initialize ( const NameValuePairs & parameters,
int propagation )
virtual

Initialize or reinitialize this object, with signal propagation.

Parameters
parametersa set of NameValuePairs to initialize or reinitialize this object
propagationthe number of attached transformations the Initialize() signal should be passed

Initialize() is used to initialize or reinitialize an object using a variable number of arbitrarily typed arguments. The function avoids the need for multiple constructors providing all possible combintations of configurable parameters.

propagation count includes this object. Setting propagation to 1 means this object only. Setting propagation to -1 means unlimited propagation.

Implements CustomSignalPropagation< Sink >.

◆ CreatePutSpace()

byte * Redirector::CreatePutSpace ( size_t & size)
inline

Definition at line 941 of file filters.h.

◆ Put2()

size_t Redirector::Put2 ( const byte * inString,
size_t length,
int messageEnd,
bool blocking )
inline

Definition at line 951 of file filters.h.

◆ Flush()

bool Redirector::Flush ( bool hardFlush,
int propagation = -1,
bool blocking = true )
inlinevirtual

Flush buffered input and/or output, with signal propagation.

Parameters
hardFlushis used to indicate whether all data should be flushed
propagationthe number of attached transformations the Flush() signal should be passed
blockingspecifies whether the object should block when processing input

propagation count includes this object. Setting propagation to 1 means this object only. Setting propagation to -1 means unlimited propagation.

Note
Hard flushes must be used with care. It means try to process and output everything, even if there may not be enough data to complete the action. For example, hard flushing a HexDecoder would cause an error if you do it after inputing an odd number of hex encoded characters.
For some types of filters, like ZlibDecompressor, hard flushes can only be done at "synchronization points". These synchronization points are positions in the data stream that are created by hard flushes on the corresponding reverse filters, in this example ZlibCompressor. This is useful when zlib compressed data is moved across a network in packets and compression state is preserved across packets, as in the SSH2 protocol.

Implements CustomFlushPropagation< T >.

Definition at line 953 of file filters.h.

◆ MessageSeriesEnd()

bool Redirector::MessageSeriesEnd ( int propagation = -1,
bool blocking = true )
inline

Definition at line 955 of file filters.h.

◆ ChannelCreatePutSpace()

byte * Redirector::ChannelCreatePutSpace ( const std::string & channel,
size_t & size )
inline

Definition at line 958 of file filters.h.

◆ ChannelPut2()

size_t Redirector::ChannelPut2 ( const std::string & channel,
const byte * begin,
size_t length,
int messageEnd,
bool blocking )
inline

Definition at line 968 of file filters.h.

◆ ChannelPutModifiable2()

size_t Redirector::ChannelPutModifiable2 ( const std::string & channel,
byte * begin,
size_t length,
int messageEnd,
bool blocking )
inline

Definition at line 970 of file filters.h.

◆ ChannelFlush()

bool Redirector::ChannelFlush ( const std::string & channel,
bool completeFlush,
int propagation = -1,
bool blocking = true )
inline

Definition at line 972 of file filters.h.

◆ ChannelMessageSeriesEnd()

bool Redirector::ChannelMessageSeriesEnd ( const std::string & channel,
int propagation = -1,
bool blocking = true )
inline

Definition at line 974 of file filters.h.

◆ GetMaxWaitObjectCount()

unsigned int Redirector::GetMaxWaitObjectCount ( ) const
inline

Definition at line 977 of file filters.h.

◆ GetWaitObjects()

void Redirector::GetWaitObjects ( WaitObjectContainer & container,
CallStack const & callStack )
inline

Definition at line 979 of file filters.h.


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