comparison Plugins/Engine/OrthancPlugins.cpp @ 3713:56f2397f027a storage-commitment

integration mainline->storage-commitment
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 02 Mar 2020 15:42:17 +0100
parents 1c69af37d8ae 2a170a8f1faf
children e7003b2203a7
comparison
equal deleted inserted replaced
3711:14b363d972a8 3713:56f2397f027a
365 } 365 }
366 } 366 }
367 367
368 public: 368 public:
369 DicomWebBinaryFormatter(const _OrthancPluginEncodeDicomWeb& parameters) : 369 DicomWebBinaryFormatter(const _OrthancPluginEncodeDicomWeb& parameters) :
370 callback_(parameters.callback) 370 callback_(parameters.callback)
371 { 371 {
372 } 372 }
373 373
374 virtual DicomWebJsonVisitor::BinaryMode Format(std::string& bulkDataUri, 374 virtual DicomWebJsonVisitor::BinaryMode Format(std::string& bulkDataUri,
375 const std::vector<DicomTag>& parentTags, 375 const std::vector<DicomTag>& parentTags,
433 MultipartState_SecondPart, 433 MultipartState_SecondPart,
434 MultipartState_NextParts 434 MultipartState_NextParts
435 }; 435 };
436 436
437 HttpOutput& output_; 437 HttpOutput& output_;
438 std::auto_ptr<std::string> errorDetails_; 438 std::unique_ptr<std::string> errorDetails_;
439 bool logDetails_; 439 bool logDetails_;
440 MultipartState multipartState_; 440 MultipartState multipartState_;
441 std::string multipartSubType_; 441 std::string multipartSubType_;
442 std::string multipartContentType_; 442 std::string multipartContentType_;
443 std::string multipartFirstPart_; 443 std::string multipartFirstPart_;
663 _OrthancPluginChunkedRestCallback parameters_; 663 _OrthancPluginChunkedRestCallback parameters_;
664 boost::regex regex_; 664 boost::regex regex_;
665 665
666 public: 666 public:
667 ChunkedRestCallback(_OrthancPluginChunkedRestCallback parameters) : 667 ChunkedRestCallback(_OrthancPluginChunkedRestCallback parameters) :
668 parameters_(parameters), 668 parameters_(parameters),
669 regex_(parameters.pathRegularExpression) 669 regex_(parameters.pathRegularExpression)
670 { 670 {
671 } 671 }
672 672
673 const boost::regex& GetRegularExpression() const 673 const boost::regex& GetRegularExpression() const
674 { 674 {
792 boost::mutex::scoped_lock lock_; 792 boost::mutex::scoped_lock lock_;
793 ServerContext* context_; 793 ServerContext* context_;
794 794
795 public: 795 public:
796 ServerContextLock(PImpl& that) : 796 ServerContextLock(PImpl& that) :
797 lock_(that.contextMutex_), 797 lock_(that.contextMutex_),
798 context_(that.context_) 798 context_(that.context_)
799 { 799 {
800 if (context_ == NULL) 800 if (context_ == NULL)
801 { 801 {
802 throw OrthancException(ErrorCode_DatabaseNotInitialized); 802 throw OrthancException(ErrorCode_DatabaseNotInitialized);
803 } 803 }
844 _OrthancPluginMoveCallback moveCallbacks_; 844 _OrthancPluginMoveCallback moveCallbacks_;
845 IncomingHttpRequestFilters incomingHttpRequestFilters_; 845 IncomingHttpRequestFilters incomingHttpRequestFilters_;
846 IncomingHttpRequestFilters2 incomingHttpRequestFilters2_; 846 IncomingHttpRequestFilters2 incomingHttpRequestFilters2_;
847 RefreshMetricsCallbacks refreshMetricsCallbacks_; 847 RefreshMetricsCallbacks refreshMetricsCallbacks_;
848 StorageCommitmentScpCallbacks storageCommitmentScpCallbacks_; 848 StorageCommitmentScpCallbacks storageCommitmentScpCallbacks_;
849 std::auto_ptr<StorageAreaFactory> storageArea_; 849 std::unique_ptr<StorageAreaFactory> storageArea_;
850 850
851 boost::recursive_mutex restCallbackMutex_; 851 boost::recursive_mutex restCallbackMutex_;
852 boost::recursive_mutex storedCallbackMutex_; 852 boost::recursive_mutex storedCallbackMutex_;
853 boost::recursive_mutex changeCallbackMutex_; 853 boost::recursive_mutex changeCallbackMutex_;
854 boost::mutex findCallbackMutex_; 854 boost::mutex findCallbackMutex_;
860 boost::recursive_mutex invokeServiceMutex_; 860 boost::recursive_mutex invokeServiceMutex_;
861 861
862 Properties properties_; 862 Properties properties_;
863 int argc_; 863 int argc_;
864 char** argv_; 864 char** argv_;
865 std::auto_ptr<OrthancPluginDatabase> database_; 865 std::unique_ptr<OrthancPluginDatabase> database_;
866 PluginsErrorDictionary dictionary_; 866 PluginsErrorDictionary dictionary_;
867 867
868 PImpl() : 868 PImpl() :
869 context_(NULL), 869 context_(NULL),
870 findCallback_(NULL), 870 findCallback_(NULL),
880 880
881 class OrthancPlugins::WorklistHandler : public IWorklistRequestHandler 881 class OrthancPlugins::WorklistHandler : public IWorklistRequestHandler
882 { 882 {
883 private: 883 private:
884 OrthancPlugins& that_; 884 OrthancPlugins& that_;
885 std::auto_ptr<HierarchicalMatcher> matcher_; 885 std::unique_ptr<HierarchicalMatcher> matcher_;
886 std::auto_ptr<ParsedDicomFile> filtered_; 886 std::unique_ptr<ParsedDicomFile> filtered_;
887 ParsedDicomFile* currentQuery_; 887 ParsedDicomFile* currentQuery_;
888 888
889 void Reset() 889 void Reset()
890 { 890 {
891 matcher_.reset(); 891 matcher_.reset();
994 { 994 {
995 throw OrthancException(ErrorCode_Plugin); 995 throw OrthancException(ErrorCode_Plugin);
996 } 996 }
997 997
998 ParsedDicomFile f(dicom, size); 998 ParsedDicomFile f(dicom, size);
999 std::auto_ptr<ParsedDicomFile> summary(matcher_->Extract(f)); 999 std::unique_ptr<ParsedDicomFile> summary(matcher_->Extract(f));
1000 reinterpret_cast<DicomFindAnswers*>(answers)->Add(*summary); 1000 reinterpret_cast<DicomFindAnswers*>(answers)->Add(*summary);
1001 } 1001 }
1002 }; 1002 };
1003 1003
1004 1004
1005 class OrthancPlugins::FindHandler : public IFindRequestHandler 1005 class OrthancPlugins::FindHandler : public IFindRequestHandler
1006 { 1006 {
1007 private: 1007 private:
1008 OrthancPlugins& that_; 1008 OrthancPlugins& that_;
1009 std::auto_ptr<DicomArray> currentQuery_; 1009 std::unique_ptr<DicomArray> currentQuery_;
1010 1010
1011 void Reset() 1011 void Reset()
1012 { 1012 {
1013 currentQuery_.reset(NULL); 1013 currentQuery_.reset(NULL);
1014 } 1014 }
1464 std::vector<std::string> groups_; 1464 std::vector<std::string> groups_;
1465 std::vector<const char*> cgroups_; 1465 std::vector<const char*> cgroups_;
1466 1466
1467 public: 1467 public:
1468 RestCallbackMatcher(const UriComponents& uri) : 1468 RestCallbackMatcher(const UriComponents& uri) :
1469 flatUri_(Toolbox::FlattenUri(uri)) 1469 flatUri_(Toolbox::FlattenUri(uri))
1470 { 1470 {
1471 } 1471 }
1472 1472
1473 bool IsMatch(const boost::regex& re) 1473 bool IsMatch(const boost::regex& re)
1474 { 1474 {
2481 *reinterpret_cast<const _OrthancPluginBufferCompression*>(parameters); 2481 *reinterpret_cast<const _OrthancPluginBufferCompression*>(parameters);
2482 2482
2483 std::string result; 2483 std::string result;
2484 2484
2485 { 2485 {
2486 std::auto_ptr<DeflateBaseCompressor> compressor; 2486 std::unique_ptr<DeflateBaseCompressor> compressor;
2487 2487
2488 switch (p.compression) 2488 switch (p.compression)
2489 { 2489 {
2490 case OrthancPluginCompressionType_Zlib: 2490 case OrthancPluginCompressionType_Zlib:
2491 { 2491 {
2531 2531
2532 CopyToMemoryBuffer(*p.target, result); 2532 CopyToMemoryBuffer(*p.target, result);
2533 } 2533 }
2534 2534
2535 2535
2536 static OrthancPluginImage* ReturnImage(std::auto_ptr<ImageAccessor>& image) 2536 static OrthancPluginImage* ReturnImage(std::unique_ptr<ImageAccessor>& image)
2537 { 2537 {
2538 // Images returned to plugins are assumed to be writeable. If the 2538 // Images returned to plugins are assumed to be writeable. If the
2539 // input image is read-only, we return a copy so that it can be modified. 2539 // input image is read-only, we return a copy so that it can be modified.
2540 2540
2541 if (image->IsReadOnly()) 2541 if (image->IsReadOnly())
2542 { 2542 {
2543 std::auto_ptr<Image> copy(new Image(image->GetFormat(), image->GetWidth(), image->GetHeight(), false)); 2543 std::unique_ptr<Image> copy(new Image(image->GetFormat(), image->GetWidth(), image->GetHeight(), false));
2544 ImageProcessing::Copy(*copy, *image); 2544 ImageProcessing::Copy(*copy, *image);
2545 image.reset(NULL); 2545 image.reset(NULL);
2546 return reinterpret_cast<OrthancPluginImage*>(copy.release()); 2546 return reinterpret_cast<OrthancPluginImage*>(copy.release());
2547 } 2547 }
2548 else 2548 else
2554 2554
2555 void OrthancPlugins::UncompressImage(const void* parameters) 2555 void OrthancPlugins::UncompressImage(const void* parameters)
2556 { 2556 {
2557 const _OrthancPluginUncompressImage& p = *reinterpret_cast<const _OrthancPluginUncompressImage*>(parameters); 2557 const _OrthancPluginUncompressImage& p = *reinterpret_cast<const _OrthancPluginUncompressImage*>(parameters);
2558 2558
2559 std::auto_ptr<ImageAccessor> image; 2559 std::unique_ptr<ImageAccessor> image;
2560 2560
2561 switch (p.format) 2561 switch (p.format)
2562 { 2562 {
2563 case OrthancPluginImageFormat_Png: 2563 case OrthancPluginImageFormat_Png:
2564 { 2564 {
2938 void OrthancPlugins::ConvertPixelFormat(const void* parameters) 2938 void OrthancPlugins::ConvertPixelFormat(const void* parameters)
2939 { 2939 {
2940 const _OrthancPluginConvertPixelFormat& p = *reinterpret_cast<const _OrthancPluginConvertPixelFormat*>(parameters); 2940 const _OrthancPluginConvertPixelFormat& p = *reinterpret_cast<const _OrthancPluginConvertPixelFormat*>(parameters);
2941 const ImageAccessor& source = *reinterpret_cast<const ImageAccessor*>(p.source); 2941 const ImageAccessor& source = *reinterpret_cast<const ImageAccessor*>(p.source);
2942 2942
2943 std::auto_ptr<ImageAccessor> target(new Image(Plugins::Convert(p.targetFormat), source.GetWidth(), source.GetHeight(), false)); 2943 std::unique_ptr<ImageAccessor> target(new Image(Plugins::Convert(p.targetFormat), source.GetWidth(), source.GetHeight(), false));
2944 ImageProcessing::Convert(*target, source); 2944 ImageProcessing::Convert(*target, source);
2945 2945
2946 *(p.target) = ReturnImage(target); 2946 *(p.target) = ReturnImage(target);
2947 } 2947 }
2948 2948
2991 const void* parameters) 2991 const void* parameters)
2992 { 2992 {
2993 const _OrthancPluginDicomToJson& p = 2993 const _OrthancPluginDicomToJson& p =
2994 *reinterpret_cast<const _OrthancPluginDicomToJson*>(parameters); 2994 *reinterpret_cast<const _OrthancPluginDicomToJson*>(parameters);
2995 2995
2996 std::auto_ptr<ParsedDicomFile> dicom; 2996 std::unique_ptr<ParsedDicomFile> dicom;
2997 2997
2998 if (service == _OrthancPluginService_DicomBufferToJson) 2998 if (service == _OrthancPluginService_DicomBufferToJson)
2999 { 2999 {
3000 dicom.reset(new ParsedDicomFile(p.buffer, p.size)); 3000 dicom.reset(new ParsedDicomFile(p.buffer, p.size));
3001 } 3001 }
3056 { 3056 {
3057 OrthancConfiguration::ReaderLock lock; 3057 OrthancConfiguration::ReaderLock lock;
3058 privateCreator = lock.GetConfiguration().GetDefaultPrivateCreator(); 3058 privateCreator = lock.GetConfiguration().GetDefaultPrivateCreator();
3059 } 3059 }
3060 3060
3061 std::auto_ptr<ParsedDicomFile> file 3061 std::unique_ptr<ParsedDicomFile> file
3062 (ParsedDicomFile::CreateFromJson(json, static_cast<DicomFromJsonFlags>(p.flags), 3062 (ParsedDicomFile::CreateFromJson(json, static_cast<DicomFromJsonFlags>(p.flags),
3063 privateCreator)); 3063 privateCreator));
3064 3064
3065 if (p.pixelData) 3065 if (p.pixelData)
3066 { 3066 {
3120 const void* parameters) 3120 const void* parameters)
3121 { 3121 {
3122 const _OrthancPluginCreateImage& p = 3122 const _OrthancPluginCreateImage& p =
3123 *reinterpret_cast<const _OrthancPluginCreateImage*>(parameters); 3123 *reinterpret_cast<const _OrthancPluginCreateImage*>(parameters);
3124 3124
3125 std::auto_ptr<ImageAccessor> result; 3125 std::unique_ptr<ImageAccessor> result;
3126 3126
3127 switch (service) 3127 switch (service)
3128 { 3128 {
3129 case _OrthancPluginService_CreateImage: 3129 case _OrthancPluginService_CreateImage:
3130 result.reset(new Image(Plugins::Convert(p.format), p.width, p.height, false)); 3130 result.reset(new Image(Plugins::Convert(p.format), p.width, p.height, false));
4610 pluginOutput.Close(error, errorDictionary_); 4610 pluginOutput.Close(error, errorDictionary_);
4611 } 4611 }
4612 }; 4612 };
4613 4613
4614 4614
4615 bool OrthancPlugins::CreateChunkedRequestReader(std::auto_ptr<IChunkedRequestReader>& target, 4615 bool OrthancPlugins::CreateChunkedRequestReader(std::unique_ptr<IChunkedRequestReader>& target,
4616 RequestOrigin origin, 4616 RequestOrigin origin,
4617 const char* remoteIp, 4617 const char* remoteIp,
4618 const char* username, 4618 const char* username,
4619 HttpMethod method, 4619 HttpMethod method,
4620 const UriComponents& uri, 4620 const UriComponents& uri,