ctrlX Data Layer .NET API  6.0.1
Loading...
Searching...
No Matches
SubscriptionPropertiesBuilder.cs
1using comm.datalayer;
2using Google.FlatBuffers;
3using System.Collections.Generic;
4
5namespace Datalayer
6{
11 {
15 private readonly FlatBufferBuilder _builder;
16
20 private readonly List<Offset<Property>> _rules;
21
22
26
27#if NETSTANDARD2_0
28 private uint _errorIntervalMillis = Subscription.DefaultErrorIntervalMillis;
29#else
30 private uint _errorIntervalMillis = ISubscription.DefaultErrorIntervalMillis;
31#endif
32
36 private StringOffset _idOffset;
37
41#if NETSTANDARD2_0
42 private uint _keepAliveIntervalMillis = Subscription.DefaultKeepaliveIntervalMillis;
43#else
44 private uint _keepAliveIntervalMillis = ISubscription.DefaultKeepaliveIntervalMillis;
45#endif
46
50#if NETSTANDARD2_0
51 private uint _publishIntervalMillis = Subscription.DefaultPublishIntervalMillis;
52#else
53 private uint _publishIntervalMillis = ISubscription.DefaultPublishIntervalMillis;
54#endif
55
61 {
62 _builder = new FlatBufferBuilder(Variant.DefaultFlatbuffersInitialSize);
63 _rules = new List<Offset<Property>>();
64
65 // Set mandatory fields in constructor
66 SetId(id);
67 }
68
74 private void SetId(string id)
75 {
76 _idOffset = _builder.CreateString(id);
77 }
78
84 public SubscriptionPropertiesBuilder SetKeepAliveIntervalMillis(uint keepAliveIntervalMillis)
85 {
86 _keepAliveIntervalMillis = keepAliveIntervalMillis;
87 return this;
88 }
89
96 {
97 _publishIntervalMillis = publishIntervalMillis;
98 return this;
99 }
100
107 {
108 _errorIntervalMillis = errorIntervalMillis;
109 return this;
110 }
111
117 public SubscriptionPropertiesBuilder SetSamplingIntervalMillis(ulong samplingIntervalMillis)
118 {
119 var samplingIntervalMicros = samplingIntervalMillis * 1000;
120 var sampling = Sampling.CreateSampling(_builder, samplingIntervalMicros);
121 var samplingProperty = Property.CreateProperty(_builder, Properties.Sampling, sampling.Value);
122 _rules.Add(samplingProperty);
123 return this;
124 }
125
131 public SubscriptionPropertiesBuilder SetSamplingIntervalMicros(ulong samplingIntervalMicros)
132 {
133 var sampling = Sampling.CreateSampling(_builder, samplingIntervalMicros);
134 var samplingProperty = Property.CreateProperty(_builder, Properties.Sampling, sampling.Value);
135 _rules.Add(samplingProperty);
136 return this;
137 }
138
145 {
146 var dataChangeFilter = DataChangeFilter.CreateDataChangeFilter(_builder, deadbandValue);
147 var dataChangeFilterProperty = Property.CreateProperty(_builder, Properties.DataChangeFilter, dataChangeFilter.Value);
148 _rules.Add(dataChangeFilterProperty);
149 return this;
150 }
151
160 public SubscriptionPropertiesBuilder SetChangeEvents(DataChangeTrigger dataChangeTrigger,
161 bool browselistChange = false, bool metadataChange = false, bool connectionChange = false)
162 {
163 var changeEvents = ChangeEvents.CreateChangeEvents(_builder, dataChangeTrigger, browselistChange, metadataChange, connectionChange);
164 var changeEventsProperty = Property.CreateProperty(_builder, Properties.ChangeEvents, changeEvents.Value);
165 _rules.Add(changeEventsProperty);
166 return this;
167 }
168
175 public SubscriptionPropertiesBuilder SetQueueing(uint queueSize, QueueBehaviour queueBehaviour)
176 {
177 var queuing = Queueing.CreateQueueing(_builder, queueSize, queueBehaviour);
178 var queuingProperty = Property.CreateProperty(_builder, Properties.Queueing, queuing.Value);
179 _rules.Add(queuingProperty);
180 return this;
181 }
182
188 public SubscriptionPropertiesBuilder SetCounting(bool countSubscriptions)
189 {
190 var counting = Counting.CreateCounting(_builder, countSubscriptions);
191 var countingProperty = Property.CreateProperty(_builder, Properties.Counting, counting.Value);
192 _rules.Add(countingProperty);
193 return this;
194 }
195
200 public Variant Build()
201 {
202 var rulesOffset = _rules.Count == 0
203 ? new VectorOffset(0)
204 : SubscriptionProperties.CreateRulesVector(_builder, _rules.ToArray());
205 var propertiesOffset = SubscriptionProperties.CreateSubscriptionProperties(_builder,
206 _idOffset,
207 _keepAliveIntervalMillis,
208 _publishIntervalMillis,
209 rulesOffset,
210 _errorIntervalMillis);
211
212 SubscriptionProperties.FinishSubscriptionPropertiesBuffer(_builder, propertiesOffset);
213 return new Variant(_builder);
214 }
215 }
216}
Provides a convenient way to build a SubscriptionProperties flatbuffers.
SubscriptionPropertiesBuilder SetSamplingIntervalMicros(ulong samplingIntervalMicros)
Sets the sampling interval in microseconds.
SubscriptionPropertiesBuilder SetQueueing(uint queueSize, QueueBehaviour queueBehaviour)
Sets the queueing.
SubscriptionPropertiesBuilder SetChangeEvents(DataChangeTrigger dataChangeTrigger, bool browselistChange=false, bool metadataChange=false, bool connectionChange=false)
Sets the change events.
SubscriptionPropertiesBuilder SetSamplingIntervalMillis(ulong samplingIntervalMillis)
Sets the sampling interval in milliseconds.
SubscriptionPropertiesBuilder SetPublishIntervalMillis(uint publishIntervalMillis)
Sets the publish interval in milliseconds.
SubscriptionPropertiesBuilder SetErrorIntervalMillis(uint errorIntervalMillis)
Sets the error interval in milliseconds.
SubscriptionPropertiesBuilder SetCounting(bool countSubscriptions)
Sets the counting.
SubscriptionPropertiesBuilder(string id)
Initializes a new instance of the SubscriptionPropertiesBuilder class.
Variant Build()
Builds this the SubscriptionProperties as flatbuffers object.
SubscriptionPropertiesBuilder SetDataChangeFilter(float deadbandValue)
Sets the data change filter.
SubscriptionPropertiesBuilder SetKeepAliveIntervalMillis(uint keepAliveIntervalMillis)
Sets the keep alive interval in milliseconds.
Provides the implementation for IVariant.
Definition: Variant.cs:19
static readonly int DefaultFlatbuffersInitialSize
Gets the default Flatbuffers initial size in bytes.
Definition: Variant.cs:748
The ISubscription interface.
static readonly uint DefaultKeepaliveIntervalMillis
The default keep alive interval in milli seconds.
static readonly uint DefaultErrorIntervalMillis
The default error interval in milli seconds.
static readonly uint DefaultPublishIntervalMillis
The default publish interval in milli seconds.