]> pilppa.org Git - libplpdevicebus.git/blobdiff - src_server/DeviceManagerServer.cc
memory leak fixes
[libplpdevicebus.git] / src_server / DeviceManagerServer.cc
index 53b5a4916a0a9ca830c74b55768e0ae59b96714f..22a8c6c9e4a881bd13ad3045d87cdc40bf73a862 100644 (file)
@@ -25,17 +25,24 @@ static void *device_data_reader_thread(void *thread_args_pointer) {
        list<Device *>::iterator        list_iter;
        Device                          *device;
        SensorDevice                    *sensor;
+       long                            read_int_sec;
+       plp::Data                       *data;
 
+       read_int_sec    = DeviceConfig::get_read_interval_seconds();
+       if (read_int_sec < 0)
+               read_int_sec = 600;
        _dev_lst        = (list<Device *> *)thread_args_pointer;
        while(1) {
                for (list_iter = _dev_lst->begin(); list_iter != _dev_lst->end(); list_iter++) {
                        device  = (Device *)*list_iter;
                        sensor = dynamic_cast<SensorDevice *>(device);
                        if (sensor != NULL) {
-                               sensor->get_data();
-                               sleep(60);
+                               data = sensor->get_data();
+                               if (data != NULL)
+                                       delete(data);
                        }
                }
+               sleep(read_int_sec);
        }
        pthread_exit(NULL);
 }
@@ -94,6 +101,7 @@ void DeviceManagerServer::get_device_list(const BusMessage *ret_val) {
                                if (data != NULL) {
                                        log_debug("returning data: %s\n", data->to_string().c_str());
                                        ((BusMessage *)ret_val)->add_string_parameter(key.str(), data->to_string());
+                                       delete(data);
                                }
                        }
                        indx++;