Mercurial > hg > orthanc
diff OrthancServer/Plugins/Engine/OrthancPlugins.cpp @ 5410:16cbfefa15e9
Solved a deadlock related to the Job Engine events and plugins
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 07 Nov 2023 12:52:37 +0100 |
parents | 0e5e675b9750 |
children | ca9cf4d46883 |
line wrap: on
line diff
--- a/OrthancServer/Plugins/Engine/OrthancPlugins.cpp Tue Nov 07 08:38:48 2023 +0100 +++ b/OrthancServer/Plugins/Engine/OrthancPlugins.cpp Tue Nov 07 12:52:37 2023 +0100 @@ -2730,6 +2730,25 @@ } + void OrthancPlugins::SignalJobEvent(const JobEvent& event) + { + // job events are actually considered as changes inside plugins -> translate + switch (event.GetEventType()) + { + case JobEventType_Submitted: + SignalChangeInternal(OrthancPluginChangeType_JobSubmitted, OrthancPluginResourceType_None, event.GetJobId().c_str()); + break; + case JobEventType_Success: + SignalChangeInternal(OrthancPluginChangeType_JobSuccess, OrthancPluginResourceType_None, event.GetJobId().c_str()); + break; + case JobEventType_Failure: + SignalChangeInternal(OrthancPluginChangeType_JobFailure, OrthancPluginResourceType_None, event.GetJobId().c_str()); + break; + default: + throw OrthancException(ErrorCode_InternalError); + } + } + void OrthancPlugins::RegisterRestCallback(const void* parameters, bool mutualExclusion) @@ -2776,6 +2795,8 @@ void OrthancPlugins::RegisterOnChangeCallback(const void* parameters) { + boost::recursive_mutex::scoped_lock lock(pimpl_->changeCallbackMutex_); + const _OrthancPluginOnChangeCallback& p = *reinterpret_cast<const _OrthancPluginOnChangeCallback*>(parameters);