Esempio n. 1
0
        /// <summary>
        /// Realtime analysis
        /// </summary>
        /// <param name="dataConsumer">Data consumer</param>
        /// <param name="input">Input</param>
        /// <param name="act">Action</param>
        /// <param name="reason">Reason</param>
        /// <param name="timeType">Time type</param>
        /// <param name="isAbsoluteTime">The absolute time "sign"</param>
        public static void RealtimeAnalysis(this IDataConsumer dataConsumer,
                                            IEnumerable <object> input, string reason, Action <object> act,
                                            TimeType timeType, bool isAbsoluteTime)
        {
            IDesktop             desktop    = (dataConsumer as IAssociatedObject).GetRootDesktop();
            IComponentCollection collection = dataConsumer.CreateCollection(
                reason);

            StaticExtensionEventInterfaces.NewLog = null;
            using (IDisposable disp = collection.StartRealtime(timeType,
                                                               isAbsoluteTime, null, dataConsumer, null,
                                                               reason) as IDisposable)
            {
                IRealtime        r = disp as IRealtime;
                RealtimeProvider p = r.TimeProvider as RealtimeProvider;
                Dictionary <IReplacedMeasurementParameter, string> d;
                IEnumerable <object> list = dataConsumer.CreateList(input,
                                                                    collection, out d);
                DateTime centuryBegin = new DateTime(2001, 1, 1);
                using (ReplacedMeasurementsBackup backup = new ReplacedMeasurementsBackup(d, r))
                {
                    Dictionary <string, object>[] dm = backup.Output;
                    foreach (object obj in list)
                    {
                        try
                        {
                            if (obj is Tuple <INativeReader, object[], DateTime> )
                            {
                                Tuple <INativeReader, object[], DateTime> t = obj as Tuple <INativeReader, object[], DateTime>;
                                p.DateTime = t.Item3;
                                t.Item1.Read(t.Item2);
                                act(t);
                                continue;
                            }
                        }
                        catch
                        {
                            continue;
                        }
                        Tuple <DateTime, INativeEvent, Dictionary <string, object> > tuple = obj as Tuple <DateTime, INativeEvent, Dictionary <string, object> >;
                        dm[0] = tuple.Item3;
                        DateTime dt = tuple.Item1;
                        p.DateTime = tuple.Item1;
                        tuple.Item2.Force();
                        act(tuple);
                    }
                }
            }
        }