mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
35 lines
878 B
C++
35 lines
878 B
C++
#include "MultithreadContainer.h"
|
|
#include "NotificationList.h"
|
|
|
|
namespace UniLib {
|
|
namespace lib {
|
|
|
|
void MultithreadContainer::lock(const char* stackDetails/* = nullptr*/)
|
|
{
|
|
const static char* functionName = "MultithreadContainer::lock";
|
|
try {
|
|
mWorkMutex.lock(500);
|
|
if (stackDetails) {
|
|
mLastSucceededLock = stackDetails;
|
|
}
|
|
}
|
|
catch (Poco::TimeoutException& ex) {
|
|
NotificationList errors;
|
|
errors.addError(new ParamError(functionName, "lock timeout", ex.displayText()));
|
|
if (mLastSucceededLock != "") {
|
|
errors.addError(new ParamError(functionName, "last succeed lock by ", mLastSucceededLock.data()));
|
|
}
|
|
if (stackDetails) {
|
|
errors.addError(new Error(functionName, stackDetails));
|
|
}
|
|
|
|
errors.sendErrorsAsEmail();
|
|
}
|
|
}
|
|
|
|
bool MultithreadContainer::tryLock()
|
|
{
|
|
return mWorkMutex.tryLock();
|
|
}
|
|
}
|
|
} |