| Index: chrome/browser/extensions/api/dial/mdns_service.cc
|
| diff --git a/chrome/browser/extensions/api/dial/mdns_service.cc b/chrome/browser/extensions/api/dial/mdns_service.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5886851227ff42f4cc6b7aaee190f4ad786dbd1a
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/api/dial/mdns_service.cc
|
| @@ -0,0 +1,68 @@
|
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/extensions/api/dial/mdns_service.h"
|
| +
|
| +#include "base/bind.h"
|
| +
|
| +using local_discovery::ServiceWatcher;
|
| +using local_discovery::ServiceDiscoveryHostClientFactory;
|
| +
|
| +namespace extensions {
|
| +
|
| +
|
| +MDNSService::MDNSService(std::string service_type)
|
| + : service_type_(service_type),
|
| + service_discovery_client_(ServiceDiscoveryHostClientFactory::GetClient()),
|
| + started_(false) {
|
| +}
|
| +
|
| +MDNSService::~MDNSService() {}
|
| +
|
| +bool MDNSService::Start() {
|
| + if (!started_) {
|
| + service_watcher_ = service_discovery_client_->CreateServiceWatcher(
|
| + service_type_,
|
| + base::Bind(&MDNSService::OnServiceUpdated,
|
| + base::Unretained(this)));
|
| + service_watcher_->Start();
|
| + started_ = true;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +void MDNSService::Stop() {
|
| +}
|
| +
|
| +void MDNSService::Discover(bool force_update) {
|
| + service_watcher_->DiscoverNewServices(force_update);
|
| +}
|
| +
|
| +void MDNSService::OnServiceUpdated(
|
| + ServiceWatcher::UpdateType update,
|
| + const std::string& service_name) {
|
| + if (update != ServiceWatcher::UPDATE_REMOVED) {
|
| + // bool added = (update == ServiceWatcher::UPDATE_ADDED);
|
| + // std::pair<ServiceResolverMap::iterator, bool> insert_result =
|
| + // resolvers_.insert(make_pair(service_name,
|
| + // linked_ptr<ServiceResolver>(NULL)));
|
| +
|
| + // // If there is already a resolver working on this service, don't add one.
|
| + // if (insert_result.second) {
|
| + // scoped_ptr<ServiceResolver> resolver =
|
| + // service_discovery_client_->CreateServiceResolver(
|
| + // service_name, base::Bind(
|
| + // &PrivetDeviceListerImpl::OnResolveComplete,
|
| + // base::Unretained(this),
|
| + // added));
|
| +
|
| + // insert_result.first->second.reset(resolver.release());
|
| + // insert_result.first->second->StartResolving();
|
| + // }
|
| + } else {
|
| + // delegate_->DeviceRemoved(service_name);
|
| + }
|
| +}
|
| +
|
| +} // namespace extensions
|
|
|