StormByte-Buffer 2.0.0
C++26 buffer module of the StormByte suite
 
Loading...
Searching...
No Matches
StormByte::Buffer::Pipe Class Referenceabstract

One transformation in a Pipeline. More...

#include <StormByte/buffer/pipe.hxx>

Inheritance diagram for StormByte::Buffer::Pipe:
Collaboration diagram for StormByte::Buffer::Pipe:

Public Member Functions

 Pipe (const Pipe &other)
 Copy constructor.
 
 Pipe (Pipe &&other) noexcept
 Move constructor.
 
virtual ~Pipe () noexcept
 Virtual destructor.
 
Pipe & operator= (const Pipe &other)
 Copy assignment.
 
Pipe & operator= (Pipe &&other) noexcept
 Move assignment.
 
virtual void Run (ReadOnly &in, WriteOnly &out, const StormByte::Shared< StormByte::Logger::Log > &log)=0
 Run this pipe.
 
PointerType Clone () const noexcept override=0
 Polymorphic copy.
 
PointerType Move () noexcept override=0
 Polymorphic move.
 
- Public Member Functions inherited from StormByte::Clonable< Pipe, StormByte::Unique< Pipe > >
constexpr Clonable ()=default
 
constexpr Clonable (const Clonable &)=default
 
constexpr Clonable (Clonable &&) noexcept=default
 
constexpr Clonable & operator= (const Clonable &)=default
 
constexpr Clonable & operator= (Clonable &&) noexcept=default
 
virtual constexpr ~Clonable () noexcept=default
 

Protected Member Functions

 Pipe () noexcept=default
 Construct an abstract pipe.
 

Additional Inherited Members

- Public Types inherited from StormByte::Clonable< Pipe, StormByte::Unique< Pipe > >
typedef SmartPointer PointerType
 
- Static Public Member Functions inherited from StormByte::Clonable< Pipe, StormByte::Unique< Pipe > >
static PointerType MakePointer (Args &&... args)
 

Detailed Description

One transformation in a Pipeline.

A leaf implements Run, Clone and Move. Pipeline stores the Unique that Clone / Move return. Allocation is on Base's heap.

Constructor & Destructor Documentation

◆ Pipe() [1/3]

StormByte::Buffer::Pipe::Pipe ( const Pipe &  other)

Copy constructor.

Defined in this module.

Parameters
otherInstance to copy.

◆ Pipe() [2/3]

StormByte::Buffer::Pipe::Pipe ( Pipe &&  other)
noexcept

Move constructor.

Defined in this module.

Parameters
otherInstance to take from.

◆ ~Pipe()

virtual StormByte::Buffer::Pipe::~Pipe ( )
virtualnoexcept

Virtual destructor.

Out-of-line for the DLL boundary.

◆ Pipe() [3/3]

StormByte::Buffer::Pipe::Pipe ( )
protecteddefaultnoexcept

Construct an abstract pipe.

Member Function Documentation

◆ Clone()

PointerType StormByte::Buffer::Pipe::Clone ( ) const
overridepure virtualnoexcept

Polymorphic copy.

Allocated on Base's heap.

Returns
Owned handle. The source is not touched.

Implements StormByte::Clonable< Pipe, StormByte::Unique< Pipe > >.

◆ Move()

PointerType StormByte::Buffer::Pipe::Move ( )
overridepure virtualnoexcept

Polymorphic move.

Allocated on Base's heap.

Returns
Owned handle. The source must not be used afterwards.

Implements StormByte::Clonable< Pipe, StormByte::Unique< Pipe > >.

◆ operator=() [1/2]

Pipe & StormByte::Buffer::Pipe::operator= ( const Pipe &  other)

Copy assignment.

Defined in this module.

Parameters
otherInstance to copy.
Returns
*this.

◆ operator=() [2/2]

Pipe & StormByte::Buffer::Pipe::operator= ( Pipe &&  other)
noexcept

Move assignment.

Defined in this module.

Parameters
otherInstance to take from.
Returns
*this.

◆ Run()

virtual void StormByte::Buffer::Pipe::Run ( ReadOnly &  in,
WriteOnly &  out,
const StormByte::Shared< StormByte::Logger::Log > &  log 
)
pure virtual

Run this pipe.

Parameters
inSource. Lives for the call.
outSink. Lives for the call. Close or SetError before return.
logShared handle. Empty if the caller passed none. Already scoped Buffer/Pipeline when set.

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