public override UInt32 HandleHistoryReadRequest(object session, object readDetails, HistoryReadValueId id, ContinuationPointHistory continuationPoint, List <DataValue> results, ref int?offsetContinueFit) { if (testHistoryPoints == null) { testHistoryPoints = new List <DataValue>(); var dt = new DateTime(2015, 12, 1); for (int i = 0; i < 100000; i++) { testHistoryPoints.Add(new DataValue( Math.Sin(i * 0.3) + Math.Cos(i * 0.17) * 0.5 + Math.Sin(i * 0.087) * 0.25, StatusCode.Good, dt)); dt = dt.AddHours(1); } } int startOffset = continuationPoint.IsValid ? continuationPoint.Offset : 0; if (readDetails is ReadRawModifiedDetails) { var rd = readDetails as ReadRawModifiedDetails; for (int i = 0; i < 100000; i++) { var p = testHistoryPoints[i]; if (p.SourceTimestamp >= rd.StartTime && p.SourceTimestamp < rd.EndTime) { // Skip startOffset points if (startOffset > 0) { startOffset--; continue; } results.Add(p); } } return((UInt32)StatusCode.Good); } return((UInt32)StatusCode.BadHistoryOperationUnsupported); }
public override UInt32 HandleHistoryEventReadRequest(object session, object readDetails, HistoryReadValueId id, ContinuationPointHistory continuationPoint, List<object[]> results) { if (readDetails is ReadEventDetails) { var rd = readDetails as ReadEventDetails; var dt = rd.StartTime; for (int i = 0; i < 5; i++) { var ev = GenerateSampleAlarmEvent(dt); results.Add(NetDispatcher.MatchFilterClauses(rd.SelectClauses, ev)); dt = dt.AddMinutes(1); } return (UInt32)StatusCode.Good; } return (UInt32)StatusCode.BadHistoryOperationUnsupported; }