Index: proxy_resolver.cc |
diff --git a/proxy_resolver.cc b/proxy_resolver.cc |
index 4ec8d1e73b9c58ef99cabebbd9ef5a5263f8ddcd..26dff7bc112be1346d4fded4c25deae10cb2702b 100644 |
--- a/proxy_resolver.cc |
+++ b/proxy_resolver.cc |
@@ -11,11 +11,32 @@ namespace chromeos_update_engine { |
const char kNoProxy[] = "direct://"; |
-bool DirectProxyResolver::GetProxiesForUrl(const string& url, |
- deque<string>* out_proxies) { |
- out_proxies->clear(); |
- out_proxies->push_back(kNoProxy); |
+DirectProxyResolver::~DirectProxyResolver() { |
+ if (idle_callback_id_) { |
+ g_source_remove(idle_callback_id_); |
+ idle_callback_id_ = 0; |
+ } |
+} |
+ |
+bool DirectProxyResolver::GetProxiesForUrl(const std::string& url, |
+ ProxiesResolvedFn callback, |
+ void* data) { |
+ google::protobuf::Closure* closure = |
+ google::protobuf::NewCallback(this, |
+ &DirectProxyResolver::ReturnCallback, |
+ callback, |
+ data); |
+ idle_callback_id_ = g_idle_add(utils::GlibRunClosure, closure); |
return true; |
} |
+void DirectProxyResolver::ReturnCallback(ProxiesResolvedFn callback, |
+ void* data) { |
+ idle_callback_id_ = 0; |
+ std::deque<std::string> proxies; |
+ proxies.push_back(kNoProxy); |
+ (*callback)(proxies, data); |
+} |
+ |
+ |
} // namespace chromeos_update_engine |