1 // Copyright 2013 The Chromium 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 #ifndef NET_QUIC_CRYPTO_LOCAL_STRIKE_REGISTER_CLIENT_H_ 6 #define NET_QUIC_CRYPTO_LOCAL_STRIKE_REGISTER_CLIENT_H_ 7 8 #include "base/basictypes.h" 9 #include "base/strings/string_piece.h" 10 #include "base/synchronization/lock.h" 11 #include "net/base/net_export.h" 12 #include "net/quic/crypto/strike_register.h" 13 #include "net/quic/crypto/strike_register_client.h" 14 #include "net/quic/quic_time.h" 15 16 namespace net { 17 18 // StrikeRegisterClient implementation that wraps a local in-memory 19 // strike register. 20 class NET_EXPORT_PRIVATE LocalStrikeRegisterClient 21 : public StrikeRegisterClient { 22 public: 23 LocalStrikeRegisterClient(unsigned max_entries, 24 uint32 current_time_external, 25 uint32 window_secs, 26 const uint8 orbit[8], 27 StrikeRegister::StartupType startup); 28 29 virtual bool IsKnownOrbit(base::StringPiece orbit) const OVERRIDE; 30 virtual void VerifyNonceIsValidAndUnique(base::StringPiece nonce, 31 QuicWallTime now, 32 ResultCallback* cb) OVERRIDE; 33 34 private: 35 mutable base::Lock m_; 36 StrikeRegister strike_register_; 37 38 DISALLOW_COPY_AND_ASSIGN(LocalStrikeRegisterClient); 39 }; 40 41 } // namespace net 42 43 #endif // NET_QUIC_CRYPTO_LOCAL_STRIKE_REGISTER_CLIENT_H_ 44