mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:57:45 +00:00
Kernel: Add OpenFileDescriptions::try_enumerate for fallible iteration
This API will allow users to short circuit iteration and properly propagate errors.
This commit is contained in:
parent
aca6c0c031
commit
064b93c2ad
2 changed files with 9 additions and 0 deletions
|
@ -446,6 +446,14 @@ void Process::OpenFileDescriptions::enumerate(Function<void(const OpenFileDescri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ErrorOr<void> Process::OpenFileDescriptions::try_enumerate(Function<ErrorOr<void>(const OpenFileDescriptionAndFlags&)> callback) const
|
||||||
|
{
|
||||||
|
for (auto const& file_description_metadata : m_fds_metadatas) {
|
||||||
|
TRY(callback(file_description_metadata));
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
void Process::OpenFileDescriptions::change_each(Function<void(OpenFileDescriptionAndFlags&)> callback)
|
void Process::OpenFileDescriptions::change_each(Function<void(OpenFileDescriptionAndFlags&)> callback)
|
||||||
{
|
{
|
||||||
for (auto& file_description_metadata : m_fds_metadatas) {
|
for (auto& file_description_metadata : m_fds_metadatas) {
|
||||||
|
|
|
@ -660,6 +660,7 @@ public:
|
||||||
OpenFileDescriptionAndFlags* get_if_valid(size_t i);
|
OpenFileDescriptionAndFlags* get_if_valid(size_t i);
|
||||||
|
|
||||||
void enumerate(Function<void(const OpenFileDescriptionAndFlags&)>) const;
|
void enumerate(Function<void(const OpenFileDescriptionAndFlags&)>) const;
|
||||||
|
ErrorOr<void> try_enumerate(Function<ErrorOr<void>(const OpenFileDescriptionAndFlags&)>) const;
|
||||||
void change_each(Function<void(OpenFileDescriptionAndFlags&)>);
|
void change_each(Function<void(OpenFileDescriptionAndFlags&)>);
|
||||||
|
|
||||||
ErrorOr<ScopedDescriptionAllocation> allocate(int first_candidate_fd = 0);
|
ErrorOr<ScopedDescriptionAllocation> allocate(int first_candidate_fd = 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue