Handle cancel request 03/29803/11
authorAdam Malinowski <a.malinowsk2@partner.samsung.com>
Mon, 3 Nov 2014 13:49:59 +0000 (14:49 +0100)
committerAdam Malinowski <a.malinowsk2@partner.samsung.com>
Sat, 15 Nov 2014 04:38:12 +0000 (05:38 +0100)
This patch implements handling cancel request from client.

Change-Id: I2b5537ef8b481f3a3160702d0a549945b8a11622

src/service/logic/Logic.cpp
src/service/logic/Logic.h

index dfb968a..037deb8 100644 (file)
@@ -92,7 +92,21 @@ void Logic::execute(RequestContextPtr context, AgentRegisterRequestPtr request)
 }
 
 void Logic::execute(RequestContextPtr context, CancelRequestPtr request) {
-    // MOCKUP
+    CheckContextPtr checkContextPtr = m_checkRequestManager.getContext(context->responseQueue(),
+                                                                       request->sequenceNumber());
+    if (!checkContextPtr) {
+        LOGD("Cancel request id: [%" PRIu16 "] with no matching request in progress.",
+             request->sequenceNumber());
+        return;
+    }
+
+    if (checkContextPtr->cancelled())
+        return;
+
+    checkContextPtr->cancel();
+    checkContextPtr->m_agentTalker->cancel();
+
+    LOGD("Returning response for cancel request id: [%" PRIu16 "].", request->sequenceNumber());
     context->returnResponse(context, std::make_shared<CancelResponse>(request->sequenceNumber()));
 }
 
index a90c08c..dbbc7d6 100644 (file)
@@ -84,6 +84,7 @@ private:
                ProtocolFrameSequenceNumber checkId, PolicyResult &result);
     bool pluginCheck(const RequestContextPtr &context, const PolicyKey &key,
                      ProtocolFrameSequenceNumber checkId, PolicyResult &result);
+
     void onPoliciesChanged(void);
 };