Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: net/http/disk_cache_based_ssl_host_info.cc

Issue 8784003: base::Bind: Convert SSLHostInfo::WaitForDataReady. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/disk_cache_based_ssl_host_info.h" 5 #include "net/http/disk_cache_based_ssl_host_info.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "net/base/io_buffer.h" 9 #include "net/base/io_buffer.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
(...skipping 30 matching lines...) Expand all
41 : SSLHostInfo(hostname, ssl_config, cert_verifier), 41 : SSLHostInfo(hostname, ssl_config, cert_verifier),
42 weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 42 weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
43 callback_(new CallbackImpl(weak_ptr_factory_.GetWeakPtr(), 43 callback_(new CallbackImpl(weak_ptr_factory_.GetWeakPtr(),
44 &DiskCacheBasedSSLHostInfo::OnIOComplete)), 44 &DiskCacheBasedSSLHostInfo::OnIOComplete)),
45 state_(GET_BACKEND), 45 state_(GET_BACKEND),
46 ready_(false), 46 ready_(false),
47 found_entry_(false), 47 found_entry_(false),
48 hostname_(hostname), 48 hostname_(hostname),
49 http_cache_(http_cache), 49 http_cache_(http_cache),
50 backend_(NULL), 50 backend_(NULL),
51 entry_(NULL), 51 entry_(NULL) {
52 user_callback_(NULL) {
53 } 52 }
54 53
55 void DiskCacheBasedSSLHostInfo::Start() { 54 void DiskCacheBasedSSLHostInfo::Start() {
56 DCHECK(CalledOnValidThread()); 55 DCHECK(CalledOnValidThread());
57 DCHECK_EQ(GET_BACKEND, state_); 56 DCHECK_EQ(GET_BACKEND, state_);
58 DoLoop(OK); 57 DoLoop(OK);
59 } 58 }
60 59
61 int DiskCacheBasedSSLHostInfo::WaitForDataReady(OldCompletionCallback* callback) { 60 int DiskCacheBasedSSLHostInfo::WaitForDataReady(
61 const CompletionCallback& callback) {
62 DCHECK(CalledOnValidThread()); 62 DCHECK(CalledOnValidThread());
63 DCHECK(state_ != GET_BACKEND); 63 DCHECK(state_ != GET_BACKEND);
64 64
65 if (ready_) 65 if (ready_)
66 return OK; 66 return OK;
67 if (callback) { 67
68 DCHECK(!user_callback_); 68 if (!callback.is_null()) {
69 DCHECK(user_callback_.is_null());
69 user_callback_ = callback; 70 user_callback_ = callback;
70 } 71 }
72
71 return ERR_IO_PENDING; 73 return ERR_IO_PENDING;
72 } 74 }
73 75
74 void DiskCacheBasedSSLHostInfo::Persist() { 76 void DiskCacheBasedSSLHostInfo::Persist() {
75 DCHECK(CalledOnValidThread()); 77 DCHECK(CalledOnValidThread());
76 DCHECK(state_ != GET_BACKEND); 78 DCHECK(state_ != GET_BACKEND);
77 79
78 DCHECK(new_data_.empty()); 80 DCHECK(new_data_.empty());
79 CHECK(ready_); 81 CHECK(ready_);
80 DCHECK(user_callback_ == NULL); 82 DCHECK(user_callback_.is_null());
81 new_data_ = Serialize(); 83 new_data_ = Serialize();
82 84
83 if (!backend_) 85 if (!backend_)
84 return; 86 return;
85 87
86 state_ = CREATE_OR_OPEN; 88 state_ = CREATE_OR_OPEN;
87 DoLoop(OK); 89 DoLoop(OK);
88 } 90 }
89 91
90 DiskCacheBasedSSLHostInfo::~DiskCacheBasedSSLHostInfo() { 92 DiskCacheBasedSSLHostInfo::~DiskCacheBasedSSLHostInfo() {
91 DCHECK(!user_callback_); 93 DCHECK(user_callback_.is_null());
92 if (entry_) 94 if (entry_)
93 entry_->Close(); 95 entry_->Close();
94 if (!IsCallbackPending()) 96 if (!IsCallbackPending())
95 delete callback_; 97 delete callback_;
96 } 98 }
97 99
98 std::string DiskCacheBasedSSLHostInfo::key() const { 100 std::string DiskCacheBasedSSLHostInfo::key() const {
99 return "sslhostinfo:" + hostname_; 101 return "sslhostinfo:" + hostname_;
100 } 102 }
101 103
102 void DiskCacheBasedSSLHostInfo::OnIOComplete(int rv) { 104 void DiskCacheBasedSSLHostInfo::OnIOComplete(int rv) {
103 rv = DoLoop(rv); 105 rv = DoLoop(rv);
104 if (rv != ERR_IO_PENDING) { 106 if (rv != ERR_IO_PENDING && !user_callback_.is_null()) {
105 OldCompletionCallback* callback = user_callback_; 107 CompletionCallback callback = user_callback_;
106 user_callback_ = NULL; 108 user_callback_.Reset();
107 if (callback) 109 callback.Run(rv);
108 callback->Run(rv);
109 } 110 }
110 } 111 }
111 112
112 int DiskCacheBasedSSLHostInfo::DoLoop(int rv) { 113 int DiskCacheBasedSSLHostInfo::DoLoop(int rv) {
113 do { 114 do {
114 switch (state_) { 115 switch (state_) {
115 case GET_BACKEND: 116 case GET_BACKEND:
116 rv = DoGetBackend(); 117 rv = DoGetBackend();
117 break; 118 break;
118 case GET_BACKEND_COMPLETE: 119 case GET_BACKEND_COMPLETE:
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 case READ_COMPLETE: 272 case READ_COMPLETE:
272 case CREATE_OR_OPEN_COMPLETE: 273 case CREATE_OR_OPEN_COMPLETE:
273 case WRITE_COMPLETE: 274 case WRITE_COMPLETE:
274 return true; 275 return true;
275 default: 276 default:
276 return false; 277 return false;
277 } 278 }
278 } 279 }
279 280
280 } // namespace net 281 } // namespace net
OLDNEW
« no previous file with comments | « net/http/disk_cache_based_ssl_host_info.h ('k') | net/http/disk_cache_based_ssl_host_info_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698