# HG changeset patch # User Sebastien Jodogne # Date 1613059897 -3600 # Node ID 98b7b9d21d83e7c8a69511953203cbc5b74c9eae # Parent 8f9090b137f14f1abe4297ac4a9537e85bb864b6 removed ServerContext::ReadAttachment() diff -r 8f9090b137f1 -r 98b7b9d21d83 OrthancServer/Sources/ServerContext.cpp --- a/OrthancServer/Sources/ServerContext.cpp Thu Feb 11 11:00:05 2021 +0100 +++ b/OrthancServer/Sources/ServerContext.cpp Thu Feb 11 17:11:37 2021 +0100 @@ -813,7 +813,8 @@ FileInfo attachment; if (index_.LookupAttachment(attachment, instancePublicId, FileContentType_DicomAsJson)) { - ReadAttachment(result, attachment); + StorageAccessor accessor(area_, GetMetricsRegistry()); + accessor.Read(result, attachment); } else { @@ -886,6 +887,13 @@ } + void ServerContext::ReadDicom(std::string& dicom, + const std::string& instancePublicId) + { + ReadAttachment(dicom, instancePublicId, FileContentType_Dicom, true /* uncompress */); + } + + void ServerContext::ReadAttachment(std::string& result, const std::string& instancePublicId, FileContentType content, @@ -901,29 +909,23 @@ assert(attachment.GetContentType() == content); - if (uncompressIfNeeded) { - ReadAttachment(result, attachment); - } - else - { - // Do not uncompress the content of the storage area, return the - // raw data StorageAccessor accessor(area_, GetMetricsRegistry()); - accessor.ReadRaw(result, attachment); + + if (uncompressIfNeeded) + { + accessor.Read(result, attachment); + } + else + { + // Do not uncompress the content of the storage area, return the + // raw data + accessor.ReadRaw(result, attachment); + } } } - void ServerContext::ReadAttachment(std::string& result, - const FileInfo& attachment) - { - // This will decompress the attachment - StorageAccessor accessor(area_, GetMetricsRegistry()); - accessor.Read(result, attachment); - } - - ServerContext::DicomCacheLocker::DicomCacheLocker(ServerContext& context, const std::string& instancePublicId) : context_(context), diff -r 8f9090b137f1 -r 98b7b9d21d83 OrthancServer/Sources/ServerContext.h --- a/OrthancServer/Sources/ServerContext.h Thu Feb 11 11:00:05 2021 +0100 +++ b/OrthancServer/Sources/ServerContext.h Thu Feb 11 17:11:37 2021 +0100 @@ -338,10 +338,7 @@ } void ReadDicom(std::string& dicom, - const std::string& instancePublicId) - { - ReadAttachment(dicom, instancePublicId, FileContentType_Dicom, true); - } + const std::string& instancePublicId); // TODO CACHING MECHANISM AT THIS POINT void ReadAttachment(std::string& result, @@ -349,9 +346,6 @@ FileContentType content, bool uncompressIfNeeded); - void ReadAttachment(std::string& result, - const FileInfo& attachment); - void SetStoreMD5ForAttachments(bool storeMD5); bool IsStoreMD5ForAttachments() const diff -r 8f9090b137f1 -r 98b7b9d21d83 OrthancServer/Sources/ServerJobs/ArchiveJob.cpp --- a/OrthancServer/Sources/ServerJobs/ArchiveJob.cpp Thu Feb 11 11:00:05 2021 +0100 +++ b/OrthancServer/Sources/ServerJobs/ArchiveJob.cpp Thu Feb 11 17:11:37 2021 +0100 @@ -195,7 +195,7 @@ virtual void Close() = 0; virtual void AddInstance(const std::string& instanceId, - const FileInfo& dicom) = 0; + size_t uncompressedSize) = 0; }; @@ -205,11 +205,12 @@ struct Instance { std::string id_; - FileInfo dicom_; + uint64_t uncompressedSize_; Instance(const std::string& id, - const FileInfo& dicom) : - id_(id), dicom_(dicom) + uint64_t uncompressedSize) : + id_(id), + uncompressedSize_(uncompressedSize) { } }; @@ -230,7 +231,7 @@ FileInfo tmp; if (index.LookupAttachment(tmp, id, FileContentType_Dicom)) { - instances_.push_back(Instance(id, tmp)); + instances_.push_back(Instance(id, tmp.GetUncompressedSize())); } } else @@ -335,7 +336,7 @@ for (std::list::const_iterator it = instances_.begin(); it != instances_.end(); ++it) { - visitor.AddInstance(it->id_, it->dicom_); + visitor.AddInstance(it->id_, it->uncompressedSize_); } } else @@ -370,7 +371,6 @@ Type type_; std::string filename_; std::string instanceId_; - FileInfo info_; public: explicit Command(Type type) : @@ -389,12 +389,10 @@ Command(Type type, const std::string& filename, - const std::string& instanceId, - const FileInfo& info) : + const std::string& instanceId) : type_(type), filename_(filename), - instanceId_(instanceId), - info_(info) + instanceId_(instanceId) { assert(type_ == Type_WriteInstance); } @@ -422,7 +420,7 @@ try { - context.ReadAttachment(content, info_); + context.ReadDicom(content, instanceId_); } catch (OrthancException& e) { @@ -577,11 +575,11 @@ void AddWriteInstance(const std::string& filename, const std::string& instanceId, - const FileInfo& info) + uint64_t uncompressedSize) { - commands_.push_back(new Command(Type_WriteInstance, filename, instanceId, info)); + commands_.push_back(new Command(Type_WriteInstance, filename, instanceId)); instancesCount_ ++; - uncompressedSize_ += info.GetUncompressedSize(); + uncompressedSize_ += uncompressedSize; } bool IsZip64() const @@ -695,13 +693,13 @@ } virtual void AddInstance(const std::string& instanceId, - const FileInfo& dicom) ORTHANC_OVERRIDE + uint64_t uncompressedSize) ORTHANC_OVERRIDE { char filename[24]; snprintf(filename, sizeof(filename) - 1, instanceFormat_, counter_); counter_ ++; - commands_.AddWriteInstance(filename, instanceId, dicom); + commands_.AddWriteInstance(filename, instanceId, uncompressedSize); } }; @@ -732,13 +730,13 @@ } virtual void AddInstance(const std::string& instanceId, - const FileInfo& dicom) ORTHANC_OVERRIDE + uint64_t uncompressedSize) ORTHANC_OVERRIDE { // "DICOM restricts the filenames on DICOM media to 8 // characters (some systems wrongly use 8.3, but this does not // conform to the standard)." std::string filename = "IM" + boost::lexical_cast(counter_); - commands_.AddWriteInstance(filename, instanceId, dicom); + commands_.AddWriteInstance(filename, instanceId, uncompressedSize); counter_ ++; }