Skip to content

Commit 5fc10a8

Browse files
committed
lock-free
1 parent 2ac7fd0 commit 5fc10a8

18 files changed

+1129
-445
lines changed

ManagedCode.TimeSeries.Orleans/Accumulators/Converters/DoubleTimeSeriesAccumulatorConverter.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
using System.Collections.Concurrent;
2+
using System.Collections.Generic;
3+
using System.Linq;
14
using ManagedCode.TimeSeries.Accumulators;
25
using Orleans;
36

@@ -9,13 +12,19 @@ public sealed class DoubleTimeSeriesAccumulatorConverter<T> : IConverter<DoubleT
912
public DoubleTimeSeriesAccumulator ConvertFromSurrogate(in TimeSeriesAccumulatorsSurrogate<double> surrogate)
1013
{
1114
var series = new DoubleTimeSeriesAccumulator(surrogate.SampleInterval, surrogate.MaxSamplesCount);
12-
series.InitInternal(surrogate.Samples, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
15+
var converted = surrogate.Samples.ToDictionary(
16+
static kvp => kvp.Key,
17+
static kvp => new ConcurrentQueue<double>(kvp.Value));
18+
series.InitInternal(converted, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
1319
return series;
1420
}
1521

1622
public TimeSeriesAccumulatorsSurrogate<double> ConvertToSurrogate(in DoubleTimeSeriesAccumulator value)
1723
{
18-
return new TimeSeriesAccumulatorsSurrogate<double>(value.Samples, value.Start, value.End,
24+
var converted = value.Samples.ToDictionary(
25+
static kvp => kvp.Key,
26+
static kvp => new Queue<double>(kvp.Value));
27+
return new TimeSeriesAccumulatorsSurrogate<double>(converted, value.Start, value.End,
1928
value.SampleInterval, value.MaxSamplesCount, value.LastDate, value.DataCount);
2029
}
21-
}
30+
}

ManagedCode.TimeSeries.Orleans/Accumulators/Converters/FloatTimeSeriesAccumulatorConverter.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
using System.Collections.Concurrent;
2+
using System.Collections.Generic;
3+
using System.Linq;
14
using ManagedCode.TimeSeries.Accumulators;
25
using Orleans;
36

@@ -9,13 +12,19 @@ public sealed class FloatTimeSeriesAccumulatorConverter<T> : IConverter<FloatTim
912
public FloatTimeSeriesAccumulator ConvertFromSurrogate(in TimeSeriesAccumulatorsSurrogate<float> surrogate)
1013
{
1114
var series = new FloatTimeSeriesAccumulator(surrogate.SampleInterval, surrogate.MaxSamplesCount);
12-
series.InitInternal(surrogate.Samples, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
15+
var converted = surrogate.Samples.ToDictionary(
16+
static kvp => kvp.Key,
17+
static kvp => new ConcurrentQueue<float>(kvp.Value));
18+
series.InitInternal(converted, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
1319
return series;
1420
}
1521

1622
public TimeSeriesAccumulatorsSurrogate<float> ConvertToSurrogate(in FloatTimeSeriesAccumulator value)
1723
{
18-
return new TimeSeriesAccumulatorsSurrogate<float>(value.Samples, value.Start, value.End,
24+
var converted = value.Samples.ToDictionary(
25+
static kvp => kvp.Key,
26+
static kvp => new Queue<float>(kvp.Value));
27+
return new TimeSeriesAccumulatorsSurrogate<float>(converted, value.Start, value.End,
1928
value.SampleInterval, value.MaxSamplesCount, value.LastDate, value.DataCount);
2029
}
21-
}
30+
}

ManagedCode.TimeSeries.Orleans/Accumulators/Converters/IntTimeSeriesAccumulatorConverter.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
using System.Collections.Concurrent;
2+
using System.Collections.Generic;
3+
using System.Linq;
14
using ManagedCode.TimeSeries.Abstractions;
25
using ManagedCode.TimeSeries.Accumulators;
36
using ManagedCode.TimeSeries.Summers;
@@ -12,13 +15,19 @@ public sealed class IntTimeSeriesAccumulatorConverter<T> : IConverter<IntTimeSer
1215
public IntTimeSeriesAccumulator ConvertFromSurrogate(in TimeSeriesAccumulatorsSurrogate<int> surrogate)
1316
{
1417
var series = new IntTimeSeriesAccumulator(surrogate.SampleInterval, surrogate.MaxSamplesCount);
15-
series.InitInternal(surrogate.Samples, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
18+
var converted = surrogate.Samples.ToDictionary(
19+
static kvp => kvp.Key,
20+
static kvp => new ConcurrentQueue<int>(kvp.Value));
21+
series.InitInternal(converted, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
1622
return series;
1723
}
1824

1925
public TimeSeriesAccumulatorsSurrogate<int> ConvertToSurrogate(in IntTimeSeriesAccumulator value)
2026
{
21-
return new TimeSeriesAccumulatorsSurrogate<int>(value.Samples, value.Start, value.End,
27+
var converted = value.Samples.ToDictionary(
28+
static kvp => kvp.Key,
29+
static kvp => new Queue<int>(kvp.Value));
30+
return new TimeSeriesAccumulatorsSurrogate<int>(converted, value.Start, value.End,
2231
value.SampleInterval, value.MaxSamplesCount, value.LastDate, value.DataCount);
2332
}
24-
}
33+
}

ManagedCode.TimeSeries.Orleans/Summers/Converters/DoubleTimeSeriesSummerConverter.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
using System;
2+
using System.Collections.Concurrent;
3+
using System.Collections.Generic;
4+
using System.Linq;
15
using ManagedCode.TimeSeries.Summers;
26
using Orleans;
37

@@ -9,13 +13,19 @@ public sealed class DoubleTimeSeriesSummerConverter<T> : IConverter<DoubleTimeSe
913
public DoubleTimeSeriesSummer ConvertFromSurrogate(in TimeSeriesSummerSurrogate<double> surrogate)
1014
{
1115
var series = new DoubleTimeSeriesSummer(surrogate.SampleInterval, surrogate.MaxSamplesCount, surrogate.Strategy);
12-
series.InitInternal(surrogate.Samples, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
16+
var converted = surrogate.Samples.ToDictionary(
17+
static kvp => kvp.Key,
18+
static kvp => kvp.Value);
19+
series.InitInternal(converted, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
1320
return series;
1421
}
1522

1623
public TimeSeriesSummerSurrogate<double> ConvertToSurrogate(in DoubleTimeSeriesSummer value)
1724
{
18-
return new TimeSeriesSummerSurrogate<double>(value.Samples, value.Start, value.End,
25+
var converted = value.Samples.ToDictionary(
26+
static kvp => kvp.Key,
27+
static kvp => kvp.Value);
28+
return new TimeSeriesSummerSurrogate<double>(converted, value.Start, value.End,
1929
value.SampleInterval, value.MaxSamplesCount, value.LastDate, value.DataCount, value.Strategy);
2030
}
2131
}

ManagedCode.TimeSeries.Orleans/Summers/Converters/FloatTimeSeriesSummerConverter.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
using System;
2+
using System.Collections.Concurrent;
3+
using System.Collections.Generic;
4+
using System.Linq;
15
using ManagedCode.TimeSeries.Summers;
26
using Orleans;
37

@@ -9,13 +13,19 @@ public sealed class FloatTimeSeriesSummerConverter<T> : IConverter<FloatTimeSeri
913
public FloatTimeSeriesSummer ConvertFromSurrogate(in TimeSeriesSummerSurrogate<float> surrogate)
1014
{
1115
var series = new FloatTimeSeriesSummer(surrogate.SampleInterval, surrogate.MaxSamplesCount, surrogate.Strategy);
12-
series.InitInternal(surrogate.Samples, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
16+
var converted = surrogate.Samples.ToDictionary(
17+
static kvp => kvp.Key,
18+
static kvp => kvp.Value);
19+
series.InitInternal(converted, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
1320
return series;
1421
}
1522

1623
public TimeSeriesSummerSurrogate<float> ConvertToSurrogate(in FloatTimeSeriesSummer value)
1724
{
18-
return new TimeSeriesSummerSurrogate<float>(value.Samples, value.Start, value.End,
25+
var converted = value.Samples.ToDictionary(
26+
static kvp => kvp.Key,
27+
static kvp => kvp.Value);
28+
return new TimeSeriesSummerSurrogate<float>(converted, value.Start, value.End,
1929
value.SampleInterval, value.MaxSamplesCount, value.LastDate, value.DataCount, value.Strategy);
2030
}
21-
}
31+
}

ManagedCode.TimeSeries.Orleans/Summers/Converters/IntTimeSeriesSummerConverter.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
using System;
2+
using System.Collections.Concurrent;
3+
using System.Collections.Generic;
4+
using System.Linq;
15
using ManagedCode.TimeSeries.Summers;
26
using Orleans;
37

@@ -10,13 +14,19 @@ public sealed class IntTimeSeriesSummerConverter<T> : IConverter<IntTimeSeriesSu
1014
public IntTimeSeriesSummer ConvertFromSurrogate(in TimeSeriesSummerSurrogate<int> surrogate)
1115
{
1216
var series = new IntTimeSeriesSummer(surrogate.SampleInterval, surrogate.MaxSamplesCount, surrogate.Strategy);
13-
series.InitInternal(surrogate.Samples, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
17+
var converted = surrogate.Samples.ToDictionary(
18+
static kvp => kvp.Key,
19+
static kvp => kvp.Value);
20+
series.InitInternal(converted, surrogate.Start, surrogate.End, surrogate.LastDate, surrogate.DataCount);
1421
return series;
1522
}
1623

1724
public TimeSeriesSummerSurrogate<int> ConvertToSurrogate(in IntTimeSeriesSummer value)
1825
{
19-
return new TimeSeriesSummerSurrogate<int>(value.Samples, value.Start, value.End,
26+
var converted = value.Samples.ToDictionary(
27+
static kvp => kvp.Key,
28+
static kvp => kvp.Value);
29+
return new TimeSeriesSummerSurrogate<int>(converted, value.Start, value.End,
2030
value.SampleInterval, value.MaxSamplesCount, value.LastDate, value.DataCount, value.Strategy);
2131
}
22-
}
32+
}

ManagedCode.TimeSeries.Tests/ManagedCode.TimeSeries.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
<ItemGroup>
3131
<ProjectReference Include="..\ManagedCode.TimeSeries\ManagedCode.TimeSeries.csproj" />
32+
<ProjectReference Include="..\ManagedCode.TimeSeries.Orleans\ManagedCode.TimeSeries.Orleans.csproj" />
3233
</ItemGroup>
3334

3435
</Project>

0 commit comments

Comments
 (0)