#include <plp/log.h>
#include <plp/retval.h>
+#include <plp/Data.hh>
#include <plp/DeviceData.hh>
#include "DeviceManagerClient.hh"
clean_device_list(_device_list);
}
-const std::list<plp::Device *> *DeviceManagerClient::get_device_list(BusClient *client_param) {
- send_request__get_device_list(client_param);
- return _device_list;
-}
+const std::list<plp::Device *> *DeviceManagerClient::get_device_list(BusClient *client_param,
+ int *err_flg) {
+ //send_request__get_device_list(client_param);
-void DeviceManagerClient::send_request__get_device_list(BusClient *client_param) {
BusMessage *msg_req;
BusMessage *msg_rsp;
msg_req = new BusMessage(MSG_TYPE_ID__GET_DEVICE_LIST);
client_param->send_message_and_wait_response(msg_req, &msg_rsp);
clean_device_list(_device_list);
- _device_list = parse_device_list_msg(msg_rsp);
+ _device_list = parse_device_list_msg(msg_rsp, err_flg);
delete(msg_req);
delete(msg_rsp);
+
+ return _device_list;
}
BusMessage *DeviceManagerClient::get_latest_data(BusClient *client_param, string device_id_param) {
return msg_rsp;
}
-list<Device *> *DeviceManagerClient::parse_device_list_msg(BusMessage *msg_param) {
+list<Device *> *DeviceManagerClient::parse_device_list_msg(BusMessage *msg_param, int *err_flg) {
int ii;
long count;
- int err_flg;
ostringstream key;
string id;
string name;
string type;
+ string datastr;
EnumDeviceLifeCycleStatus state;
int state_i;
Device *dev;
+ Data *data;
list<Device *> *ret_val;
- log_debug("parse_device_list_msg() started\n");
- count = msg_param->get_long_parameter(RSP__DEVICE_LIST__DEVICE_COUNT, &err_flg);
- log_debug("count: %ld\n", count);
+ count = msg_param->get_long_parameter(RSP__DEVICE_LIST__DEVICE_COUNT, err_flg);
+ log_debug("device count: %ld\n", count);
ret_val = new list<Device *>;
- if (err_flg == PLP_OK) {
+ if (*err_flg == PLP_OK) {
for (ii = 0; ii < count; ii++) {
key.str("");
key << RSP__DEVICE_LIST__ID << ii;
- id = msg_param->get_string_parameter(key.str(), &err_flg);
+ id = msg_param->get_string_parameter(key.str(), err_flg);
+ if (*err_flg != PLP_OK)
+ break;
key.str("");
key << RSP__DEVICE_LIST__NAME << ii;
- name = msg_param->get_string_parameter(key.str(), &err_flg);
+ name = msg_param->get_string_parameter(key.str(), err_flg);
+ if (*err_flg != PLP_OK)
+ break;
key.str("");
key << RSP__DEVICE_LIST__TYPE << ii;
- type = msg_param->get_string_parameter(key.str(), &err_flg);
+ type = msg_param->get_string_parameter(key.str(), err_flg);
+ if (*err_flg != PLP_OK)
+ break;
key.str("");
key << RSP__DEVICE_LIST__LF_STATE << ii;
- state_i = msg_param->get_int_parameter(key.str(), &err_flg);
+ state_i = msg_param->get_int_parameter(key.str(), err_flg);
+ if (*err_flg != PLP_OK)
+ break;
state = (EnumDeviceLifeCycleStatus)state_i;
- dev = new DeviceData(id, type, name, state);
+ key.str("");
+ key << RSP__DEVICE_LIST__DATA << ii;
+ datastr = msg_param->get_string_parameter(key.str(), err_flg);
+ if (*err_flg != PLP_OK)
+ break;
+
+ data = Data::parse_string(datastr);
+ if (data == NULL) {
+ *err_flg = PLP_ERR;
+ break;
+ }
+
+ dev = new DeviceData(id, type, name, state, data);
ret_val->push_back(dev);
}
}