MySQL 26.7.0
Source Code Documentation
prefetched_ifile.h
Go to the documentation of this file.
1// Copyright (c) 2026, Oracle and/or its affiliates.
2//
3// This program is free software; you can redistribute it and/or modify
4// it under the terms of the GNU General Public License, version 2.0,
5// as published by the Free Software Foundation.
6//
7// This program is designed to work with certain software (including
8// but not limited to OpenSSL) that is licensed under separate terms,
9// as designated in a particular file or component or in included license
10// documentation. The authors of MySQL hereby grant you an additional
11// permission to link the program and your derivative works with the
12// separately licensed software that they have either included with
13// the program or referenced in the documentation.
14//
15// This program is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License, version 2.0, for more details.
19//
20// You should have received a copy of the GNU General Public License
21// along with this program; if not, write to the Free Software
22// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
23
24#ifndef MYSQL_CSA_STORAGE_RELAY_LOG_PREFETCHED_IFILE_H
25#define MYSQL_CSA_STORAGE_RELAY_LOG_PREFETCHED_IFILE_H
26
27#include <atomic>
28#include <cstring>
29#include <memory>
30#include <vector>
31
32#include "sql/basic_istream.h" // Basic_istream
33#include "sql/binlog_istream.h" // Basic_binlog_ifile
34#include "sql/binlog_reader.h"
36#include "sql/log_event.h" // Log_event
37
38namespace mysql::csa {
39
40/// Implementation of the Basic_binlog_ifile, which works on the
41/// prefetched stream (Istream_prefetched)
42/// Exposes additional function to set prefetcher (since legacy design does
43/// not allow to use a custom constructor - see Basic_binlog_file_reader).
45 public:
47
48 /// Sets the prefetcher. Prefetcher must be set before opening the first file.
49 /// Later on, same prefetcher object is reused to initialize
50 /// Istream_prefetched object, which uses asynchronous prefetcher to get
51 /// data.
52 /// @param prefetcher Shared prefetcher object.
53 void set_prefetcher(Log_prefetcher_sptr prefetcher);
54
55 protected:
56 /// Creates stream object "from the file". Data will be obtained
57 /// via prefetcher
58 std::unique_ptr<Basic_seekable_istream> open_file(
59 const char *file_name) override;
60
61 /// File currently opened
62 std::string m_current_file;
63 /// Prefetcher object we need to pass into created stream
65};
66
67} // namespace mysql::csa
68
69#endif // MYSQL_CSA_STORAGE_RELAY_LOG_PREFETCHED_IFILE_H
Base class of binlog input files.
Definition: binlog_istream.h:159
const std::string & file_name() const
Definition: binlog_istream.h:188
Basic_binlog_ifile(Binlog_read_error *binlog_read_error)
Definition: binlog_istream.cc:176
Implementation of the Basic_binlog_ifile, which works on the prefetched stream (Istream_prefetched) E...
Definition: prefetched_ifile.h:44
std::string m_current_file
File currently opened.
Definition: prefetched_ifile.h:62
void set_prefetcher(Log_prefetcher_sptr prefetcher)
Sets the prefetcher.
Definition: prefetched_ifile.cpp:36
Log_prefetcher_sptr m_prefetcher
Prefetcher object we need to pass into created stream.
Definition: prefetched_ifile.h:64
std::unique_ptr< Basic_seekable_istream > open_file(const char *file_name) override
Creates stream object "from the file".
Definition: prefetched_ifile.cpp:28
Binary log event definitions.
Definition: channel.cpp:28
std::shared_ptr< Log_prefetcher > Log_prefetcher_sptr
Definition: log_prefetcher.h:48