// 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_
