summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEd Tanous <ed.tanous@intel.com>2017-06-28 09:43:09 -0700
committerEd Tanous <ed.tanous@intel.com>2017-06-28 09:43:09 -0700
commit5fceeb4563c08468e9623cef1e3d7f4de9373d2f (patch)
tree6854993a288f126465e6bd3b089e7090aef7409e /src
parent7b4e3dae0477703143b8cb28b3a6abc9d4d0d83b (diff)
downloadbmcweb-5fceeb4563c08468e9623cef1e3d7f4de9373d2f.tar.gz
bmcweb-5fceeb4563c08468e9623cef1e3d7f4de9373d2f.zip
update sensor page
Diffstat (limited to 'src')
-rw-r--r--src/webserver_main.cpp50
1 files changed, 27 insertions, 23 deletions
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp
index ec21f6d..0da73f4 100644
--- a/src/webserver_main.cpp
+++ b/src/webserver_main.cpp
@@ -44,7 +44,6 @@
static std::shared_ptr<dbus::connection> system_bus;
static std::shared_ptr<dbus::match> sensor_match;
static std::shared_ptr<dbus::filter> sensor_filter;
-static std::shared_ptr<dbus::filter> sensor_callback;
std::unordered_set<crow::websocket::connection*> users;
@@ -58,8 +57,9 @@ void on_sensor_update(boost::system::error_code ec, dbus::message s) {
boost::apply_visitor([&](auto val) { j[s.get_path()] = val; },
value.second);
}
+ auto data_to_send = crow::json::dump(j);
for (auto conn : users) {
- conn->send_text(crow::json::dump(j));
+ conn->send_text(data_to_send);
}
sensor_filter->async_dispatch(on_sensor_update);
};
@@ -113,12 +113,12 @@ int main(int argc, char** argv) {
}
if (!sensor_match) {
sensor_match = std::make_shared<dbus::match>(
- *system_bus,
+ system_bus,
"type='signal',path_namespace='/xyz/openbmc_project/sensors'");
}
if (!sensor_filter) {
sensor_filter =
- std::make_shared<dbus::filter>(*system_bus, [](dbus::message& m) {
+ std::make_shared<dbus::filter>(system_bus, [](dbus::message& m) {
auto member = m.get_member();
return member == "PropertiesChanged";
});
@@ -149,26 +149,30 @@ int main(int argc, char** argv) {
system_bus.async_send(
m,
[&j, &system_bus](const boost::system::error_code ec, dbus::message r) {
- std::string xml;
- r.unpack(xml);
- std::vector<std::string> dbus_objects;
- dbus::read_dbus_xml_names(xml, dbus_objects);
-
- for (auto& object : dbus_objects) {
- dbus::endpoint test_daemon("org.openbmc.Sensors",
- "/org/openbmc/sensors/tach/" + object,
- "org.openbmc.SensorValue");
- dbus::message m2 = dbus::message::new_call(test_daemon, "getValue");
-
- system_bus.async_send(
- m2, [&](const boost::system::error_code ec, dbus::message r) {
- int32_t value;
- r.unpack(value);
- // TODO(ed) if we ever go multithread, j needs a lock
- j[object] = value;
- });
+ if (ec) {
+
+ } else {
+ std::string xml;
+ r.unpack(xml);
+ std::vector<std::string> dbus_objects;
+ dbus::read_dbus_xml_names(xml, dbus_objects);
+
+ for (auto& object : dbus_objects) {
+ dbus::endpoint test_daemon("org.openbmc.Sensors",
+ "/org/openbmc/sensors/tach/" + object,
+ "org.openbmc.SensorValue");
+ dbus::message m2 =
+ dbus::message::new_call(test_daemon, "getValue");
+
+ system_bus.async_send(
+ m2, [&](const boost::system::error_code ec, dbus::message r) {
+ int32_t value;
+ r.unpack(value);
+ // TODO(ed) if we ever go multithread, j needs a lock
+ j[object] = value;
+ });
+ }
}
-
});
});
OpenPOWER on IntegriCloud