/*
 * Copyright 2010-2014 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 ec2-2015-04-15.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;

using Amazon.Runtime;
using Amazon.Runtime.Internal;

namespace Amazon.EC2.Model
{
    /// <summary>
    /// Describes an event in the history of the Spot fleet request.
    /// </summary>
    public partial class HistoryRecord
    {
        private EventInformation _eventInformation;
        private EventType _eventType;
        private DateTime? _timestamp;

        /// <summary>
        /// Gets and sets the property EventInformation. 
        /// <para>
        /// Information about the event.
        /// </para>
        /// </summary>
        public EventInformation EventInformation
        {
            get { return this._eventInformation; }
            set { this._eventInformation = value; }
        }

        // Check to see if EventInformation property is set
        internal bool IsSetEventInformation()
        {
            return this._eventInformation != null;
        }

        /// <summary>
        /// Gets and sets the property EventType. 
        /// <para>
        /// The event type.
        /// </para>
        ///  <ul> <li> 
        /// <para>
        /// <code>error</code> - Indicates an error with the Spot fleet request.
        /// </para>
        ///  </li> <li> 
        /// <para>
        /// <code>fleetRequestChange</code> - Indicates a change in the status or configuration
        /// of the Spot fleet request.
        /// </para>
        ///  </li> <li> 
        /// <para>
        /// <code>instanceChange</code> - Indicates that an instance was launched or terminated.
        /// </para>
        ///  </li> </ul>
        /// </summary>
        public EventType EventType
        {
            get { return this._eventType; }
            set { this._eventType = value; }
        }

        // Check to see if EventType property is set
        internal bool IsSetEventType()
        {
            return this._eventType != null;
        }

        /// <summary>
        /// Gets and sets the property Timestamp. 
        /// <para>
        /// The date and time of the event, in UTC format (for example, <i>YYYY</i>-<i>MM</i>-<i>DD</i>T<i>HH</i>:<i>MM</i>:<i>SS</i>Z).
        /// </para>
        /// </summary>
        public DateTime Timestamp
        {
            get { return this._timestamp.GetValueOrDefault(); }
            set { this._timestamp = value; }
        }

        // Check to see if Timestamp property is set
        internal bool IsSetTimestamp()
        {
            return this._timestamp.HasValue; 
        }

    }
}