xref: /openbmc/boost-dbus/README.md (revision 16d80fe9ad0e4590896901c40275eed8e7cc9316)
116593a9fSBenjamin KietzmanBoost D-Bus
216593a9fSBenjamin Kietzman===========
316593a9fSBenjamin Kietzman
4*16d80fe9SBenjamin KietzmanThis is a simple D-Bus binding powered by Boost.Asio.
516593a9fSBenjamin KietzmanAs far as possible, I try to follow Asio's idioms.
616593a9fSBenjamin Kietzman
716593a9fSBenjamin KietzmanCode Sample
816593a9fSBenjamin Kietzman-----------
916593a9fSBenjamin Kietzman
1016593a9fSBenjamin Kietzman```c++
1116593a9fSBenjamin Kietzman#include <iostream>
1216593a9fSBenjamin Kietzman
1316593a9fSBenjamin Kietzman#include <boost/asio.hpp>
1416593a9fSBenjamin Kietzman#include <dbus.hpp>
1516593a9fSBenjamin Kietzman
1616593a9fSBenjamin Kietzmanusing namespace std;
1716593a9fSBenjamin Kietzmanusing namespace boost::asio;
1816593a9fSBenjamin Kietzmanusing boost::system::error_code;
1916593a9fSBenjamin Kietzman
2016593a9fSBenjamin Kietzmanstruct logger
2116593a9fSBenjamin Kietzman{
2216593a9fSBenjamin Kietzman  void operator()(error_code ec, message m)
2316593a9fSBenjamin Kietzman  {
2416593a9fSBenjamin Kietzman	cout << m << endl;
2516593a9fSBenjamin Kietzman  }
2616593a9fSBenjamin Kietzman};
2716593a9fSBenjamin Kietzman
28*16d80fe9SBenjamin Kietzmanvoid main()
2916593a9fSBenjamin Kietzman{
3016593a9fSBenjamin Kietzman  io_service io;
3116593a9fSBenjamin Kietzman  dbus::proxy avahi(io,
32*16d80fe9SBenjamin Kietzman    dbus::endpoint(
3316593a9fSBenjamin Kietzman	"org.freedesktop.Avahi", // proxied object process
3416593a9fSBenjamin Kietzman	"/",                     // proxied object path
35*16d80fe9SBenjamin Kietzman	"org.freedesktop.Avahi.Server")); // interface
3616593a9fSBenjamin Kietzman
3716593a9fSBenjamin Kietzman  dbus::message browser_spec(-1, -1,
3816593a9fSBenjamin Kietzman    "_http._tcp", "local", unsigned(0));
3916593a9fSBenjamin Kietzman
4016593a9fSBenjamin Kietzman  dbus::message response =
4116593a9fSBenjamin Kietzman    avahi.call("ServiceBrowserNew", browser_spec);
4216593a9fSBenjamin Kietzman
4316593a9fSBenjamin Kietzman  dbus::proxy browser(io,
44*16d80fe9SBenjamin Kietzman    dbus::endpoint(
4516593a9fSBenjamin Kietzman	"org.freedesktop.Avahi",
4616593a9fSBenjamin Kietzman	response.get(0),
47*16d80fe9SBenjamin Kietzman	"org.freedesktop.Avahi.ServiceBrowser"));
4816593a9fSBenjamin Kietzman
49*16d80fe9SBenjamin Kietzman  browser.async_receive("ItemNew", logger());
5016593a9fSBenjamin Kietzman
5116593a9fSBenjamin Kietzman  io.run();
5216593a9fSBenjamin Kietzman}
5316593a9fSBenjamin Kietzman
5416593a9fSBenjamin Kietzman
5516593a9fSBenjamin Kietzman```
56