AppContent.h (2464B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 4 #pragma once 5 6 #include "AppFile.h" 7 #include "Content.h" 8 9 #include <memory> 10 #include <string> 11 #include <vector> 12 13 namespace SFS 14 { 15 class AppPrerequisiteContent 16 { 17 public: 18 [[nodiscard]] static Result Make(std::unique_ptr<ContentId>&& contentId, 19 std::vector<AppFile>&& files, 20 std::unique_ptr<AppPrerequisiteContent>& out) noexcept; 21 22 AppPrerequisiteContent(AppPrerequisiteContent&&) noexcept; 23 24 AppPrerequisiteContent(const AppPrerequisiteContent&) = delete; 25 AppPrerequisiteContent& operator=(const AppPrerequisiteContent&) = delete; 26 27 /** 28 * @return Unique content identifier 29 */ 30 const ContentId& GetContentId() const noexcept; 31 32 /** 33 * @return Files belonging to this Prequisite 34 */ 35 const std::vector<AppFile>& GetFiles() const noexcept; 36 37 private: 38 AppPrerequisiteContent() = default; 39 40 std::unique_ptr<ContentId> m_contentId; 41 std::vector<AppFile> m_files; 42 }; 43 44 class AppContent 45 { 46 public: 47 [[nodiscard]] static Result Make(std::unique_ptr<ContentId>&& contentId, 48 std::string updateId, 49 std::vector<AppPrerequisiteContent>&& prerequisites, 50 std::vector<AppFile>&& files, 51 std::unique_ptr<AppContent>& out) noexcept; 52 53 AppContent(AppContent&&) noexcept; 54 55 AppContent(const AppContent&) = delete; 56 AppContent& operator=(const AppContent&) = delete; 57 58 /** 59 * @return Unique content identifier 60 */ 61 const ContentId& GetContentId() const noexcept; 62 63 /** 64 * @return Unique Update Id 65 */ 66 const std::string& GetUpdateId() const noexcept; 67 68 /** 69 * @return Files belonging to this App 70 */ 71 const std::vector<AppFile>& GetFiles() const noexcept; 72 73 /** 74 * @return List of Prerequisite content needed for this App. Prerequisites don't have further dependencies. 75 */ 76 const std::vector<AppPrerequisiteContent>& GetPrerequisites() const noexcept; 77 78 private: 79 AppContent() = default; 80 81 std::unique_ptr<ContentId> m_contentId; 82 std::vector<AppFile> m_files; 83 84 std::string m_updateId; 85 std::vector<AppPrerequisiteContent> m_prerequisites; 86 }; 87 } // namespace SFS