text: // Copyright 2018 The Fuchsia 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 SRC_CONNECTIVITY_NETWORK_TESTING_NETEMUL_RUNNER_MODEL_ENVIRONMENT_H_
  #define SRC_CONNECTIVITY_NETWORK_TESTING_NETEMUL_RUNNER_MODEL_ENVIRONMENT_H_
  
  #include "launch_app.h"
  #include "launch_service.h"
  #include "logger_options.h"
  #include "src/lib/fxl/macros.h"
  #include "src/lib/json_parser/json_parser.h"
  
  namespace netemul {
  namespace config {
  
  class Environment {
   public:
    Environment() = default;
    Environment(Environment&& other) = default;
  
    void DisableLogging(bool recursive);
  
    bool ParseFromJSON(const rapidjson::Value& value, json::JSONParser* parser);
  
    const std::string& name() const;
    const std::vector<Environment>& children() const;
    const std::vector<std::string>& devices() const;
    const std::vector<LaunchService>& services() const;
    const std::vector<LaunchApp>& test() const;
    const std::vector<LaunchApp>& apps() const;
    const std::vector<LaunchApp>& setup() const;
    const LoggerOptions& logger_options() const;
    bool inherit_services() const;
  
   private:
    std::string name_;
    std::vector<Environment> children_;
    std::vector<std::string> devices_;
    std::vector<LaunchService> services_;
    std::vector<LaunchApp> test_;
    std::vector<LaunchApp> apps_;
    std::vector<LaunchApp> setup_;
    bool inherit_services_{};
    LoggerOptions logger_options_;
  
    FXL_DISALLOW_COPY_AND_ASSIGN(Environment);
  };
  
  }  // namespace config
  }  // namespace netemul
  #endif  // SRC_CONNECTIVITY_NETWORK_TESTING_NETEMUL_RUNNER_MODEL_ENVIRONMENT_H_
  