diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-07-22 21:36:52 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-07-22 21:40:21 (GMT) |
commit | 0a7336577f9609c70bb4d846c668e7853746cb52 (patch) | |
tree | 5a4b57f400da14190c12336db1333788183ad35c /Swiften/LinkLocal/LinkLocalServiceBrowser.cpp | |
parent | 15103cc6eb3dd62c0e84c68bb08995247c653094 (diff) | |
download | swift-0a7336577f9609c70bb4d846c668e7853746cb52.zip swift-0a7336577f9609c70bb4d846c668e7853746cb52.tar.bz2 |
Started LinkLocalServiceBrowser.
Diffstat (limited to 'Swiften/LinkLocal/LinkLocalServiceBrowser.cpp')
-rw-r--r-- | Swiften/LinkLocal/LinkLocalServiceBrowser.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp b/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp new file mode 100644 index 0000000..63cf075 --- /dev/null +++ b/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp @@ -0,0 +1,38 @@ +#include <boost/bind.hpp> +#include <iostream> + +#include "Swiften/LinkLocal/LinkLocalServiceBrowser.h" +#include "Swiften/Network/HostAddress.h" + +namespace Swift { + +LinkLocalServiceBrowser::LinkLocalServiceBrowser(boost::shared_ptr<DNSSDService> service) : dnsSDService(service) { + dnsSDService->onServiceAdded.connect( + boost::bind(&LinkLocalServiceBrowser::handleServiceAdded, this, _1)); + dnsSDService->onServiceRemoved.connect( + boost::bind(&LinkLocalServiceBrowser::handleServiceRemoved, this, _1)); + dnsSDService->onServiceResolved.connect( + boost::bind(&LinkLocalServiceBrowser::handleServiceResolved, this, _1, _2)); +} + +void LinkLocalServiceBrowser::handleServiceAdded(const LinkLocalServiceID& service) { + dnsSDService->startResolvingService(service); +} + +void LinkLocalServiceBrowser::handleServiceRemoved(const LinkLocalServiceID& service) { + /*dnsSDService->stopResolvingService(service); + services.erase(service);*/ +} + +void LinkLocalServiceBrowser::handleServiceResolved(const LinkLocalServiceID& service, const DNSSDService::ResolveResult& result) { + std::pair<ServiceMap::iterator, bool> r = services.insert(std::make_pair(service, result)); + if (r.second) { + onServiceAdded(service); + } + else { + onServiceChanged(service); + } +} + + +} |