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

Side by Side Diff: net/cert/multi_threaded_cert_verifier.cc

Issue 2910473005: Deprecate NonThreadSafe in net/ in favor of SequenceChecker/ThreadChecker. (Closed)
Patch Set: rebase on r476634 Created 3 years, 6 months 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
« no previous file with comments | « net/cert/multi_threaded_cert_verifier.h ('k') | net/dns/address_sorter_posix.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/cert/multi_threaded_cert_verifier.h" 5 #include "net/cert/multi_threaded_cert_verifier.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 338
339 bool is_first_job_; 339 bool is_first_job_;
340 base::WeakPtrFactory<CertVerifierJob> weak_ptr_factory_; 340 base::WeakPtrFactory<CertVerifierJob> weak_ptr_factory_;
341 }; 341 };
342 342
343 MultiThreadedCertVerifier::MultiThreadedCertVerifier( 343 MultiThreadedCertVerifier::MultiThreadedCertVerifier(
344 CertVerifyProc* verify_proc) 344 CertVerifyProc* verify_proc)
345 : requests_(0), inflight_joins_(0), verify_proc_(verify_proc) {} 345 : requests_(0), inflight_joins_(0), verify_proc_(verify_proc) {}
346 346
347 MultiThreadedCertVerifier::~MultiThreadedCertVerifier() { 347 MultiThreadedCertVerifier::~MultiThreadedCertVerifier() {
348 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
348 } 349 }
349 350
350 int MultiThreadedCertVerifier::Verify(const RequestParams& params, 351 int MultiThreadedCertVerifier::Verify(const RequestParams& params,
351 CRLSet* crl_set, 352 CRLSet* crl_set,
352 CertVerifyResult* verify_result, 353 CertVerifyResult* verify_result,
353 const CompletionCallback& callback, 354 const CompletionCallback& callback,
354 std::unique_ptr<Request>* out_req, 355 std::unique_ptr<Request>* out_req,
355 const NetLogWithSource& net_log) { 356 const NetLogWithSource& net_log) {
356 out_req->reset(); 357 out_req->reset();
357 358
358 DCHECK(CalledOnValidThread()); 359 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
359 360
360 if (callback.is_null() || !verify_result || params.hostname().empty()) 361 if (callback.is_null() || !verify_result || params.hostname().empty())
361 return ERR_INVALID_ARGUMENT; 362 return ERR_INVALID_ARGUMENT;
362 363
363 requests_++; 364 requests_++;
364 365
365 // See if an identical request is currently in flight. 366 // See if an identical request is currently in flight.
366 CertVerifierJob* job = FindJob(params); 367 CertVerifierJob* job = FindJob(params);
367 if (job) { 368 if (job) {
368 // An identical request is in flight already. We'll just attach our 369 // An identical request is in flight already. We'll just attach our
(...skipping 28 matching lines...) Expand all
397 } 398 }
398 399
399 bool MultiThreadedCertVerifier::JobComparator::operator()( 400 bool MultiThreadedCertVerifier::JobComparator::operator()(
400 const CertVerifierJob* job1, 401 const CertVerifierJob* job1,
401 const CertVerifierJob* job2) const { 402 const CertVerifierJob* job2) const {
402 return job1->key() < job2->key(); 403 return job1->key() < job2->key();
403 } 404 }
404 405
405 std::unique_ptr<CertVerifierJob> MultiThreadedCertVerifier::RemoveJob( 406 std::unique_ptr<CertVerifierJob> MultiThreadedCertVerifier::RemoveJob(
406 CertVerifierJob* job) { 407 CertVerifierJob* job) {
407 DCHECK(CalledOnValidThread()); 408 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
408 auto it = inflight_.find(job); 409 auto it = inflight_.find(job);
409 DCHECK(it != inflight_.end()); 410 DCHECK(it != inflight_.end());
410 std::unique_ptr<CertVerifierJob> job_ptr = std::move(it->second); 411 std::unique_ptr<CertVerifierJob> job_ptr = std::move(it->second);
411 inflight_.erase(it); 412 inflight_.erase(it);
412 return job_ptr; 413 return job_ptr;
413 } 414 }
414 415
415 struct MultiThreadedCertVerifier::JobToRequestParamsComparator { 416 struct MultiThreadedCertVerifier::JobToRequestParamsComparator {
416 bool operator()(const std::pair<CertVerifierJob* const, 417 bool operator()(const std::pair<CertVerifierJob* const,
417 std::unique_ptr<CertVerifierJob>>& item, 418 std::unique_ptr<CertVerifierJob>>& item,
418 const CertVerifier::RequestParams& value) const { 419 const CertVerifier::RequestParams& value) const {
419 return item.first->key() < value; 420 return item.first->key() < value;
420 } 421 }
421 }; 422 };
422 423
423 CertVerifierJob* MultiThreadedCertVerifier::FindJob(const RequestParams& key) { 424 CertVerifierJob* MultiThreadedCertVerifier::FindJob(const RequestParams& key) {
424 DCHECK(CalledOnValidThread()); 425 DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
425 426
426 // The JobSet is kept in sorted order so items can be found using binary 427 // The JobSet is kept in sorted order so items can be found using binary
427 // search. 428 // search.
428 auto it = std::lower_bound(inflight_.begin(), inflight_.end(), key, 429 auto it = std::lower_bound(inflight_.begin(), inflight_.end(), key,
429 JobToRequestParamsComparator()); 430 JobToRequestParamsComparator());
430 if (it != inflight_.end() && !(key < it->first->key())) 431 if (it != inflight_.end() && !(key < it->first->key()))
431 return it->first; 432 return it->first;
432 return nullptr; 433 return nullptr;
433 } 434 }
434 435
435 } // namespace net 436 } // namespace net
OLDNEW
« no previous file with comments | « net/cert/multi_threaded_cert_verifier.h ('k') | net/dns/address_sorter_posix.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698