// Copyright 2015 The Weave 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 LIBWEAVE_SRC_PRIVET_WIFI_SSID_GENERATOR_H_
#define LIBWEAVE_SRC_PRIVET_WIFI_SSID_GENERATOR_H_
#include <string>
#include <base/callback.h>
namespace weave {
namespace privet {
class CloudDelegate;
class WifiDelegate;
class WifiSsidGenerator final {
public:
WifiSsidGenerator(const CloudDelegate* gcd, const WifiDelegate* wifi);
~WifiSsidGenerator() = default;
std::string GenerateFlags() const;
// Can return empty string if CloudDelegate is not ready.
std::string GenerateSsid() const;
private:
friend class WifiSsidGeneratorTest;
// Sets object to use |n| instead of random number for SSID generation.
void SetRandomForTests(int n);
std::string GenerateFlagsInternal() const;
const CloudDelegate* gcd_{nullptr};
const WifiDelegate* wifi_{nullptr};
base::Callback<int(void)> get_random_;
DISALLOW_COPY_AND_ASSIGN(WifiSsidGenerator);
};
} // namespace privet
} // namespace weave
#endif // LIBWEAVE_SRC_PRIVET_WIFI_SSID_GENERATOR_H_