From 8828fb65727a653106452bdf8090fe3bdb3a29a4 Mon Sep 17 00:00:00 2001 From: Claudio Bisegni <Claudio.Bisegni@lnf.infn.it> Date: Wed, 28 Mar 2018 09:25:27 +0200 Subject: [PATCH] fix MUTK for external driver --- .../connection/unit_proxy/UnitProxyHandlerWrapper.h | 1 + .../raw_driver/ExternalDriverHandlerWrapper.cpp | 11 +++++++---- .../raw_driver/ExternalDriverHandlerWrapper.h | 5 ++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.h b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.h index 62a46b839..8a72c52fd 100644 --- a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.h +++ b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.h @@ -38,6 +38,7 @@ #define UP_EV_CONN_RETRY 7 /* retry to reconnect event_data point to and unsigned integer that is the current waiting time for retry */ #define UP_EV_AUTH_ACCEPTED 8 /* unit has been accepted autorization key*/ #define UP_EV_AUTH_REJECTED 9 /* unit has rejected the autorization key */ +#define UP_EV_ERR_RECEIVED 10 /* error message has been received, event_data point to UPError*, memory is valid only during call*/ namespace chaos { namespace micro_unit_toolkit { diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.cpp index 2bff43542..030477672 100644 --- a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.cpp +++ b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.cpp @@ -92,7 +92,7 @@ int ExternalDriverHandlerWrapper::manageRemoteMessage() { while(rd->hasMoreMessage()) { remote_message = rd->getNextMessage(); if(remote_message->message.get() == NULL) return -1; - + std::cout << remote_message->message->toString(); std::string uri; std::string opcode; data::CDWShrdPtr r_msg; @@ -100,14 +100,14 @@ int ExternalDriverHandlerWrapper::manageRemoteMessage() { remote_message->message->isStringValue(OPCODE_KEY)){ opcode = remote_message->message->getStringValue(OPCODE_KEY); } else { - return -2; + return 0; } if(remote_message->message->hasKey(INITIALIZATION_URI) && remote_message->message->isStringValue(INITIALIZATION_URI)){ uri = remote_message->message->getStringValue(INITIALIZATION_URI); } else { - return -3; + return 0; } if(remote_message->message->hasKey(OPCODE_PARAMETER_KEY) && @@ -136,7 +136,10 @@ int ExternalDriverHandlerWrapper::manageRemoteMessage() { EDNormalRequest normal_request = {req_message,{}}; if((err = callHandler(UP_EV_REQ_RECEIVED, &normal_request)) == 0) { - rd->sendAnswer(remote_message, composeResponseMessage(normal_request.response)); + CDWUniquePtr response_msg = composeResponseMessage(normal_request.response); + normal_request.response.message->copyAllTo(*response_msg); + rd->sendAnswer(remote_message, response_msg); + } } else { err = callHandler(UP_EV_MSG_RECEIVED, &req_message); diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.h b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.h index 4d68afa45..69e87a787 100644 --- a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.h +++ b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverHandlerWrapper.h @@ -25,9 +25,8 @@ #include <chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.h> #include <chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/ExternalDriverUnitProxy.h> -#define UP_EV_MSG_RECEIVED 10 /* new message has been received, event_data point to UPMessage*, memory is valido only during call*/ -#define UP_EV_REQ_RECEIVED 11 /* new request has been received, event_data point to EDNormalRequest*, memory is valido only during call*/ -#define UP_EV_ERR_RECEIVED 12 /* error message has been received, event_data point to UPError*, memory is valid only during call*/ +#define UP_EV_MSG_RECEIVED 11 /* new message has been received, event_data point to UPMessage*, memory is valido only during call*/ +#define UP_EV_REQ_RECEIVED 12 /* new request has been received, event_data point to EDNormalRequest*, memory is valido only during call*/ #define UP_EV_INIT_RECEIVED 13 /* has been request a new driver initialization, the event_data point to EDInitResponse*, memory is valid only during call*/ #define UP_EV_DEINIT_RECEIVED 14 /* has been request a new driver deinitilization, the event_data point to EDInitRequest*, memory is valid only during call*/ -- GitLab