Mercurial > hg > orthanc
comparison OrthancServer/Sources/ServerIndex.cpp @ 4582:fb0379abb4a7 db-changes
assume that "GetDatabaseVersion()" can run out of a database transaction
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 09 Mar 2021 15:25:17 +0100 |
parents | bb3c82b8f373 |
children | 42a846166fa3 |
comparison
equal
deleted
inserted
replaced
4581:bb3c82b8f373 | 4582:fb0379abb4a7 |
---|---|
1877 /* out */ unsigned int& countInstances, | 1877 /* out */ unsigned int& countInstances, |
1878 /* out */ uint64_t& dicomDiskSize, | 1878 /* out */ uint64_t& dicomDiskSize, |
1879 /* out */ uint64_t& dicomUncompressedSize, | 1879 /* out */ uint64_t& dicomUncompressedSize, |
1880 const std::string& publicId) | 1880 const std::string& publicId) |
1881 { | 1881 { |
1882 class Operations : public ServerIndex::IReadOnlyOperations | 1882 class Operations : public IReadOnlyOperations |
1883 { | 1883 { |
1884 private: | 1884 private: |
1885 ResourceType& type_; | 1885 ResourceType& type_; |
1886 uint64_t& diskSize_; | 1886 uint64_t& diskSize_; |
1887 uint64_t& uncompressedSize_; | 1887 uint64_t& uncompressedSize_; |
1912 dicomUncompressedSize_(dicomUncompressedSize), | 1912 dicomUncompressedSize_(dicomUncompressedSize), |
1913 publicId_(publicId) | 1913 publicId_(publicId) |
1914 { | 1914 { |
1915 } | 1915 } |
1916 | 1916 |
1917 virtual void Apply(ServerIndex::ReadOnlyTransaction& transaction) ORTHANC_OVERRIDE | 1917 virtual void Apply(ReadOnlyTransaction& transaction) ORTHANC_OVERRIDE |
1918 { | 1918 { |
1919 int64_t top; | 1919 int64_t top; |
1920 if (!transaction.LookupResource(top, type_, publicId_)) | 1920 if (!transaction.LookupResource(top, type_, publicId_)) |
1921 { | 1921 { |
1922 throw OrthancException(ErrorCode_UnknownResource); | 1922 throw OrthancException(ErrorCode_UnknownResource); |
2029 | 2029 |
2030 std::vector<DatabaseConstraint> query; | 2030 std::vector<DatabaseConstraint> query; |
2031 query.push_back(c.ConvertToDatabaseConstraint(level, DicomTagType_Identifier)); | 2031 query.push_back(c.ConvertToDatabaseConstraint(level, DicomTagType_Identifier)); |
2032 | 2032 |
2033 | 2033 |
2034 class Operations : public ServerIndex::IReadOnlyOperations | 2034 class Operations : public IReadOnlyOperations |
2035 { | 2035 { |
2036 private: | 2036 private: |
2037 std::vector<std::string>& result_; | 2037 std::vector<std::string>& result_; |
2038 const std::vector<DatabaseConstraint>& query_; | 2038 const std::vector<DatabaseConstraint>& query_; |
2039 ResourceType level_; | 2039 ResourceType level_; |
2266 | 2266 |
2267 bool found; | 2267 bool found; |
2268 Operations operations; | 2268 Operations operations; |
2269 operations.Apply(*this, found, type, publicId); | 2269 operations.Apply(*this, found, type, publicId); |
2270 return found; | 2270 return found; |
2271 } | |
2272 | |
2273 | |
2274 unsigned int ServerIndex::GetDatabaseVersion() | |
2275 { | |
2276 class Operations : public ReadOnlyOperationsT1<unsigned int&> | |
2277 { | |
2278 public: | |
2279 virtual void ApplyTuple(ReadOnlyTransaction& transaction, | |
2280 const Tuple& tuple) ORTHANC_OVERRIDE | |
2281 { | |
2282 // TODO - CANDIDATE FOR "TransactionType_Implicit" | |
2283 tuple.get<0>() = transaction.GetDatabaseVersion(); | |
2284 } | |
2285 }; | |
2286 | |
2287 unsigned int version; | |
2288 Operations operations; | |
2289 operations.Apply(*this, version); | |
2290 return version; | |
2291 } | 2271 } |
2292 | 2272 |
2293 | 2273 |
2294 bool ServerIndex::LookupParent(std::string& target, | 2274 bool ServerIndex::LookupParent(std::string& target, |
2295 const std::string& publicId, | 2275 const std::string& publicId, |