// 
// Copyright (c) Microsoft and contributors.  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.
// 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.
// 

// Warning: This code was generated by a tool.
// 
// Changes to this file may cause incorrect behavior and will be lost if the
// code is regenerated.

using System;
using System.Collections.Generic;
using System.Linq;
using Hyak.Common;
using Microsoft.Azure.Management.Insights.Models;

namespace Microsoft.Azure.Management.Insights.Models
{
    /// <summary>
    /// Configures collection of events generated from .NET
    /// System.Diagnostics.Tracing.EventSource.
    /// </summary>
    public partial class EtwProvider
    {
        private string _defaultDestination;
        
        /// <summary>
        /// Optional. The name of the table to store the events in.
        /// </summary>
        public string DefaultDestination
        {
            get { return this._defaultDestination; }
            set { this._defaultDestination = value; }
        }
        
        private IList<EtwEventConfiguration> _events;
        
        /// <summary>
        /// Optional. The list of events to collect.
        /// </summary>
        public IList<EtwEventConfiguration> Events
        {
            get { return this._events; }
            set { this._events = value; }
        }
        
        private string _provider;
        
        /// <summary>
        /// Optional. The class name of the EventSource event, or, the GUID of
        /// the event provider.
        /// </summary>
        public string Provider
        {
            get { return this._provider; }
            set { this._provider = value; }
        }
        
        private ulong? _scheduledTransferKeywordFilter;
        
        /// <summary>
        /// Optional. This field is a bitmask of the keywords that you would
        /// like logged. For details on EventSource keywords see:
        /// http://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource(v=vs.110).aspx.
        /// For details on ETW event keywords see:
        /// http://msdn.microsoft.com/en-us/library/windows/desktop/dd996930(v=vs.85).aspx.
        /// </summary>
        public ulong? ScheduledTransferKeywordFilter
        {
            get { return this._scheduledTransferKeywordFilter; }
            set { this._scheduledTransferKeywordFilter = value; }
        }
        
        private Microsoft.Azure.Management.Insights.Models.LogLevel? _scheduledTransferLogLevelFilter;
        
        /// <summary>
        /// Optional. The minimum severity level to transfer to your storage
        /// account.
        /// </summary>
        public Microsoft.Azure.Management.Insights.Models.LogLevel? ScheduledTransferLogLevelFilter
        {
            get { return this._scheduledTransferLogLevelFilter; }
            set { this._scheduledTransferLogLevelFilter = value; }
        }
        
        private TimeSpan _scheduledTransferPeriod;
        
        /// <summary>
        /// Optional. The interval between scheduled transfers to storage
        /// rounded up to the nearest minute. Note that the value is an XML
        /// "Duration Data Type".
        /// </summary>
        public TimeSpan ScheduledTransferPeriod
        {
            get { return this._scheduledTransferPeriod; }
            set { this._scheduledTransferPeriod = value; }
        }
        
        /// <summary>
        /// Initializes a new instance of the EtwProvider class.
        /// </summary>
        public EtwProvider()
        {
            this.Events = new LazyList<EtwEventConfiguration>();
        }
    }
}
