text: ﻿/**
   * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   * SPDX-License-Identifier: Apache-2.0.
   */
  
  #pragma once
  #include <aws/dms/DatabaseMigrationService_EXPORTS.h>
  #include <aws/core/utils/memory/stl/AWSString.h>
  #include <utility>
  
  namespace Aws
  {
  namespace Utils
  {
  namespace Json
  {
    class JsonValue;
    class JsonView;
  } // namespace Json
  } // namespace Utils
  namespace DatabaseMigrationService
  {
  namespace Model
  {
  
    /**
     * <p>Provides information about the values of pending modifications to a
     * replication instance. This data type is an object of the <a
     * href="https://docs.aws.amazon.com/dms/latest/APIReference/API_ReplicationInstance.html">
     * <code>ReplicationInstance</code> </a> user-defined data type. </p><p><h3>See
     * Also:</h3>   <a
     * href="http://docs.aws.amazon.com/goto/WebAPI/dms-2016-01-01/ReplicationPendingModifiedValues">AWS
     * API Reference</a></p>
     */
    class AWS_DATABASEMIGRATIONSERVICE_API ReplicationPendingModifiedValues
    {
    public:
      ReplicationPendingModifiedValues();
      ReplicationPendingModifiedValues(Aws::Utils::Json::JsonView jsonValue);
      ReplicationPendingModifiedValues& operator=(Aws::Utils::Json::JsonView jsonValue);
      Aws::Utils::Json::JsonValue Jsonize() const;
  
  
      /**
       * <p>The compute and memory capacity of the replication instance as defined for
       * the specified replication instance class.</p> <p>For more information on the
       * settings and capacities for the available replication instance classes, see <a
       * href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth">
       * Selecting the right DMS replication instance for your migration</a>. </p>
       */
      inline const Aws::String& GetReplicationInstanceClass() const{ return m_replicationInstanceClass; }
  
      /**
       * <p>The compute and memory capacity of the replication instance as defined for
       * the specified replication instance class.</p> <p>For more information on the
       * settings and capacities for the available replication instance classes, see <a
       * href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth">
       * Selecting the right DMS replication instance for your migration</a>. </p>
       */
      inline bool ReplicationInstanceClassHasBeenSet() const { return m_replicationInstanceClassHasBeenSet; }
  
      /**
       * <p>The compute and memory capacity of the replication instance as defined for
       * the specified replication instance class.</p> <p>For more information on the
       * settings and capacities for the available replication instance classes, see <a
       * href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth">
       * Selecting the right DMS replication instance for your migration</a>. </p>
       */
      inline void SetReplicationInstanceClass(const Aws::String& value) { m_replicationInstanceClassHasBeenSet = true; m_replicationInstanceClass = value; }
  
      /**
       * <p>The compute and memory capacity of the replication instance as defined for
       * the specified replication instance class.</p> <p>For more information on the
       * settings and capacities for the available replication instance classes, see <a
       * href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth">
       * Selecting the right DMS replication instance for your migration</a>. </p>
       */
      inline void SetReplicationInstanceClass(Aws::String&& value) { m_replicationInstanceClassHasBeenSet = true; m_replicationInstanceClass = std::move(value); }
  
      /**
       * <p>The compute and memory capacity of the replication instance as defined for
       * the specified replication instance class.</p> <p>For more information on the
       * settings and capacities for the available replication instance classes, see <a
       * href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth">
       * Selecting the right DMS replication instance for your migration</a>. </p>
       */
      inline void SetReplicationInstanceClass(const char* value) { m_replicationInstanceClassHasBeenSet = true; m_replicationInstanceClass.assign(value); }
  
      /**
       * <p>The compute and memory capacity of the replication instance as defined for
       * the specified replication instance class.</p> <p>For more information on the
       * settings and capacities for the available replication instance classes, see <a
       * href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth">
       * Selecting the right DMS replication instance for your migration</a>. </p>
       */
      inline ReplicationPendingModifiedValues& WithReplicationInstanceClass(const Aws::String& value) { SetReplicationInstanceClass(value); return *this;}
  
      /**
       * <p>The compute and memory capacity of the replication instance as defined for
       * the specified replication instance class.</p> <p>For more information on the
       * settings and capacities for the available replication instance classes, see <a
       * href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth">
       * Selecting the right DMS replication instance for your migration</a>. </p>
       */
      inline ReplicationPendingModifiedValues& WithReplicationInstanceClass(Aws::String&& value) { SetReplicationInstanceClass(std::move(value)); return *this;}
  
      /**
       * <p>The compute and memory capacity of the replication instance as defined for
       * the specified replication instance class.</p> <p>For more information on the
       * settings and capacities for the available replication instance classes, see <a
       * href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth">
       * Selecting the right DMS replication instance for your migration</a>. </p>
       */
      inline ReplicationPendingModifiedValues& WithReplicationInstanceClass(const char* value) { SetReplicationInstanceClass(value); return *this;}
  
  
      /**
       * <p>The amount of storage (in gigabytes) that is allocated for the replication
       * instance.</p>
       */
      inline int GetAllocatedStorage() const{ return m_allocatedStorage; }
  
      /**
       * <p>The amount of storage (in gigabytes) that is allocated for the replication
       * instance.</p>
       */
      inline bool AllocatedStorageHasBeenSet() const { return m_allocatedStorageHasBeenSet; }
  
      /**
       * <p>The amount of storage (in gigabytes) that is allocated for the replication
       * instance.</p>
       */
      inline void SetAllocatedStorage(int value) { m_allocatedStorageHasBeenSet = true; m_allocatedStorage = value; }
  
      /**
       * <p>The amount of storage (in gigabytes) that is allocated for the replication
       * instance.</p>
       */
      inline ReplicationPendingModifiedValues& WithAllocatedStorage(int value) { SetAllocatedStorage(value); return *this;}
  
  
      /**
       * <p> Specifies whether the replication instance is a Multi-AZ deployment. You
       * can't set the <code>AvailabilityZone</code> parameter if the Multi-AZ parameter
       * is set to <code>true</code>. </p>
       */
      inline bool GetMultiAZ() const{ return m_multiAZ; }
  
      /**
       * <p> Specifies whether the replication instance is a Multi-AZ deployment. You
       * can't set the <code>AvailabilityZone</code> parameter if the Multi-AZ parameter
       * is set to <code>true</code>. </p>
       */
      inline bool MultiAZHasBeenSet() const { return m_multiAZHasBeenSet; }
  
      /**
       * <p> Specifies whether the replication instance is a Multi-AZ deployment. You
       * can't set the <code>AvailabilityZone</code> parameter if the Multi-AZ parameter
       * is set to <code>true</code>. </p>
       */
      inline void SetMultiAZ(bool value) { m_multiAZHasBeenSet = true; m_multiAZ = value; }
  
      /**
       * <p> Specifies whether the replication instance is a Multi-AZ deployment. You
       * can't set the <code>AvailabilityZone</code> parameter if the Multi-AZ parameter
       * is set to <code>true</code>. </p>
       */
      inline ReplicationPendingModifiedValues& WithMultiAZ(bool value) { SetMultiAZ(value); return *this;}
  
  
      /**
       * <p>The engine version number of the replication instance.</p>
       */
      inline const Aws::String& GetEngineVersion() const{ return m_engineVersion; }
  
      /**
       * <p>The engine version number of the replication instance.</p>
       */
      inline bool EngineVersionHasBeenSet() const { return m_engineVersionHasBeenSet; }
  
      /**
       * <p>The engine version number of the replication instance.</p>
       */
      inline void SetEngineVersion(const Aws::String& value) { m_engineVersionHasBeenSet = true; m_engineVersion = value; }
  
      /**
       * <p>The engine version number of the replication instance.</p>
       */
      inline void SetEngineVersion(Aws::String&& value) { m_engineVersionHasBeenSet = true; m_engineVersion = std::move(value); }
  
      /**
       * <p>The engine version number of the replication instance.</p>
       */
      inline void SetEngineVersion(const char* value) { m_engineVersionHasBeenSet = true; m_engineVersion.assign(value); }
  
      /**
       * <p>The engine version number of the replication instance.</p>
       */
      inline ReplicationPendingModifiedValues& WithEngineVersion(const Aws::String& value) { SetEngineVersion(value); return *this;}
  
      /**
       * <p>The engine version number of the replication instance.</p>
       */
      inline ReplicationPendingModifiedValues& WithEngineVersion(Aws::String&& value) { SetEngineVersion(std::move(value)); return *this;}
  
      /**
       * <p>The engine version number of the replication instance.</p>
       */
      inline ReplicationPendingModifiedValues& WithEngineVersion(const char* value) { SetEngineVersion(value); return *this;}
  
    private:
  
      Aws::String m_replicationInstanceClass;
      bool m_replicationInstanceClassHasBeenSet;
  
      int m_allocatedStorage;
      bool m_allocatedStorageHasBeenSet;
  
      bool m_multiAZ;
      bool m_multiAZHasBeenSet;
  
      Aws::String m_engineVersion;
      bool m_engineVersionHasBeenSet;
    };
  
  } // namespace Model
  } // namespace DatabaseMigrationService
  } // namespace Aws
  