@@ -26,27 +26,32 @@ namespace cyphal::support::platform::storage
2626{
2727
2828/* *************************************************************************************
29- * CONSTANTS
29+ * PRIVATE FREE FUNCTIONS
3030 **************************************************************************************/
3131
32- static std::map< littlefs::Error, Error> const LITTLEFS_TO_STORAGE_ERROR_MAP =
32+ [[nodiscard]] static inline Error toError ( littlefs::Error const err)
3333{
34- {littlefs::Error::IO , Error::IO},
35- {littlefs::Error::CORRUPT , Error::Internal},
36- {littlefs::Error::NOENT , Error::Existence},
37- {littlefs::Error::EXIST , Error::Existence},
38- {littlefs::Error::NOTDIR , Error::Existence},
39- {littlefs::Error::ISDIR , Error::Existence},
40- {littlefs::Error::NOTEMPTY , Error::Existence},
41- {littlefs::Error::BADF , Error::Internal},
42- {littlefs::Error::FBIG , Error::Capacity},
43- {littlefs::Error::INVAL , Error::API},
44- {littlefs::Error::NOSPC , Error::Capacity},
45- {littlefs::Error::NOMEM , Error::Internal},
46- {littlefs::Error::NOATTR , Error::API},
47- {littlefs::Error::NAMETOOLONG , Error::API},
48- {littlefs::Error::NO_FD_ENTRY , Error::API},
49- };
34+ static std::map<littlefs::Error, Error> const LITTLEFS_TO_STORAGE_ERROR_MAP =
35+ {
36+ {littlefs::Error::IO , Error::IO},
37+ {littlefs::Error::CORRUPT , Error::Internal},
38+ {littlefs::Error::NOENT , Error::Existence},
39+ {littlefs::Error::EXIST , Error::Existence},
40+ {littlefs::Error::NOTDIR , Error::Existence},
41+ {littlefs::Error::ISDIR , Error::Existence},
42+ {littlefs::Error::NOTEMPTY , Error::Existence},
43+ {littlefs::Error::BADF , Error::Internal},
44+ {littlefs::Error::FBIG , Error::Capacity},
45+ {littlefs::Error::INVAL , Error::API},
46+ {littlefs::Error::NOSPC , Error::Capacity},
47+ {littlefs::Error::NOMEM , Error::Internal},
48+ {littlefs::Error::NOATTR , Error::API},
49+ {littlefs::Error::NAMETOOLONG , Error::API},
50+ {littlefs::Error::NO_FD_ENTRY , Error::API},
51+ };
52+
53+ return LITTLEFS_TO_STORAGE_ERROR_MAP.at (err);
54+ }
5055
5156/* *************************************************************************************
5257 * CTOR/DTOR
@@ -69,17 +74,17 @@ auto KeyValueStorage_littlefs::get(const std::string_view key, const std::size_t
6974
7075 /* Open the file containing the registry value. */
7176 auto const rc_open = _filesystem.open (key_filename.str (), littlefs::OpenFlag::RDONLY);
72- if (std::holds_alternative <littlefs::Error>(rc_open))
73- return LITTLEFS_TO_STORAGE_ERROR_MAP. at (std::get<littlefs::Error>(rc_open) );
77+ if (const auto * const err = std::get_if <littlefs::Error>(& rc_open))
78+ return toError (*err );
7479
7580 littlefs::FileHandle const file_hdl = std::get<littlefs::FileHandle>(rc_open);
7681
7782 /* Read from the file. */
7883 auto const rc_read = _filesystem.read (file_hdl, data, size);
79- if (std::holds_alternative <littlefs::Error>(rc_read))
84+ if (const auto * const err = std::get_if <littlefs::Error>(& rc_read))
8085 {
8186 (void )_filesystem.close (file_hdl);
82- return LITTLEFS_TO_STORAGE_ERROR_MAP. at (std::get<littlefs::Error>(rc_read) );
87+ return toError (*err );
8388 }
8489
8590 (void )_filesystem.close (file_hdl);
@@ -96,17 +101,17 @@ auto KeyValueStorage_littlefs::put(const std::string_view key, const std::size_t
96101
97102 /* Open the file containing the registry value. */
98103 auto const rc_open = _filesystem.open (key_filename.str (), littlefs::OpenFlag::WRONLY | littlefs::OpenFlag::CREAT | littlefs::OpenFlag::TRUNC);
99- if (std::holds_alternative <littlefs::Error>(rc_open))
100- return LITTLEFS_TO_STORAGE_ERROR_MAP. at (std::get<littlefs::Error>(rc_open) );
104+ if (const auto * const err = std::get_if <littlefs::Error>(& rc_open))
105+ return toError (*err );
101106
102107 littlefs::FileHandle const file_hdl = std::get<littlefs::FileHandle>(rc_open);
103108
104109 /* Write to the file. */
105110 auto const rc_write = _filesystem.write (file_hdl, data, size);
106- if (std::holds_alternative <littlefs::Error>(rc_write))
111+ if (const auto * const err = std::get_if <littlefs::Error>(& rc_write))
107112 {
108113 (void )_filesystem.close (file_hdl);
109- return LITTLEFS_TO_STORAGE_ERROR_MAP. at (std::get<littlefs::Error>(rc_write) );
114+ return toError (*err );
110115 }
111116
112117 (void )_filesystem.close (file_hdl);
@@ -127,9 +132,8 @@ auto KeyValueStorage_littlefs::drop(const std::string_view key) -> std::optional
127132 std::stringstream key_filename;
128133 key_filename << key_hash;
129134
130- auto const rc = _filesystem.remove (key_filename.str ());
131- if (rc != littlefs::Error::OK)
132- return Error::IO;
135+ if (auto const err = _filesystem.remove (key_filename.str ()); err != littlefs::Error::OK)
136+ return toError (err);
133137
134138 return std::nullopt ;
135139}
0 commit comments