// Copyright 2015 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 LEADERD_GROUP_CONFIG_H_
#define LEADERD_GROUP_CONFIG_H_

#include <map>
#include <string>

#include <chromeos/any.h>
#include <chromeos/errors/error.h>

namespace leaderd {
namespace group_options {

extern const char kMinWandererTimeoutSeconds[];
extern const char kMaxWandererTimeoutSeconds[];
extern const char kLeaderSteadyStateTimeoutSeconds[];
extern const char kIsPersistent[];

}  // namespace group_options

class GroupConfig {
 public:
  GroupConfig() = default;

  bool Load(const std::map<std::string, chromeos::Any>& options,
            chromeos::ErrorPtr* error);
  uint64_t PickWandererTimeoutMs() const;
  uint64_t leader_steady_state_timeout_ms() const {
    return leader_steady_state_timeout_ms_;
  }

 private:
  bool is_persistent_{false};
  uint64_t min_wanderer_timeout_ms_{10 * 1000};
  uint64_t max_wanderer_timeout_ms_{30 * 1000};
  uint64_t leader_steady_state_timeout_ms_{5 * 1000};

  DISALLOW_COPY_AND_ASSIGN(GroupConfig);
};

}  // namespace leaderd

#endif  // LEADERD_GROUP_CONFIG_H_
