blob: bba653b3e0460b0679c36441f396abc379fd6a76 [file] [log] [blame]
// Copyright 2015 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 BLIMP_ENGINE_APP_BLIMP_ENGINE_CONFIG_H_
#define BLIMP_ENGINE_APP_BLIMP_ENGINE_CONFIG_H_
#include <memory>
#include <string>
#include "base/macros.h"
namespace base {
class CommandLine;
} // namespace base
namespace blimp {
namespace engine {
// Set internal command line switches for Blimp engine.
void SetCommandLineDefaults(base::CommandLine* command_line);
// Class to hold all of the configuration bits necessary for the Blimp engine.
//
// The BlimpEngineConfig class is initialized from parameters provided on the
// command line. For the switches to pass verification:
// * A client token filepath must be provided and the file must have a
// non-empty token.
//
// The BlimpEngineConfig object is intended to live as long as the engine is
// running. It should also be one of the first things to be set up.
class BlimpEngineConfig {
public:
~BlimpEngineConfig();
// Attempts to create a BlimpEngineConfig based on the parameters in the
// specified CommandLine. This validates all of the command line switches and
// parses all files specified. Returns a non-null std::unique_ptr on success.
static std::unique_ptr<BlimpEngineConfig> Create(
const base::CommandLine& cmd_line);
// Creates a BlimpEngineConfig based on individual components. Should only
// be used for testing.
static std::unique_ptr<BlimpEngineConfig> CreateForTest(
const std::string& client_token);
// Returns the client token.
const std::string& client_token() const;
private:
explicit BlimpEngineConfig(const std::string& client_token);
const std::string client_token_;
DISALLOW_COPY_AND_ASSIGN(BlimpEngineConfig);
};
} // namespace engine
} // namespace blimp
#endif // BLIMP_ENGINE_APP_BLIMP_ENGINE_CONFIG_H_