private static IObservable CreateEtwObservable()

in Source/Tx.Bond/BinaryEtwObservable.cs [133:185]


        private static IObservable<EtwNativeEvent> CreateEtwObservable(
            bool useSequentialReader,
            DateTime? startTime,
            DateTime? endTime,
            params string[] files)
        {
            if (startTime.HasValue != endTime.HasValue)
            {
                throw new ArgumentException("Specify both start and end times or leave both of them null.");
            }

            if (startTime.HasValue && startTime.Value >= endTime.Value)
            {
                throw new ArgumentException("Start time should be less than end time.");
            }

            if (files == null)
            {
                throw new ArgumentNullException(nameof(files));
            }

            if (files.Length == 0)
            {
                throw new ArgumentException("The Files parameter should contain at least one element.");
            }

            IObservable<EtwNativeEvent> etwObservable;

            if (useSequentialReader)
            {
                if (startTime.HasValue)
                {
                    etwObservable = EtwObservable.FromSequentialFiles(startTime.Value, endTime.Value, files);
                }
                else
                {
                    etwObservable = EtwObservable.FromSequentialFiles(files);
                }
            }
            else
            {
                if (startTime.HasValue)
                {
                    etwObservable = EtwObservable.FromFiles(startTime.Value, endTime.Value, files);
                }
                else
                {
                    etwObservable = EtwObservable.FromFiles(files);
                }
            }

            return etwObservable;
        }