/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the kafkaconnect-2021-09-14.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.KafkaConnect.Model
{
    /// 
    /// Specifies how the connector scales.
    /// 
    public partial class AutoScaling
    {
        private int? _maxWorkerCount;
        private int? _mcuCount;
        private int? _minWorkerCount;
        private ScaleInPolicy _scaleInPolicy;
        private ScaleOutPolicy _scaleOutPolicy;
        /// 
        /// Gets and sets the property MaxWorkerCount. 
        /// 
        /// The maximum number of workers allocated to the connector.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=10)]
        public int MaxWorkerCount
        {
            get { return this._maxWorkerCount.GetValueOrDefault(); }
            set { this._maxWorkerCount = value; }
        }
        // Check to see if MaxWorkerCount property is set
        internal bool IsSetMaxWorkerCount()
        {
            return this._maxWorkerCount.HasValue; 
        }
        /// 
        /// Gets and sets the property McuCount. 
        /// 
        /// The number of microcontroller units (MCUs) allocated to each connector worker. The
        /// valid values are 1,2,4,8.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=8)]
        public int McuCount
        {
            get { return this._mcuCount.GetValueOrDefault(); }
            set { this._mcuCount = value; }
        }
        // Check to see if McuCount property is set
        internal bool IsSetMcuCount()
        {
            return this._mcuCount.HasValue; 
        }
        /// 
        /// Gets and sets the property MinWorkerCount. 
        /// 
        /// The minimum number of workers allocated to the connector.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=10)]
        public int MinWorkerCount
        {
            get { return this._minWorkerCount.GetValueOrDefault(); }
            set { this._minWorkerCount = value; }
        }
        // Check to see if MinWorkerCount property is set
        internal bool IsSetMinWorkerCount()
        {
            return this._minWorkerCount.HasValue; 
        }
        /// 
        /// Gets and sets the property ScaleInPolicy. 
        /// 
        /// The sacle-in policy for the connector.
        /// 
        /// 
        public ScaleInPolicy ScaleInPolicy
        {
            get { return this._scaleInPolicy; }
            set { this._scaleInPolicy = value; }
        }
        // Check to see if ScaleInPolicy property is set
        internal bool IsSetScaleInPolicy()
        {
            return this._scaleInPolicy != null;
        }
        /// 
        /// Gets and sets the property ScaleOutPolicy. 
        /// 
        /// The sacle-out policy for the connector.
        /// 
        /// 
        public ScaleOutPolicy ScaleOutPolicy
        {
            get { return this._scaleOutPolicy; }
            set { this._scaleOutPolicy = value; }
        }
        // Check to see if ScaleOutPolicy property is set
        internal bool IsSetScaleOutPolicy()
        {
            return this._scaleOutPolicy != null;
        }
    }
}