| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/quic/test_tools/delayed_verify_strike_register_client.h" |
| |
| using base::StringPiece; |
| using std::string; |
| using std::vector; |
| |
| namespace net { |
| namespace test { |
| |
| DelayedVerifyStrikeRegisterClient::DelayedVerifyStrikeRegisterClient( |
| unsigned max_entries, |
| uint32 current_time_external, |
| uint32 window_secs, |
| const uint8 orbit[8], |
| StrikeRegister::StartupType startup) |
| : LocalStrikeRegisterClient(max_entries, current_time_external, |
| window_secs, orbit, startup), |
| delay_verifications_(false) { |
| } |
| |
| DelayedVerifyStrikeRegisterClient::~DelayedVerifyStrikeRegisterClient() {} |
| |
| void DelayedVerifyStrikeRegisterClient::VerifyNonceIsValidAndUnique( |
| StringPiece nonce, |
| QuicWallTime now, |
| ResultCallback* cb) { |
| if (delay_verifications_) { |
| pending_verifications_.push_back(VerifyArgs(nonce, now, cb)); |
| } else { |
| LocalStrikeRegisterClient::VerifyNonceIsValidAndUnique(nonce, now, cb); |
| } |
| } |
| |
| int DelayedVerifyStrikeRegisterClient::PendingVerifications() const { |
| return pending_verifications_.size(); |
| } |
| |
| void DelayedVerifyStrikeRegisterClient::RunPendingVerifications() { |
| vector<VerifyArgs> pending; |
| pending_verifications_.swap(pending); |
| for (vector<VerifyArgs>::const_iterator it = pending.begin(), |
| end = pending.end(); it != end; ++it) { |
| LocalStrikeRegisterClient::VerifyNonceIsValidAndUnique( |
| it->nonce, it->now, it->cb); |
| } |
| } |
| |
| } // namespace test |
| } // namespace net |