diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.h b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.h index 62a46b8395d4ae9b6c6f7667f6ab8a69d66e11f5..8a72c52fd4af4d9e903d7c822f56faa563de3b12 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 2bff435425be3b03f24f149e669f4882deeddf03..030477672df9d5374642c03635e5eceed8a895ce 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 4d68afa452e8b14758ddffb94581fd7db0a3a7dc..69e87a7872455185b8ebd9a0c6551485045dec4c 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*/