AppFile.cpp (1908B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 4 #include "AppFile.h" 5 6 #include "details/ErrorHandling.h" 7 8 using namespace SFS; 9 10 AppFile::AppFile(std::string&& fileId, 11 std::string&& url, 12 uint64_t sizeInBytes, 13 std::unordered_map<HashType, std::string>&& hashes, 14 std::string&& fileMoniker) 15 : File(std::move(fileId), std::move(url), sizeInBytes, std::move(hashes)) 16 , m_fileMoniker(std::move(fileMoniker)) 17 { 18 } 19 20 Result AppFile::Make(std::string fileId, 21 std::string url, 22 uint64_t sizeInBytes, 23 std::unordered_map<HashType, std::string> hashes, 24 std::vector<Architecture> architectures, 25 std::vector<std::string> platformApplicabilityForPackage, 26 std::string fileMoniker, 27 std::unique_ptr<AppFile>& out) noexcept 28 try 29 { 30 out.reset(); 31 32 std::unique_ptr<ApplicabilityDetails> details; 33 RETURN_IF_FAILED( 34 ApplicabilityDetails::Make(std::move(architectures), std::move(platformApplicabilityForPackage), details)); 35 36 std::unique_ptr<AppFile> tmp( 37 new AppFile(std::move(fileId), std::move(url), sizeInBytes, std::move(hashes), std::move(fileMoniker))); 38 tmp->m_applicabilityDetails = std::move(details); 39 40 out = std::move(tmp); 41 42 return Result::Success; 43 } 44 SFS_CATCH_RETURN() 45 46 AppFile::AppFile(AppFile&& other) noexcept : File(std::move(other)) 47 { 48 m_applicabilityDetails = std::move(other.m_applicabilityDetails); 49 m_fileMoniker = std::move(other.m_fileMoniker); 50 } 51 52 const ApplicabilityDetails& AppFile::GetApplicabilityDetails() const noexcept 53 { 54 return *m_applicabilityDetails; 55 } 56 57 const std::string& AppFile::GetFileMoniker() const noexcept 58 { 59 return m_fileMoniker; 60 }