diff options
author | Ed Tanous <ed.tanous@intel.com> | 2017-06-26 21:08:40 +0300 |
---|---|---|
committer | Ed Tanous <ed.tanous@intel.com> | 2017-06-26 21:08:40 +0300 |
commit | 7b4e3dae0477703143b8cb28b3a6abc9d4d0d83b (patch) | |
tree | ac89c4cb8ce43d534144f772c6b3620ffc3aa94c /src | |
parent | 4d92cbfe32ef6ee24547401cc06994baa84a24aa (diff) | |
download | bmcweb-7b4e3dae0477703143b8cb28b3a6abc9d4d0d83b.tar.xz |
Make dbus connections allow multiple connections
Fix static dependencies
Diffstat (limited to 'src')
-rw-r--r-- | src/webserver_main.cpp | 52 |
1 files changed, 19 insertions, 33 deletions
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp index d20b8d5af2..ec21f6d48d 100644 --- a/src/webserver_main.cpp +++ b/src/webserver_main.cpp @@ -54,7 +54,7 @@ void on_sensor_update(boost::system::error_code ec, dbus::message s) { s.unpack(object_name).unpack(values); crow::json::wvalue j; for (auto& value : values) { - //std::cout << "Got sensor value for " << s.get_path() << "\n"; + // std::cout << "Got sensor value for " << s.get_path() << "\n"; boost::apply_visitor([&](auto val) { j[s.get_path()] = val; }, value.second); } @@ -107,39 +107,25 @@ int main(int argc, char** argv) { CROW_ROUTE(app, "/sensorws") .websocket() .onopen([&](crow::websocket::connection& conn) { - system_bus = std::make_shared<dbus::connection>(conn.get_io_service(), - dbus::bus::system); - sensor_match = std::make_shared<dbus::match>( - *system_bus, - "type='signal',path_namespace='/xyz/openbmc_project/sensors'"); - - sensor_filter = - std::make_shared<dbus::filter>(*system_bus, [](dbus::message& m) { - auto member = m.get_member(); - return member == "PropertiesChanged"; - }); - /* - std::function<void(boost::system::error_code, dbus::message)> - sensor_callback = [&conn, sensor_callback]( - boost::system::error_code ec, dbus::message s) { - std::string object_name; - std::vector<std::pair<std::string, dbus::dbus_variant>> values; - s.unpack(object_name).unpack(values); - crow::json::wvalue j; - for (auto& value : values) { - std::cout << "Got sensor value for " << s.get_path() << "\n"; - boost::apply_visitor([&](auto val) { j[s.get_path()] = val; }, - value.second); - } - for (auto conn : users) { - conn.send_text(crow::json::dump(j)); - } - sensor_filter->async_dispatch(sensor_callback); - }; - */ - sensor_filter->async_dispatch(on_sensor_update); + if (!system_bus) { + system_bus = std::make_shared<dbus::connection>(conn.get_io_service(), + dbus::bus::system); + } + if (!sensor_match) { + sensor_match = std::make_shared<dbus::match>( + *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) { + auto member = m.get_member(); + return member == "PropertiesChanged"; + }); + sensor_filter->async_dispatch(on_sensor_update); + } + users.insert(&conn); - ; }) .onclose( [&](crow::websocket::connection& conn, const std::string& reason) { |