Extract main subsessions dir creation 55/324255/4
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Wed, 14 May 2025 09:14:51 +0000 (11:14 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Tue, 20 May 2025 15:46:29 +0000 (17:46 +0200)
Any exception handling for the "inner" handler will now
be able to assume that the main subdir exists.

This will come in handy in one of the next patches.

Change-Id: I80540e7e8e0b6ef1ea1df15d0eb7d79f387bf423

src/service/src/fs_helpers.cpp
src/service/src/fs_helpers.hpp

index 18a83bfca8366a3bdaf2839647fb5fcf81895344..dfdf0cf3bb8779b670b4e0b902fe5aeea1548ef6 100644 (file)
@@ -132,11 +132,22 @@ static Directory_Class get_directory_type(std::string_view path)
 
 void add_user_subsession(const int session_uid, const std::string_view subsession_id, const DirBackendAdd &backend)
 {
+       fs::path main_path;
        try {
-               fs::path main_path = get_main_dir_by_user_id(session_uid);
-
+               main_path = get_main_dir_by_user_id(session_uid);
                create_main_subdirectory(session_uid, main_path);
+       }
+       catch (const std::exception &ex) {
+               LOGE("Exception while creating main subsessions dir [session_uid=%d subsession_id=%s]: %s", session_uid, subsession_id.data(), ex.what());
+               throw std::runtime_error("Couldn't add user subsession data");
+       }
 
+       add_user_subsession_inner(main_path, session_uid, subsession_id, backend);
+}
+
+void add_user_subsession_inner(const fs::path &main_path, const int session_uid, const std::string_view subsession_id, const DirBackendAdd &backend)
+{
+       try {
                fs::path subsession_path = main_path / subsession_id;
 
                if (fs::exists(subsession_path))
index a237379d0fc6571e0ccfee563184d49f964e879a..6485c69b2cb4374490fc3597a49c9b3155ff8477 100644 (file)
@@ -12,6 +12,7 @@ std::filesystem::path get_main_dir_by_user_id(const int uid);
 std::filesystem::path get_last_subsession_path_by_user_id(const int uid);
 bool subsession_exists(const int session_uid, const std::string_view subsession_id);
 void add_user_subsession(const int session_uid, const std::string_view subsession_id, const DirBackendAdd& backend);
+void add_user_subsession_inner(const std::filesystem::path &main_path, const int session_uid, const std::string_view subsession_id, const DirBackendAdd& backend);
 void remove_user_subsession(const int session_uid, const std::string_view subsession_id);
 bool switch_user_subsession(const int session_uid, const std::string_view prev_subsession, const std::string_view next_subsession);
 std::vector<std::string> get_user_list(const int session_uid);