Mercurial > hg > orthanc
diff OrthancServer/ServerContext.h @ 946:394a19d44f9d lua-scripting
integration mainline -> lua-scripting
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 25 Jun 2014 12:01:12 +0200 |
parents | c9cdd53a6b31 d466b3606aca |
children | cf52f3bcb2b3 |
line wrap: on
line diff
--- a/OrthancServer/ServerContext.h Wed Apr 30 18:36:20 2014 +0200 +++ b/OrthancServer/ServerContext.h Wed Jun 25 12:01:12 2014 +0200 @@ -38,7 +38,7 @@ #include "../Core/RestApi/RestApiOutput.h" #include "../Core/Lua/LuaContext.h" #include "ServerIndex.h" -#include "FromDcmtkBridge.h" +#include "ParsedDicomFile.h" #include "DicomProtocol/ReusableDicomUserConnection.h" #include "Scheduler/ServerScheduler.h" @@ -71,6 +71,7 @@ bool compressionEnabled_; DicomCacheProvider provider_; + boost::mutex dicomCacheMutex_; MemoryCache dicomCache_; ReusableDicomUserConnection scu_; ServerScheduler scheduler_; @@ -78,6 +79,24 @@ LuaContext lua_; public: + class DicomCacheLocker + { + private: + ServerContext& that_; + ParsedDicomFile *dicom_; + + public: + DicomCacheLocker(ServerContext& that, + const std::string& instancePublicId); + + ~DicomCacheLocker(); + + ParsedDicomFile& GetDicom() + { + return *dicom_; + } + }; + ServerContext(const boost::filesystem::path& storagePath, const boost::filesystem::path& indexPath); @@ -107,25 +126,19 @@ const std::string& remoteAet); StoreStatus Store(std::string& resultPublicId, - DcmFileFormat& dicomInstance, + ParsedDicomFile& dicomInstance, const char* dicomBuffer, size_t dicomSize); StoreStatus Store(std::string& resultPublicId, - DcmFileFormat& dicomInstance); + ParsedDicomFile& dicomInstance); StoreStatus Store(std::string& resultPublicId, const char* dicomBuffer, size_t dicomSize); StoreStatus Store(std::string& resultPublicId, - const std::string& dicomContent) - { - if (dicomContent.size() == 0) - return Store(resultPublicId, NULL, 0); - else - return Store(resultPublicId, &dicomContent[0], dicomContent.size()); - } + const std::string& dicomContent); void AnswerDicomFile(RestApiOutput& output, const std::string& instancePublicId, @@ -140,9 +153,6 @@ FileContentType content, bool uncompressIfNeeded = true); - // TODO IMPLEMENT MULTITHREADING FOR THIS METHOD - ParsedDicomFile& GetDicomFile(const std::string& instancePublicId); - LuaContext& GetLuaContext() { return lua_;