public WI_ReadRaw(VariableRef variable, Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding, QualityFilter filter, TaskCompletionSource <List <VTTQ> > promise) { Variable = variable; StartInclusive = startInclusive; EndInclusive = endInclusive; MaxValues = maxValues; Bounding = bounding; Filter = filter; Promise = promise; }
private Timeseries.BoundingMethod Map(BoundingMethod b) { switch (b) { case BoundingMethod.CompressToN: return(Timeseries.BoundingMethod.CompressToN); case BoundingMethod.TakeFirstN: return(Timeseries.BoundingMethod.TakeFirstN); case BoundingMethod.TakeLastN: return(Timeseries.BoundingMethod.TakeLastN); } throw new Exception("Unknown bounding"); }
public abstract IList <VTTQ> ReadData(Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding);
public override async Task <VTTQs> HistorianReadRaw(VariableRef variable, Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding, QualityFilter filter = QualityFilter.ExcludeNone) { var request = MakeSessionRequest <HistorianReadRawReq>(); request.Variable = variable; request.StartInclusive = startInclusive; request.EndInclusive = endInclusive; request.MaxValues = maxValues; request.Bounding = bounding; request.Filter = filter; return(await Post <VTTQs>(request, binaryDeserializer : BinSeri.VTTQ_Serializer.Deserialize)); }
public override List <VTTQ> ReadData(Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding, QualityFilter filter) { long N = CountData(startInclusive, endInclusive, filter); PreparedStatement statement; switch (bounding) { case BoundingMethod.TakeFirstN: statement = stmtRawFirstN; break; case BoundingMethod.TakeLastN: statement = stmtRawLastN; break; case BoundingMethod.CompressToN: if (N <= maxValues) { return(ReadData(startInclusive, endInclusive, maxValues, BoundingMethod.TakeFirstN, filter)); } else { return(ReadDataCompressed(startInclusive, endInclusive, maxValues, N, filter)); } default: throw new Exception($"Unknown BoundingMethod: {bounding}"); } statement[0] = startInclusive.ToDateTime(); statement[1] = endInclusive.ToDateTime(); statement[2] = maxValues; var filterHelper = QualityFilterHelper.Make(filter); int initSize = N < maxValues ? (int)N : maxValues; var res = new List <VTTQ>(initSize); using (var reader = statement.ExecuteReader()) { while (reader.Read()) { VTTQ vttq = ReadVTTQ(reader); if (filterHelper.Include(vttq.Q)) { res.Add(vttq); } } } if (bounding == BoundingMethod.TakeLastN) { res.Reverse(); } return(res); }
/// <summary> /// Reads the history of a variable in a certain time interval. /// </summary> /// <param name="variable">The variable to read</param> /// <param name="startInclusive">The start of the time interval (inclusive)</param> /// <param name="endInclusive">The end of the time interval (inclusive)</param> /// <param name="maxValues">The maximum number of data points to return</param> /// <param name="bounding">Defines which data points to return when there are more data points in the time interval than maxValues</param> public abstract Task <VTTQ[]> HistorianReadRaw(VariableRef variable, Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding);
public abstract List <VTTQ> ReadData(Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding, QualityFilter filter);
public Task <IList <VTTQ> > ReadRaw(VariableRef variable, Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding) { var promise = new TaskCompletionSource <IList <VTTQ> >(); if (CheckPrecondition(promise)) { queue.Post(new WI_ReadRaw() { Variable = variable, StartInclusive = startInclusive, EndInclusive = endInclusive, MaxValues = maxValues, Bounding = bounding, Promise = promise }); } return(promise.Task); }
public Task <List <VTTQ> > ReadRaw(VariableRef variable, Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding, QualityFilter filter) { var promise = new TaskCompletionSource <List <VTTQ> >(); if (CheckPrecondition(promise)) { queue.Post(new WI_ReadRaw(variable, startInclusive, endInclusive, maxValues, bounding, filter, promise)); } return(promise.Task); }
public override List <VTTQ> ReadData(Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding, QualityFilter filter) { long N = CountData(startInclusive, endInclusive, filter); //double millis = (endInclusive - startInclusive).TotalMilliseconds + 1; //double avgInterval_MS = millis / N; //double requestInterval_MS = 60 * 1000; //double N_2 = N; //if (requestInterval_MS > avgInterval_MS) { // N_2 = N / (requestInterval_MS / avgInterval_MS); //} PreparedStatement statement; switch (bounding) { case BoundingMethod.TakeFirstN: statement = stmtRawFirstN; break; case BoundingMethod.TakeLastN: statement = stmtRawLastN; break; case BoundingMethod.CompressToN: if (N <= maxValues) { return(ReadData(startInclusive, endInclusive, maxValues, BoundingMethod.TakeFirstN, filter)); } else { return(ReadDataCompressed(startInclusive, endInclusive, maxValues, N, filter)); } default: throw new Exception($"Unknown BoundingMethod: {bounding}"); } statement[0] = startInclusive.JavaTicks; statement[1] = endInclusive.JavaTicks; statement[2] = maxValues; var filterHelper = QualityFilterHelper.Make(filter); int initSize = N < maxValues ? (int)N : maxValues; var res = new List <VTTQ>(initSize); using (var reader = statement.ExecuteReader()) { while (reader.Read()) { VTTQ vttq = ReadVTTQ(reader); if (filterHelper.Include(vttq.Q)) { res.Add(vttq); } } } if (bounding == BoundingMethod.TakeLastN) { res.Reverse(); } return(res); }
public override IList <VTTQ> ReadData(Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding) { long N = CountData(startInclusive, endInclusive); PreparedStatement statement = null; switch (bounding) { case BoundingMethod.TakeFirstN: statement = stmtRawFirstN; break; case BoundingMethod.TakeLastN: statement = stmtRawLastN; break; case BoundingMethod.CompressToN: if (N <= maxValues) { return(ReadData(startInclusive, endInclusive, maxValues, BoundingMethod.TakeFirstN)); } else { return(ReadDataCompressed(startInclusive, endInclusive, maxValues, N)); } } statement[0] = startInclusive.JavaTicks; statement[1] = endInclusive.JavaTicks; statement[2] = maxValues; int initSize = N < maxValues ? (int)N : maxValues; var res = new List <VTTQ>(initSize); using (var reader = statement.ExecuteReader()) { while (reader.Read()) { res.Add(ReadVTTQ(reader)); } } if (bounding == BoundingMethod.TakeLastN) { res.Reverse(); } return(res); }
public async Task <List <VTTQ> > HistorianReadRaw(VariableRef variable, Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding, QualityFilter filter) { HistoryDBWorker?worker = WorkerByVarRef(variable); if (worker == null) { throw new Exception("Failed to find DB worker for variable " + variable); } CheckExistingVariable(variable); return(await worker.ReadRaw(variable, startInclusive, endInclusive, maxValues, bounding, filter)); }
public override Task <List <VTTQ> > HistorianReadRaw(VariableRef variable, Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding, QualityFilter filter = QualityFilter.ExcludeNone) { throw new InvalidOperationException("HistorianReadRaw on closed connection"); }
public override async Task <VTTQ[]> HistorianReadRaw(VariableRef variable, Timestamp startInclusive, Timestamp endInclusive, int maxValues, BoundingMethod bounding) { JObject request = MakeSessionRequest(); request["variable"] = new JRaw(StdJson.ObjectToString(variable)); request["startInclusive"] = new JRaw(StdJson.ValueToString(startInclusive)); request["endInclusive"] = new JRaw(StdJson.ValueToString(endInclusive)); request["maxValues"] = new JRaw(StdJson.ValueToString(maxValues)); request["bounding"] = new JRaw(StdJson.ValueToString(bounding)); return(await Post <VTTQ[]>("HistorianReadRaw", request)); }