58 :
di::Dispatcher<WriteFileFunction, di::AnySenderOf<usize>(di::This&, UserspaceBuffer<byte const>),
59 detail::WriteFileDefaultFunction> {};
64 :
di::Dispatcher<ReadFileFunction, di::AnySenderOf<usize>(di::This&, UserspaceBuffer<byte>),
65 detail::ReadFileDefaultFunction> {};
70 :
di::Dispatcher<ReadDirectoryFunction, di::AnySenderOf<usize>(di::This&, UserspaceBuffer<byte>),
71 detail::ReadDirectoryDefaultFunction> {};
76 :
di::Dispatcher<FileMetadataFunction, di::AnySenderOf<Metadata>(di::This&), detail::FileMetadataDefaultFunction> {
82 :
di::Dispatcher<SeekFileFunction, di::AnySenderOf<i64>(di::This&, i64, int), detail::SeekFileDefaultFunction> {};
87 :
di::Dispatcher<FileTruncateFunction, di::AnySenderOf<>(di::This&, u64), detail::FileTruncateDefaultFunction> {};
92 :
di::Dispatcher<FileHACKRawDataFunction, di::AnySenderOf<di::Span<byte const>>(di::This&),
93 detail::FileHACKRawDataFunction> {};
104 for (
auto [i, file] : di::enumerate(m_files)) {
105 if (!file.has_value()) {
106 m_file_allocated[i] =
true;
117 if (!m_file_allocated[file_handle] || !m_files[file_handle].has_value()) {
120 return m_files[file_handle];
127 if (!m_file_allocated[file_handle] || !m_files[file_handle].has_value()) {
130 m_files[file_handle].reset();
131 m_file_allocated[file_handle] =
false;
Definition span_forward_declaration.h:10
Definition unexpected.h:14
auto deallocate_file_handle(i32 file_handle) -> Expected< void >
Definition file.h:123
auto allocate_file_handle() -> Expected< di::Tuple< File &, i32 > >
Definition file.h:103
auto lookup_file_handle(i32 file_handle) -> Expected< File & >
Definition file.h:113
Definition userspace_buffer.h:10
detail::DispatcherImpl< Self, Sig, Tags... > Dispatcher
Definition dispatcher.h:47
Any< Interface, SharedStorage< Alloc > > AnyShared
Definition any_shared.h:9
meta::Type< AnySenderOfT< T > > AnySenderOf
Definition any_sender.h:129
__UINT64_TYPE__ u64
Definition integers.h:12
__INT32_TYPE__ i32
Definition integers.h:16
__INT64_TYPE__ i64
Definition integers.h:17
Definition zstring_parser.h:9
constexpr auto ref
Definition reference_wrapper.h:98
constexpr auto equal_or_greater
Definition equal_or_greater.h:23
constexpr auto make_tuple(Args &&... args)
Definition make_tuple.h:9
Definition object_pool.h:14
Definition cxx_init.cpp:12
di::AnyShared< FileInterface > File
Definition file.h:99
@ BadFileDescriptor
Definition error.h:13
@ TooManyFilesOpen
Definition error.h:79
@ NotSupported
Definition error.h:60
constexpr auto file_truncate
Definition file.h:89
constexpr auto file_metadata
Definition file.h:79
constexpr auto seek_file
Definition file.h:84
constexpr auto file_hack_raw_data
Definition file.h:95
di::vocab::Expected< T, di::platform::GenericCode > Expected
Definition error.h:324
constexpr auto write_file
Definition file.h:61
di::meta::List< WriteFileFunction, ReadFileFunction, ReadDirectoryFunction, FileMetadataFunction, SeekFileFunction, FileTruncateFunction, FileHACKRawDataFunction > FileInterface
Definition file.h:97
constexpr auto read_directory
Definition file.h:73
constexpr auto read_file
Definition file.h:67
Definition span_fixed_size.h:37
auto operator()(auto &) const -> di::AnySenderOf< di::Span< byte const > >
Definition file.h:51
auto operator()(auto &, u64) const -> di::AnySenderOf<>
Definition file.h:47
auto operator()(T &, UserspaceBuffer< byte >) const -> di::AnySenderOf< usize >
Definition file.h:33
auto operator()(T &, UserspaceBuffer< byte >) const -> di::AnySenderOf< usize >
Definition file.h:26
auto operator()(auto &, i64, int) const -> di::AnySenderOf< i64 >
Definition file.h:39
auto operator()(T &, UserspaceBuffer< byte const >) const -> di::AnySenderOf< usize >
Definition file.h:19