MySQL 8.4.0
Source Code Documentation
Binlog_encryption_istream Class Reference

Seekable_istream with decryption feature. More...

#include <binlog_istream.h>

Inheritance diagram for Binlog_encryption_istream:

Public Member Functions

 ~Binlog_encryption_istream () override
bool open (std::unique_ptr< Basic_seekable_istream > down_istream, Binlog_read_error *binlog_read_error)
 Initialize the context used in the decryption stream. More...
void close ()
 Closes the stream. More...
ssize_t read (unsigned char *buffer, size_t length) override
 Read some bytes from the input stream. More...
bool seek (my_off_t offset) override
 Puts the read position to a given offset. More...
my_off_t length () override
 The total length of the stream. More...
- Public Member Functions inherited from Basic_seekable_istream
 ~Basic_seekable_istream () override=default
- Public Member Functions inherited from Basic_istream
virtual ~Basic_istream ()=default

Private Attributes

std::unique_ptr< Stream_cipherm_decryptor
std::unique_ptr< Basic_seekable_istreamm_down_istream

Detailed Description

Seekable_istream with decryption feature.

It can be setup into an stream pipeline. In the pipeline, it decrypts the data from down stream and then feeds the decrypted data into up stream.

Constructor & Destructor Documentation

◆ ~Binlog_encryption_istream()

Binlog_encryption_istream::~Binlog_encryption_istream ( )

Member Function Documentation

◆ close()

void Binlog_encryption_istream::close ( )

Closes the stream.

It also closes the down stream and the decryptor.

◆ length()

my_off_t Binlog_encryption_istream::length ( )

The total length of the stream.

Implements Basic_seekable_istream.

◆ open()

bool Binlog_encryption_istream::open ( std::unique_ptr< Basic_seekable_istream down_istream,
Binlog_read_error binlog_read_error 

Initialize the context used in the decryption stream.

[in]down_istreamThe down stream where the encrypted data is stored.
[in]binlog_read_errorBinlog_encryption_istream doesn't own a Binlog_read_error. So the caller should provide one to it. When error happens, the error type will be set into 'binlog_read_error'.
Return values

◆ read()

ssize_t Binlog_encryption_istream::read ( unsigned char *  buffer,
size_t  length 

Read some bytes from the input stream.

It should read exact 'length' bytes unless error happens or it reaches the end of the stream. It should block when reaching the end of a pipe that is not closed.

[out]bufferWhere data will be put in.
[in]lengthThe number of bytes that you want to read. length should not be larger than max long.
Return values fall into three cases:
Return values
'length'Read 'length' bytes successfully
>=0Reach EOF, return the number of bytes actually read. It is between 0 and length-1.

Implements Basic_istream.

◆ seek()

bool Binlog_encryption_istream::seek ( my_off_t  offset)

Puts the read position to a given offset.

The offset counts from the beginning of the stream. In case an implementing class transforms the data in a way that does not preserve positions, the offset here will be relative to the bytes that are read out from the stream, not relative to the bytes in lower layer storage.

it is allowed for a subclass to return success even if the position is greater than the size of the file. Error may be returned by the next read for this case. Users should call length() if they need to check that the position is within bounds.

[in]offsetWhere the read position will be.
Return values

Implements Basic_seekable_istream.

Member Data Documentation

◆ m_decryptor

std::unique_ptr<Stream_cipher> Binlog_encryption_istream::m_decryptor

◆ m_down_istream

std::unique_ptr<Basic_seekable_istream> Binlog_encryption_istream::m_down_istream

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