// Copyright 2018 The Chromium OS 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 SHILL_IP_ADDRESS_STORE_H_
#define SHILL_IP_ADDRESS_STORE_H_

#include <set>

#include "shill/net/ip_address.h"

namespace shill {

struct IPAddressLTIgnorePrefix {
  bool operator()(const IPAddress& lhs, const IPAddress& rhs) const;
};

// Stores a set of IP addresses used by ConnectionHealthChecker to check
// connectivity when there is a chance that the service has run out-of-credits.
// The IP addresses are populated (using DNS queries) opportunistically and
// must be persistent so that they can be used in an out-of-credit scenario
// (when DNS queries would also fail).
// To make the store persistent across Device resets (e.g. suspend-resume), it
// is owned by the Manager.
// Currently, this is a thin wrapper around an STL container.
class IPAddressStore {
 public:
  using IPAddresses = std::set<IPAddress, IPAddressLTIgnorePrefix>;

  IPAddressStore();
  ~IPAddressStore();

  // Add a new IP address if it does not already exist.
  void AddUnique(const IPAddress& ip);
  void Remove(const IPAddress& ip);
  void Clear();
  bool Contains(const IPAddress& ip) const;
  size_t Count() const;
  bool Empty() const;
  const IPAddresses& GetIPAddresses() const { return ip_addresses_; }

 protected:
  friend class IPAddressStoreTest;

 private:
  IPAddresses ip_addresses_;

  DISALLOW_COPY_AND_ASSIGN(IPAddressStore);
};

}  // namespace shill

#endif  // SHILL_IP_ADDRESS_STORE_H_
