roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
directory.cpp
Go to the documentation of this file.
2
3#ifdef ARDUINO
4
5namespace roo_io {
6
7ArduinoDirectoryImpl::ArduinoDirectoryImpl(std::shared_ptr<MountImpl> mount,
8 fs::File file, Status status)
9 : mount_(std::move(mount)), file_(std::move(file)), status_(status) {}
10
11bool ArduinoDirectoryImpl::close() {
12 mount_.reset();
13 entry_.close();
14 file_.close();
15 if (status_ == kOk) status_ = kClosed;
16 return true;
17}
18
19void ArduinoDirectoryImpl::rewind() {
20 if (status_ != kOk && status_ != kEndOfStream) return;
21 file_.rewindDirectory();
22 if (file_) {
23 status_ = kOk;
24 } else {
25 status_ = kUnknownIOError;
26 mount_.reset();
27 }
28 next_ = "";
29}
30
31bool ArduinoDirectoryImpl::read(Directory::Entry& entry) {
32 if (status_ != kOk) return false;
33 if (!file_) {
34 status_ = kClosed;
35 mount_.reset();
36 return false;
37 }
38 entry_ = file_.openNextFile();
39 if (!entry_) {
40 status_ = kEndOfStream;
41 return false;
42 }
43#ifdef ARDUINO_ARCH_RP2040
44 setEntry(entry, entry_.fullName(),
45 strlen(entry_.fullName()) - strlen(entry_.name()),
46 entry_.isDirectory());
47#else
48 setEntry(entry, entry_.path(), strlen(entry_.path()) - strlen(entry_.name()),
49 entry_.isDirectory());
50#endif
51 return true;
52}
53
54} // namespace roo_io
55
56#endif // ARDUINO
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8
Status
Definition status.h:7
@ kUnknownIOError
Definition status.h:58
@ kOk
Definition status.h:8
@ kClosed
Definition status.h:10
@ kEndOfStream
Definition status.h:9