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); +	} +} + + +} | 
 Swift
 Swift