blob: f9905bb76daccbac3da46964293d6ae40642636b [file] [log] [blame]
Andrew de los Reyes9cd120d2010-11-18 17:50:03 -08001// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "update_engine/proxy_resolver.h"
6
Andrew de los Reyes45168102010-11-22 11:13:50 -08007using std::deque;
Andrew de los Reyes9cd120d2010-11-18 17:50:03 -08008using std::string;
Andrew de los Reyes9cd120d2010-11-18 17:50:03 -08009
10namespace chromeos_update_engine {
11
12const char kNoProxy[] = "direct://";
13
Andrew de los Reyesf3ed8e72011-02-16 10:35:46 -080014DirectProxyResolver::~DirectProxyResolver() {
15 if (idle_callback_id_) {
16 g_source_remove(idle_callback_id_);
17 idle_callback_id_ = 0;
18 }
19}
20
21bool DirectProxyResolver::GetProxiesForUrl(const std::string& url,
22 ProxiesResolvedFn callback,
23 void* data) {
Alex Deymoc4acdf42014-05-28 21:07:10 -070024 google::protobuf::Closure* closure = google::protobuf::NewPermanentCallback(
25 this,
26 &DirectProxyResolver::ReturnCallback,
27 callback,
28 data);
29 idle_callback_id_ = g_idle_add_full(
30 G_PRIORITY_DEFAULT,
31 utils::GlibRunClosure,
32 closure,
33 utils::GlibDestroyClosure);
Andrew de los Reyes9cd120d2010-11-18 17:50:03 -080034 return true;
35}
36
Andrew de los Reyesf3ed8e72011-02-16 10:35:46 -080037void DirectProxyResolver::ReturnCallback(ProxiesResolvedFn callback,
38 void* data) {
39 idle_callback_id_ = 0;
Gilad Arnold9bedeb52011-11-17 16:19:57 -080040
41 // Initialize proxy pool with as many proxies as indicated (all identical).
42 std::deque<std::string> proxies(num_proxies_, kNoProxy);
43
Andrew de los Reyesf3ed8e72011-02-16 10:35:46 -080044 (*callback)(proxies, data);
45}
46
47
Andrew de los Reyes9cd120d2010-11-18 17:50:03 -080048} // namespace chromeos_update_engine