Index: chrome/browser/extensions/api/gcd_private/gcd_private_api.cc |
diff --git a/chrome/browser/extensions/api/gcd_private/gcd_private_api.cc b/chrome/browser/extensions/api/gcd_private/gcd_private_api.cc |
index b7306d0797f5e055118ad997da9454cc6b05e58b..6a2f2f9c04b62f58a28865a4822edc5ad45433f6 100644 |
--- a/chrome/browser/extensions/api/gcd_private/gcd_private_api.cc |
+++ b/chrome/browser/extensions/api/gcd_private/gcd_private_api.cc |
@@ -9,8 +9,9 @@ |
#include "base/memory/linked_ptr.h" |
#include "base/thread_task_runner_handle.h" |
#include "chrome/browser/extensions/api/gcd_private/privet_v3_session.h" |
+#include "chrome/browser/local_discovery/endpoint_resolver.h" |
#include "chrome/browser/local_discovery/privet_http.h" |
-#include "chrome/browser/local_discovery/privet_http_asynchronous_factory.h" |
+#include "chrome/browser/local_discovery/privet_http_impl.h" |
#include "chrome/browser/local_discovery/service_discovery_shared_client.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/chrome_switches.h" |
@@ -84,16 +85,17 @@ class GcdPrivateAPIImpl { |
const base::DictionaryValue& input, |
const MessageResponseCallback& callback); |
- void OnServiceResolved(int session_id, |
+ void OnServiceResolved(const std::string& service_name, |
+ int session_id, |
const CreateSessionCallback& callback, |
- scoped_ptr<local_discovery::PrivetHTTPClient> client); |
+ const net::IPEndPoint& endpoint); |
scoped_refptr<local_discovery::ServiceDiscoverySharedClient> |
service_discovery_client_; |
struct SessionInfo { |
linked_ptr<PrivetV3Session> session; |
- linked_ptr<local_discovery::PrivetHTTPResolution> http_resolution; |
+ linked_ptr<local_discovery::EndpointResolver> resolver; |
}; |
std::map<int, SessionInfo> sessions_; |
@@ -130,26 +132,27 @@ void GcdPrivateAPIImpl::CreateSession(const std::string& service_name, |
return callback.Run(session_id, gcd_private::STATUS_SESSIONERROR, |
base::DictionaryValue()); |
} |
- scoped_ptr<local_discovery::PrivetHTTPAsynchronousFactory> factory( |
- local_discovery::PrivetHTTPAsynchronousFactory::CreateInstance( |
- browser_context_->GetRequestContext())); |
auto& session_data = sessions_[session_id]; |
- session_data.http_resolution.reset( |
- factory->CreatePrivetHTTP(service_name).release()); |
- session_data.http_resolution->Start( |
+ session_data.resolver.reset(new local_discovery::EndpointResolver()); |
+ session_data.resolver->Start( |
+ service_name, |
base::Bind(&GcdPrivateAPIImpl::OnServiceResolved, base::Unretained(this), |
- session_id, callback)); |
+ service_name, session_id, callback)); |
} |
-void GcdPrivateAPIImpl::OnServiceResolved( |
- int session_id, |
- const CreateSessionCallback& callback, |
- scoped_ptr<local_discovery::PrivetHTTPClient> client) { |
- if (!client) { |
+void GcdPrivateAPIImpl::OnServiceResolved(const std::string& service_name, |
+ int session_id, |
+ const CreateSessionCallback& callback, |
+ const net::IPEndPoint& endpoint) { |
+ if (endpoint.address().empty()) { |
return callback.Run(session_id, gcd_private::STATUS_SERVICERESOLUTIONERROR, |
base::DictionaryValue()); |
} |
auto& session_data = sessions_[session_id]; |
+ net::HostPortPair host_port = net::HostPortPair::FromIPEndPoint(endpoint); |
+ scoped_ptr<local_discovery::PrivetHTTPClient> client( |
+ new local_discovery::PrivetHTTPClientImpl( |
+ service_name, host_port, browser_context_->GetRequestContext())); |
session_data.session.reset(new PrivetV3Session(client.Pass())); |
session_data.session->Init(base::Bind(callback, session_id)); |
} |