// Copyright 2016 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 COMPONENTS_CERTIFICATE_TRANSPARENCY_STH_DISTRIBUTOR_H_
#define COMPONENTS_CERTIFICATE_TRANSPARENCY_STH_DISTRIBUTOR_H_

#include <vector>

#include "base/observer_list.h"
#include "components/certificate_transparency/sth_observer.h"
#include "components/certificate_transparency/sth_reporter.h"
#include "net/base/net_export.h"

namespace net {
namespace ct {
struct SignedTreeHead;
}  // namespace ct
}  // namespace net

namespace certificate_transparency {

// A proxy for delegating new STH notifications to all registered
// observers.
// For each |observer| registered with RegisterObserver, the
// NewSTHObserved method will be called whenever the STHDistributor's
// NewSTHObserved method is invoked.
class STHDistributor : public STHObserver, public STHReporter {
 public:
  STHDistributor();
  ~STHDistributor() override;

  // STHObserver implementation.
  void NewSTHObserved(const net::ct::SignedTreeHead& sth) override;

  // STHReporter implementation
  // Registers |observer| for new STH notifications. On registration,
  // the |observer| will be notified of the latest STH for each log tha the
  // STHDistributor has observed.
  void RegisterObserver(STHObserver* observer) override;

  // Unregisters |observer|, which must have been previously
  // registered via RegisterObserver()
  void UnregisterObserver(STHObserver* observer) override;

 private:
  // STHs from logs, one for each log.
  std::vector<net::ct::SignedTreeHead> observed_sths_;

  // The observers for new STH notifications.
  base::ObserverList<STHObserver, true>::Unchecked observer_list_;
};

}  // namespace certificate_transparency

#endif  // COMPONENTS_CERTIFICATE_TRANSPARENCY_STH_DISTRIBUTOR_H_
