blob: fe8ae93d3f4204f32ba0058890d78ed09d86944d [file] [log] [blame]
// 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.
#ifndef NET_QUIC_CRYPTO_LOCAL_STRIKE_REGISTER_CLIENT_H_
#define NET_QUIC_CRYPTO_LOCAL_STRIKE_REGISTER_CLIENT_H_
#include "base/basictypes.h"
#include "base/strings/string_piece.h"
#include "base/synchronization/lock.h"
#include "net/base/net_export.h"
#include "net/quic/crypto/strike_register.h"
#include "net/quic/crypto/strike_register_client.h"
#include "net/quic/quic_time.h"
namespace net {
// StrikeRegisterClient implementation that wraps a local in-memory
// strike register.
class NET_EXPORT_PRIVATE LocalStrikeRegisterClient
: public StrikeRegisterClient {
public:
LocalStrikeRegisterClient(unsigned max_entries,
uint32 current_time_external,
uint32 window_secs,
const uint8 orbit[8],
StrikeRegister::StartupType startup);
virtual bool IsKnownOrbit(base::StringPiece orbit) const OVERRIDE;
virtual void VerifyNonceIsValidAndUnique(base::StringPiece nonce,
QuicWallTime now,
ResultCallback* cb) OVERRIDE;
private:
mutable base::Lock m_;
StrikeRegister strike_register_;
DISALLOW_COPY_AND_ASSIGN(LocalStrikeRegisterClient);
};
} // namespace net
#endif // NET_QUIC_CRYPTO_LOCAL_STRIKE_REGISTER_CLIENT_H_