Skip to content
Snippets Groups Projects
Commit 211b968a authored by Claudio Bisegni's avatar Claudio Bisegni
Browse files

fix init deinit and normal request, need to be tested

parent 3542748d
No related branches found
No related tags found
No related merge requests found
......@@ -38,9 +38,6 @@
#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_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 UPRequest*, memory is valido only during call*/
#define UP_EV_ERR_RECEIVED 12 /* error message has been received, event_data point to UPError*, memory is valido only during call*/
namespace chaos {
namespace micro_unit_toolkit {
......
......@@ -33,6 +33,7 @@ using namespace chaos::micro_unit_toolkit::connection::unit_proxy::raw_driver;
#define INITIALIZATION_URI "uri"
#define INIT_OPCODE "init"
#define DEINIT_OPCODE "deinit"
#define CONFIGURATION_STATE "configuration_state"
ExternalDriverHandlerWrapper::ExternalDriverHandlerWrapper(UnitProxyHandler handler,
void *user_data,
......@@ -120,43 +121,22 @@ int ExternalDriverHandlerWrapper::manageRemoteMessage() {
EDInitRequest init_request = {req_message,{}};
if((err = callHandler(UP_EV_INIT_RECEIVED,
&init_request)) == 0) {
CDWUniquePtr response_msg(new DataPack());
// response_msg->addInt32Value(ERR_CODE, req.response.error_code);
// if(req.response.error_message.size()) {
// response_msg->addStringValue(ERR_MSG, req.response.error_message);
// }
// if(req.response.error_domain.size()) {
// response_msg->addStringValue(ERR_MSG, req.response.error_message);
// }
CDWUniquePtr response_msg = composeResponseMessage(init_request.response);
response_msg->addInt32Value(CONFIGURATION_STATE, init_request.response.configuration_state);
response_msg->addStringValue(INITIALIZATION_URI, init_request.response.new_uri_id);
rd->sendAnswer(remote_message, response_msg);
}
} else if((deinit_opcode = opcode.compare(DEINIT_OPCODE) == 0)) {
EDDeinitRequest deinit_request = {req_message,{}};
if((err = callHandler(UP_EV_DEINIT_RECEIVED,
&deinit_request)) == 0) {
CDWUniquePtr response_msg(new DataPack());
// response_msg->addInt32Value(ERR_CODE, req.response.error_code);
// if(req.response.error_message.size()) {
// response_msg->addStringValue(ERR_MSG, req.response.error_message);
// }
// if(req.response.error_domain.size()) {
// response_msg->addStringValue(ERR_MSG, req.response.error_message);
// }
rd->sendAnswer(remote_message, response_msg);
rd->sendAnswer(remote_message, composeResponseMessage(deinit_request.response));
}
} else if(remote_message->is_request) {
EDNormalRequest normal_request = {req_message,{}};
if((err = callHandler(UP_EV_REQ_RECEIVED,
&normal_request)) == 0) {
CDWUniquePtr response_msg(new DataPack());
// response_msg->addInt32Value(ERR_CODE, req.response.error_code);
// if(req.response.error_message.size()) {
// response_msg->addStringValue(ERR_MSG, req.response.error_message);
// }
// if(req.response.error_domain.size()) {
// response_msg->addStringValue(ERR_MSG, req.response.error_message);
// }
rd->sendAnswer(remote_message, response_msg);
rd->sendAnswer(remote_message, composeResponseMessage(normal_request.response));
}
} else {
err = callHandler(UP_EV_MSG_RECEIVED, &req_message);
......@@ -165,3 +145,15 @@ int ExternalDriverHandlerWrapper::manageRemoteMessage() {
}
return err;
}
CDWUniquePtr ExternalDriverHandlerWrapper::composeResponseMessage(EDResponse& base_resposne) {
CDWUniquePtr response_msg(new DataPack());
response_msg->addInt32Value(ERR_CODE, base_resposne.error_code);
if(base_resposne.error_message.size()) {
response_msg->addStringValue(ERR_MSG, base_resposne.error_message);
}
if(base_resposne.error_domain.size()) {
response_msg->addStringValue(ERR_MSG, base_resposne.error_message);
}
return response_msg;
}
......@@ -25,8 +25,11 @@
#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_INIT_RECEIVED 13 /* */
#define UP_EV_DEINIT_RECEIVED 14 /* */
#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_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*/
namespace chaos {
namespace micro_unit_toolkit {
......@@ -102,6 +105,7 @@ namespace chaos {
public UnitProxyHandlerWrapper {
const UnitState& unit_state;
bool authorized = false;
data::CDWUniquePtr composeResponseMessage(EDResponse& base_resposne);
protected:
int unitEventLoop();
int manageRemoteMessage();
......
......@@ -45,7 +45,7 @@ int ExternalDriverUnitProxy::sendMessage(CDWUniquePtr& message_data) {
}
int ExternalDriverUnitProxy::sendAnswer(RemoteMessageUniquePtr& message,
CDWUniquePtr& message_data) {
const CDWUniquePtr& message_data) {
if(message->is_request == false) return - 1;
CDWUniquePtr answer(new DataPack());
......
......@@ -42,7 +42,7 @@ namespace chaos {
virtual ~ExternalDriverUnitProxy();
int sendAnswer(RemoteMessageUniquePtr& message,
data::CDWUniquePtr& message_data);
const data::CDWUniquePtr& message_data);
int sendMessage(data::CDWUniquePtr& message_data);
using AbstractUnitProxy::sendMessage;
using AbstractUnitProxy::hasMoreMessage;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment