From b32d4f4ec2434d571e63a8f0c908b03fa82b63d0 Mon Sep 17 00:00:00 2001
From: Claudio Bisegni <Claudio.Bisegni@lnf.infn.it>
Date: Mon, 13 Nov 2017 15:25:07 +0100
Subject: [PATCH] fix micro unit toolkit to use libbson and fixed other bug due
 to new CDataWrapper implementation

---
 .../driver/AbstractRemoteIODriver.h           |  4 ++-
 .../raw_driver/RawDriverUnitProxy.cpp         | 27 +++++++++++++------
 example/ChaosPerformanceTester/main.cpp       |  1 -
 3 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h b/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h
index 1ca41ca5d..7f863fb13 100644
--- a/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h
+++ b/chaos/cu_toolkit/driver_manager/driver/AbstractRemoteIODriver.h
@@ -243,7 +243,9 @@ namespace chaos {
                                     }
                                 }
                             } else {
-                                if(!message->hasKey(MESSAGE)){
+                                if(message->hasKey(AUTHORIZATION_KEY)) {
+                                    sendAuthenticationACK();
+                                } else if(!message->hasKey(MESSAGE)){
                                     //send error because not right type of req index
                                     EndpointType::sendError(connection_identifier,
                                                             -2, "message field is mandatory", __PRETTY_FUNCTION__);
diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
index dd6e571d9..cf683970f 100644
--- a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
+++ b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp
@@ -51,24 +51,35 @@ bool RawDriverUnitProxy::manageAutorizationPhase() {
         //!check authentication state
         RemoteMessageUniquePtr result = getNextMessage();
         if(result->message->hasKey(AUTHORIZATION_STATE) ||
-           result->message->isBoolValue(AUTHORIZATION_STATE)) {
-            authorization_state = (AuthorizationState)result->message->getBoolValue(AUTHORIZATION_STATE);
+           result->message->isInt32Value(AUTHORIZATION_STATE)) {
+            switch (result->message->getInt32Value(AUTHORIZATION_STATE)) {
+                case 0:
+                    authorization_state = AuthorizationStateDenied;
+                    break;
+                case 1:
+                    authorization_state = AuthorizationStateOk;
+                    break;
+                default:
+                     authorization_state = AuthorizationStateDenied;
+                    break;
+            }
+            
         }
     }
     return result;
 }
 
-int RawDriverUnitProxy::sendMessage(DataPackUniquePtr& message_data) {
-    DataPackUniquePtr message(new DataPack());
-    message->addDataPack(MESSAGE, *message_data);
+int RawDriverUnitProxy::sendMessage(CDWUniquePtr& message_data) {
+    CDWUniquePtr message(new DataPack());
+    message->addCDWValue(MESSAGE, *message_data);
     return AbstractUnitProxy::sendMessage(message);
 }
 
 int RawDriverUnitProxy::sendAnswer(RemoteMessageUniquePtr& message,
                                    CDWUniquePtr& message_data) {
     if(message->is_request == false) return - 1;
-    DataPackUniquePtr answer(new DataPack());
-    answer->addInt32(REQUEST_IDENTIFICATION, message->message_id);
-    answer->addDataPack(MESSAGE, *message_data);
+    CDWUniquePtr answer(new DataPack());
+    answer->addInt32Value(REQUEST_IDENTIFICATION, message->message_id);
+    answer->addCDWValue(MESSAGE, *message_data);
     return AbstractUnitProxy::sendMessage(answer);
 }
diff --git a/example/ChaosPerformanceTester/main.cpp b/example/ChaosPerformanceTester/main.cpp
index 77b345b54..a29f66078 100644
--- a/example/ChaosPerformanceTester/main.cpp
+++ b/example/ChaosPerformanceTester/main.cpp
@@ -39,7 +39,6 @@ using namespace std;
 using namespace chaos;
 using namespace chaos::common::network;
 using namespace chaos::ui;
-using namespace bson;
 using namespace boost;
 using namespace boost::posix_time;
 using namespace boost::date_time;
-- 
GitLab