public static TelemetryData Random(string deviceID, string seqNo, string msg, int min, int max)
        {
            TelemetryTypes type = (TelemetryTypes)random.Next(0, 2);
            var            rnd  = random.Next(0, 101);

            if (rnd <= max && rnd >= min)
            {
                type = TelemetryTypes.B;
            }
            var ret = new TelemetryData()
            {
                Temperature = rnd,
                SeqNo       = seqNo,
                Timestamp   = DateTime.UtcNow,
                Type        = type,
                DeviceId    = deviceID,
                UID         = "UID-" + Guid.NewGuid().ToString(),
                DCorAC      = (DCAC)random.Next(0, 1),
                ADSLor3G    = random.Next(100) >= 50 ? "ADSL" : "3G",
                Pressure    = random.Next(1000),
                Message     = msg,
                FanSpeed    = random.Next(3000)
            };

            return(ret);
        }
 /// <summary>
 /// Actually write the telemetry.
 /// </summary>
 /// <typeparam name="TTelemetryData">The type of the telemetry data.</typeparam>
 /// <param name="telemetryData">The telemetry data.</param>
 /// <param name="handleTypes">The types of telemetry to handle.</param>
 /// <param name="formatter">The output formatter.</param>
 /// <returns>Task.</returns>
 protected override async Task DoWriteTelemetry <TTelemetryData>(TTelemetryData telemetryData, TelemetryTypes handleTypes, Func <TTelemetryData, string> formatter)
 {
     if (_configuration.Handles(handleTypes))
     {
         await Task.Run(async() =>
         {
             await AppendToBlob(formatter(telemetryData));
         });
     }
 }
 /// <summary>
 /// Actually write the telemetry.
 /// </summary>
 /// <typeparam name="TTelemetryData">The type of the telemetry data.</typeparam>
 /// <param name="telemetryData">The telemetry data.</param>
 /// <param name="handleTypes">The types of telemetry to handle.</param>
 /// <param name="formatter">The output formatter.</param>
 /// <returns>Task.</returns>
 protected override async Task DoWriteTelemetry <TTelemetryData>(TTelemetryData telemetryData, TelemetryTypes handleTypes, Func <TTelemetryData, string> formatter)
 {
     if (_configuration.Handles(handleTypes))
     {
         await Task.Run(() =>
         {
             ThreadsafeWriteToFile(formatter(telemetryData));
         });
     }
 }
 /// <summary>
 /// Identifies whether the specified telemetry type is configured to be handled.
 /// </summary>
 /// <param name="telemetryType">Type of the telemetry.</param>
 /// <returns><c>true</c> if telemetry type is handled, <c>false</c> otherwise.</returns>
 public bool Handles(TelemetryTypes telemetryType)
 {
     return(TelemetryTypesToHandle.HasFlag(telemetryType));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="TypeDiscriminatingTelemetryWriterConfigurationBase"/> class.
 /// </summary>
 protected TypeDiscriminatingTelemetryWriterConfigurationBase()
 {
     TelemetryTypesToHandle = TelemetryTypes.All;
 }
        /// <summary>
        /// Actually write the telemetry.
        /// </summary>
        /// <typeparam name="TTelemetryData">The type of the telemetry data.</typeparam>
        /// <param name="telemetryData">The telemetry data.</param>
        /// <param name="handleTypes">The types of telemetry to handle.</param>
        /// <param name="formatter">The output formatter.</param>
        /// <returns>Task.</returns>
        protected override Task DoWriteTelemetry <TTelemetryData>(TTelemetryData telemetryData, TelemetryTypes handleTypes, Func <TTelemetryData, string> formatter)
        {
            if (_configuration.Handles(handleTypes))
            {
                Debug.WriteLine(formatter(telemetryData));
            }

            return(Task.Delay(0));
        }
 /// <summary>
 /// Actually write the telemetry.
 /// </summary>
 /// <typeparam name="TTelemetryData">The type of the telemetry data.</typeparam>
 /// <param name="telemetryData">The telemetry data.</param>
 /// <param name="handleTypes">The types of telemetry to handle.</param>
 /// <param name="formatter">The output formatter.</param>
 /// <returns>Task.</returns>
 protected abstract Task DoWriteTelemetry <TTelemetryData>(TTelemetryData telemetryData, TelemetryTypes handleTypes, Func <TTelemetryData, string> formatter);