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