Botan  2.19.1
Crypto and TLS for C++11
Public Member Functions | Protected Member Functions | Friends | List of all members
Botan::Filter Class Referenceabstract

#include <filter.h>

Inheritance diagram for Botan::Filter:
Botan::Base64_Decoder Botan::Base64_Encoder Botan::BitBucket Botan::DataSink Botan::Fanout_Filter Botan::Hex_Decoder Botan::Hex_Encoder Botan::Keyed_Filter

Public Member Functions

virtual bool attachable ()
 
virtual void end_msg ()
 
virtual std::string name () const =0
 
virtual void start_msg ()
 
virtual void write (const uint8_t input[], size_t length)=0
 
virtual ~Filter ()=default
 

Protected Member Functions

 Filter ()
 
 Filter (const Filter &)=delete
 
Filteroperator= (const Filter &)=delete
 
virtual void send (const uint8_t in[], size_t length)
 
void send (uint8_t in)
 
template<typename Alloc >
void send (const std::vector< uint8_t, Alloc > &in)
 
template<typename Alloc >
void send (const std::vector< uint8_t, Alloc > &in, size_t length)
 

Friends

class Fanout_Filter
 
class Pipe
 

Detailed Description

This class represents general abstract filter objects.

Definition at line 21 of file filter.h.

Constructor & Destructor Documentation

virtual Botan::Filter::~Filter ( )
virtualdefault
Botan::Filter::Filter ( )
protected

Definition at line 16 of file filter.cpp.

17  {
18  m_next.resize(1);
19  m_port_num = 0;
20  m_filter_owns = 0;
21  m_owned = false;
22  }
Botan::Filter::Filter ( const Filter )
protecteddelete

Member Function Documentation

virtual bool Botan::Filter::attachable ( )
inlinevirtual

Check whether this filter is an attachable filter.

Returns
true if this filter is attachable, false otherwise

Reimplemented in Botan::SecureQueue, and Botan::DataSink.

Definition at line 52 of file filter.h.

52 { return true; }
virtual void Botan::Filter::end_msg ( )
inlinevirtual

Notify that the current message is finished; flush buffers and do end-of-message processing (if any).

Reimplemented in Botan::Hex_Decoder, Botan::Hex_Encoder, Botan::Base64_Decoder, Botan::Base64_Encoder, and Botan::DataSink_Stream.

Definition at line 46 of file filter.h.

46 { /* default empty */ }
virtual std::string Botan::Filter::name ( ) const
pure virtual
Filter& Botan::Filter::operator= ( const Filter )
protecteddelete
void Botan::Filter::send ( const uint8_t  in[],
size_t  length 
)
protectedvirtual
Parameters
insome input for the filter
lengththe length of in

Definition at line 27 of file filter.cpp.

References write().

Referenced by Botan::Base64_Encoder::end_msg(), Botan::Base64_Decoder::end_msg(), Botan::Hex_Encoder::end_msg(), Botan::Hex_Decoder::end_msg(), Botan::Base64_Decoder::write(), and Botan::Hex_Decoder::write().

28  {
29  if(!length)
30  return;
31 
32  bool nothing_attached = true;
33  for(size_t j = 0; j != total_ports(); ++j)
34  if(m_next[j])
35  {
36  if(m_write_queue.size())
37  m_next[j]->write(m_write_queue.data(), m_write_queue.size());
38  m_next[j]->write(input, length);
39  nothing_attached = false;
40  }
41 
42  if(nothing_attached)
43  m_write_queue += std::make_pair(input, length);
44  else
45  m_write_queue.clear();
46  }
virtual void write(const uint8_t input[], size_t length)=0
void Botan::Filter::send ( uint8_t  in)
inlineprotected
Parameters
insome input for the filter

Definition at line 65 of file filter.h.

References send().

Referenced by send().

65 { send(&in, 1); }
virtual void send(const uint8_t in[], size_t length)
Definition: filter.cpp:27
template<typename Alloc >
void Botan::Filter::send ( const std::vector< uint8_t, Alloc > &  in)
inlineprotected
Parameters
insome input for the filter

Definition at line 71 of file filter.h.

72  {
73  send(in.data(), in.size());
74  }
virtual void send(const uint8_t in[], size_t length)
Definition: filter.cpp:27
template<typename Alloc >
void Botan::Filter::send ( const std::vector< uint8_t, Alloc > &  in,
size_t  length 
)
inlineprotected
Parameters
insome input for the filter
lengththe number of bytes of in to send

Definition at line 81 of file filter.h.

References BOTAN_ASSERT_NOMSG.

82  {
83  BOTAN_ASSERT_NOMSG(length <= in.size());
84  send(in.data(), length);
85  }
virtual void send(const uint8_t in[], size_t length)
Definition: filter.cpp:27
#define BOTAN_ASSERT_NOMSG(expr)
Definition: assert.h:68
virtual void Botan::Filter::start_msg ( )
inlinevirtual

Start a new message. Must be closed by end_msg() before another message can be started.

Definition at line 40 of file filter.h.

40 { /* default empty */ }
virtual void Botan::Filter::write ( const uint8_t  input[],
size_t  length 
)
pure virtual

Write a portion of a message to this filter.

Parameters
inputthe input as a byte array
lengththe length of the byte array input

Implemented in Botan::Fork, Botan::Chain, Botan::BitBucket, Botan::Hex_Decoder, Botan::Hex_Encoder, Botan::Base64_Decoder, Botan::Base64_Encoder, Botan::DataSink_Stream, and Botan::SecureQueue.

Referenced by send(), and Botan::Pipe::write().

Friends And Related Function Documentation

friend class Fanout_Filter
friend

Definition at line 107 of file filter.h.

friend class Pipe
friend

Definition at line 106 of file filter.h.


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