/// <summary> /// Start /// </summary> /// <param name="collection">Components</param> /// <param name="timeUnit">Time unit</param> /// <param name="isAbsoluteTime">Components</param> /// <param name="realtimeStep">Realtime step</param> /// <param name="dataConsumer">Data consumer</param> public static IRealtime StartRealtime(this IComponentCollection collection, TimeType timeUnit, bool isAbsoluteTime, IAsynchronousCalculation realtimeStep, IDataConsumer dataConsumer, IEventLog log, string reason) { if (reason.Equals(StaticExtensionEventInterfaces.Realtime)) { if (currentRuntime != null) { throw new Exception(); } start(reason); currentRuntime = Runtime.Start(collection, timeUnit, isAbsoluteTime, realtimeStep, dataConsumer, log, reason); if (currentRuntime == null) { stop(); } } else { start(reason); return(Runtime.Start(collection, timeUnit, isAbsoluteTime, realtimeStep, dataConsumer, log, reason)); } return(currentRuntime); }
internal ReplacedMeasurementsBackup(Dictionary <IReplacedMeasurementParameter, string> dict, IRealtime realtime) { this.dict = dict; foreach (IReplacedMeasurementParameter m in dict.Keys) { string n = dict[m]; m.Replace( () => { if (output.Length == 0) { return(null); } if (output[0] == null) { return(null); } if (!output[0].ContainsKey(n)) { return(null); } return(output[0][n]); }); } this.realtime = realtime; }
public override void Start() { base.Start(); m_realTime = new Realtime(); m_realTime.Start(); }
void Start() { if (null == m_realTime) { m_realTime = new Realtime(); m_realTime.Start(); } }
/// <summary> /// Stops realtime /// </summary> public static void StopRealTime() { if (currentRuntime == null) { throw new Exception(); } currentRuntime.Stop(); currentRuntime = null; PostStop(); }
/// <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); } } } }
/// <summary> /// Analysis of an iterator, modelled after the realtime analysis of log. Most dummy varibales will perhaps be erased /// </summary> /// <param name="dataConsumer"></param> /// <param name="input"></param> /// <param name="stop"></param> /// <param name="reason"></param> /// <param name="timeType"></param> /// <param name="isAbsoluteTime"></param> /// <returns></returns> public static bool RealTimeAnalysis(this IDataConsumer dataConsumer, IIterator input, Func <object, bool> stop, string reason, TimeType timeType, bool isAbsoluteTime) { return(false); 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; } }
/// <summary> /// Sets runtime /// </summary> /// <param name="runtime">Runtime</param> public static void Set(this IRealtime runtime) { Runtime = runtime; }