Xx00403408update 3.19.7
bfdf02be创建于 2019年8月20日历史提交
/*----------------------------------------------------------------------------------

// Copyright 2019 Huawei Technologies Co.,Ltd.

// Licensed under the Apache License, Version 2.0 (the "License"); you may not use

// this file except in compliance with the License.  You may obtain a copy of the

// License at

//

// http://www.apache.org/licenses/LICENSE-2.0

//

// Unless required by applicable law or agreed to in writing, software distributed

// under the License 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.

//----------------------------------------------------------------------------------*/

using System.Net;

using OBS.Internal;



namespace OBS

{

    /// <summary>

    /// Configuration parameters of ObsClient

    /// </summary>

    public partial class ObsConfig

    {



        private AuthTypeEnum authType = Constants.DefaultAuthType;

        private int maxErrorRetry = Constants.DefaultMaxErrorRetry;

        private int connectTimeout = Constants.DefaultConnectTimeout;

        private int bufferSize = Constants.DefaultBufferSize;

        private int connectionLimit = Constants.DefaultConnectionLimit;

        private int maxIdleTime = Constants.DefaultMaxIdleTime;

        private int readWriteTimeout = Constants.DefaultReadWriteTimeout;

        private int receiveBufferSize = Constants.DefaultBufferSize;

        private int asyncSocketTimeout = Constants.DefaultAsyncSocketTimeout;

        private bool keepAlive = Constants.DefaultKeepAlive;

        private bool authTypeNegotiation = Constants.DefaultAuthTypeNegotiation;



        /// <summary>

        /// Whether to verify the certificate

        /// </summary>

        public bool ValidateCertificate

        {

            get;

            set;

        }



        /// <summary>

        /// Whether to negotiate the authentication mode. The default value is "true."

        /// </summary>

        public bool AuthTypeNegotiation

        {

            get

            {

                return this.authTypeNegotiation;

            }

            set

            {

                this.authTypeNegotiation = value;

            }

        }



        /// <summary>

        /// Authentication mode used for accessing OBS. When protocol negotiation is enabled, this parameter is ineffective.

        /// </summary>

        public AuthTypeEnum AuthType

        {

            get { return this.authType; }

            set { this.authType = value; }

        }



        /// <summary>

        /// Maximum number of retry attempts upon a request failure. The default value is 3.

        /// </summary>

        public int MaxErrorRetry

        {

            get { return this.maxErrorRetry; }

            set { this.maxErrorRetry = value < 0 ? 0 : value; }

        }



        /// <summary>

        /// Size of the socket reception buffer

        /// </summary>

        public int ReceiveBufferSize

        {

            get { return this.receiveBufferSize; }

            set { this.receiveBufferSize = value <= 0 ? Constants.DefaultBufferSize : value; }

        }



        /// <summary>

        /// Read/write cache size during an object upload

        /// </summary>

        public int BufferSize

        {

            get { return this.bufferSize; }

            set { this.bufferSize = value <= 0 ? Constants.DefaultBufferSize : value; }

        }



        /// <summary>

        /// HTTPS protocol type

        /// </summary>

        public SecurityProtocolType? SecurityProtocolType

        {

            get;

            set;

        }





        /// <summary>

        /// Request timeout interval. The unit is millisecond.

        /// </summary>

        public int Timeout

        {

            get { return this.connectTimeout; }

            set

            {

                this.connectTimeout = value <= 0 ? Constants.DefaultConnectTimeout : value;

            }

        }



        /// <summary>

        /// Asynchronous request timeout interval. The unit is millisecond.

        /// </summary>

        public int AsyncSocketTimeout

        {

            get { return this.asyncSocketTimeout; }

            set

            {

                this.asyncSocketTimeout = value <= 0 ? Constants.DefaultAsyncSocketTimeout : value;

            }

        }



        /// <summary>

        /// Whether to use persistent connections. The default value is "true."

        /// </summary>

        public bool KeepAlive

        {

            get

            {

                return this.keepAlive;

            }

            set

            {

                this.keepAlive = value;

            }

        }





        /// <summary>

        /// Proxy address

        /// </summary>

        public string ProxyHost

        {

            get;

            set;

        }





        /// <summary>

        /// Proxy port

        /// </summary>

        public int ProxyPort

        {

            get;

            set;

        }



        /// <summary>

        /// Username used for connecting to the proxy server

        /// </summary>

        public string ProxyUserName

        {

            get;

            set;

        }



        /// <summary>

        /// Password used for connecting to the proxy server

        /// </summary>

        public string ProxyPassword

        {

            get;

            set;

        }



        /// <summary>

        /// Domain to which the proxy belongs

        /// </summary>

        public string ProxyDomain

        {

            get;

            set;

        }



        /// <summary>

        /// Maximum idle time for obtaining connections from the connection pool. The unit is millisecond.

        /// The default value is 30000.

        /// </summary>

        public int MaxIdleTime

        {

            get { return this.maxIdleTime; }

            set

            {

                if (value <= 0)

                {

                    this.maxIdleTime = Constants.DefaultMaxIdleTime;

                }

                else

                {



                    this.maxIdleTime = value;

                }

            }

        }



        /// <summary>

        /// Maximum number of concurrently opened HTTP connections

        /// The default value is 1000.

        /// </summary>

        public int ConnectionLimit

        {

            get { return this.connectionLimit; }

            set

            {

                this.connectionLimit = value <= 0 ? Constants.DefaultConnectionLimit : value;

            }

        }





        /// <summary>

        /// Data read/write timeout interval. The unit is millisecond.

        /// The default value is 60000.

        /// </summary>

        public int ReadWriteTimeout

        {

            get { return this.readWriteTimeout; }

            set

            {

                this.readWriteTimeout = value <= 0 ? Constants.DefaultReadWriteTimeout : value;

            }

        }



    }

}