Seastar
High performance C++ framework for concurrent servers
layered_file.hh
1/*
2 * This file is open source software, licensed to you under the terms
3 * of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4 * distributed with this work for additional information regarding copyright
5 * ownership. You may not use this file except in compliance with the License.
6 *
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing,
12 * software distributed under the License is distributed on an
13 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 * KIND, either express or implied. See the License for the
15 * specific language governing permissions and limitations
16 * under the License.
17 */
18/*
19 * Copyright 2020 ScyllaDB
20 */
21
22#pragma once
23
24#ifndef SEASTAR_MODULE
25#include <seastar/core/file.hh>
26#include <seastar/util/modules.hh>
27#endif
28
29namespace seastar {
30
33
42SEASTAR_MODULE_EXPORT
44protected:
45 file _underlying_file;
46public:
50 : _underlying_file(std::move(underlying_file)) {
51 _memory_dma_alignment = _underlying_file.memory_dma_alignment();
52 _disk_read_dma_alignment = _underlying_file.disk_read_dma_alignment();
53 _disk_write_dma_alignment = _underlying_file.disk_write_dma_alignment();
54 _disk_overwrite_dma_alignment = _underlying_file.disk_overwrite_dma_alignment();
55 }
56
58 file& underlying_file() noexcept {
59 return _underlying_file;
60 }
61
63 const file& underlying_file() const noexcept {
64 return _underlying_file;
65 }
66};
67
68
70
71
72}
Definition: file.hh:127
Definition: file.hh:177
uint64_t memory_dma_alignment() const noexcept
Alignment requirement for data buffers.
Definition: file.hh:248
uint64_t disk_read_dma_alignment() const noexcept
Alignment requirement for file offsets (for reads)
Definition: file.hh:228
uint64_t disk_overwrite_dma_alignment() const noexcept
Definition: file.hh:243
uint64_t disk_write_dma_alignment() const noexcept
Alignment requirement for file offsets (for writes)
Definition: file.hh:233
Definition: layered_file.hh:43
layered_file_impl(file underlying_file) noexcept
Definition: layered_file.hh:49
file & underlying_file() noexcept
The underlying file which can be used to back I/O methods.
Definition: layered_file.hh:58
const file & underlying_file() const noexcept
The underlying file which can be used to back I/O methods.
Definition: layered_file.hh:63
Seastar API namespace.
Definition: abort_on_ebadf.hh:26