diff --git a/smocore/deviceManager/deviceManager.cpp b/smocore/deviceManager/deviceManager.cpp index 49c6f09..af2713e 100644 --- a/smocore/deviceManager/deviceManager.cpp +++ b/smocore/deviceManager/deviceManager.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -316,15 +317,15 @@ void DeviceManager::removeDeviceAttachmentSpecReq( } class DeviceManager::AttachSenseDeviceReq -: public PostedAsynchronousContinuation +: public SerializedAsynchronousContinuation { public: AttachSenseDeviceReq( const std::shared_ptr& spec, const std::shared_ptr &caller, Callback cb) - : PostedAsynchronousContinuation( - caller, cb), + : SerializedAsynchronousContinuation( + caller, cb, {std::ref(DeviceManager::getInstance().qutex)}), spec(spec) {} @@ -469,7 +470,8 @@ void DeviceManager::attachSenseDeviceReq( auto request = std::make_shared( spec, caller, cb); - mrntt::mrntt.thread->getIoService().post( + AttachSenseDeviceReq::LockerAndInvoker lockvoker( + *request, mrntt::mrntt.thread, std::bind( &AttachSenseDeviceReq::attachSenseDeviceReq1_posted, request.get(), request)); @@ -484,7 +486,8 @@ void DeviceManager::detachSenseDeviceReq( auto request = std::make_shared( spec, caller, cb); - mrntt::mrntt.thread->getIoService().post( + DetachSenseDeviceReq::LockerAndInvoker lockvoker( + *request, mrntt::mrntt.thread, std::bind( &DetachSenseDeviceReq::detachSenseDeviceReq1_posted, request.get(), request));