/*
 * 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 logs-2014-03-28.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.CloudWatchLogs.Model
{
    /// 
    /// This is the response object from the GetQueryResults operation.
    /// 
    public partial class GetQueryResultsResponse : AmazonWebServiceResponse
    {
        private string _encryptionKey;
        private List> _results = new List>();
        private QueryStatistics _statistics;
        private QueryStatus _status;
        /// 
        /// Gets and sets the property EncryptionKey. 
        /// 
        /// If you associated an KMS key with the CloudWatch Logs Insights query results in this
        /// account, this field displays the ARN of the key that's used to encrypt the query results
        /// when StartQuery
        /// stores them.
        /// 
        /// 
        [AWSProperty(Max=256)]
        public string EncryptionKey
        {
            get { return this._encryptionKey; }
            set { this._encryptionKey = value; }
        }
        // Check to see if EncryptionKey property is set
        internal bool IsSetEncryptionKey()
        {
            return this._encryptionKey != null;
        }
        /// 
        /// Gets and sets the property Results. 
        /// 
        /// The log events that matched the query criteria during the most recent time it ran.
        /// 
        ///  
        /// 
        /// The results value is an array of arrays. Each log event is one object
        /// in the top-level array. Each of these log event objects is an array of field/value
        /// pairs.
        /// 
        /// 
        public List> Results
        {
            get { return this._results; }
            set { this._results = value; }
        }
        // Check to see if Results property is set
        internal bool IsSetResults()
        {
            return this._results != null && this._results.Count > 0; 
        }
        /// 
        /// Gets and sets the property Statistics. 
        /// 
        /// Includes the number of log events scanned by the query, the number of log events that
        /// matched the query criteria, and the total number of bytes in the scanned log events.
        /// These values reflect the full raw results of the query.
        /// 
        /// 
        public QueryStatistics Statistics
        {
            get { return this._statistics; }
            set { this._statistics = value; }
        }
        // Check to see if Statistics property is set
        internal bool IsSetStatistics()
        {
            return this._statistics != null;
        }
        /// 
        /// Gets and sets the property Status. 
        /// 
        /// The status of the most recent running of the query. Possible values are Cancelled,
        /// Complete, Failed, Running, Scheduled,
        /// Timeout, and Unknown.
        /// 
        ///  
        /// 
        /// Queries time out after 60 minutes of runtime. To avoid having your queries time out,
        /// reduce the time range being searched or partition your query into a number of queries.
        /// 
        /// 
        public QueryStatus Status
        {
            get { return this._status; }
            set { this._status = value; }
        }
        // Check to see if Status property is set
        internal bool IsSetStatus()
        {
            return this._status != null;
        }
    }
}