ctrlX Data Layer API for Python  3.3.0
The ctrlX Data Layer API allows access to the ctrlX Data Layer with Python
subscription_properties_builder.py
1 """
2  This module provides helper classes to deal with subscription properties flatbuffers.
3 """
4 import flatbuffers
5 from comm.datalayer import (ChangeEvents, Counting, DataChangeFilter,
6  LosslessRateLimit, Properties, Property, Queueing,
7  Sampling, SubscriptionProperties)
8 
9 from ctrlxdatalayer.variant import Variant
10 
11 
13  """SubscriptionPropertiesBuilder
14  """
15 
16  def __init__(self, id_val: str):
17  """_summary_
18 
19  Args:
20  id_val (str):
21  """
22  self.__id__id = id_val
23  self.__keepalive_interval__keepalive_interval = 60000
24  self.__publish_interval__publish_interval = 1000
25  self.__error_interval__error_interval = 10000
26  self.__rules__rules = []
27 
28  def build(self) -> Variant:
29  """Build Subscription Properties as Variant
30 
31  Returns:
32  Variant: Subscription Properties
33  """
34  builder = flatbuffers.Builder()
35  sub_prop = SubscriptionProperties.SubscriptionPropertiesT()
36  sub_prop.id = self.__id__id
37  sub_prop.keepaliveInterval = self.__keepalive_interval__keepalive_interval
38  sub_prop.publishInterval = self.__publish_interval__publish_interval
39  sub_prop.rules = None
40  if len(self.__rules__rules) != 0:
41  sub_prop.rules = self.__rules__rules
42  sub_prop.errorInterval = self.__error_interval__error_interval
43 
44 
45  sub_prop_internal = sub_prop.Pack(builder)
46 
47  # Closing operation
48  builder.Finish(sub_prop_internal)
49 
50  subprop = Variant()
51  subprop.set_flatbuffers(builder.Output())
52  return subprop
53 
54  def set_keepalive_interval(self, interval: int):
55  """set_keepalive_interval
56 
57  Args:
58  interval (int): keep alvive interval
59  """
60  self.__keepalive_interval__keepalive_interval = interval
61  return self
62 
63  def set_publish_interval(self, interval: int):
64  """set_publish_interval
65 
66  Args:
67  interval (int): publish interval
68  """
69  self.__publish_interval__publish_interval = interval
70  return self
71 
72  def set_error_interval(self, interval: int):
73  """set_error_interval
74 
75  Args:
76  interval (int): error interval
77  """
78  self.__error_interval__error_interval = interval
79  return self
80 
81  def add_rule_sampling(self, rule: Sampling.SamplingT):
82  """add_rule_sampling
83 
84  !!!Hint: 'samplingInterval = 0' only RT nodes, see "datalayer/nodesrt"
85  Args:
86  rule (Sampling.SamplingT):
87  """
88  prop = Property.PropertyT()
89  prop.ruleType = Properties.Properties().Sampling
90  prop.rule = rule
91  self.__rules__rules.append(prop)
92  return self
93 
94  def add_rule_queueing(self, rule: Queueing.QueueingT):
95  """add_rule_queueing
96 
97  Args:
98  rule (Queueing.QueueingT):
99  """
100  prop = Property.PropertyT()
101  prop.ruleType = Properties.Properties().Queueing
102  prop.rule = rule
103  self.__rules__rules.append(prop)
104  return self
105 
106  def add_rule_datachangefilter(self, rule: DataChangeFilter.DataChangeFilterT):
107  """add_rule_datachangefilter
108 
109  Args:
110  rule (DataChangeFilter.DataChangeFilterT):
111  """
112  prop = Property.PropertyT()
113  prop.ruleType = Properties.Properties().DataChangeFilter
114  prop.rule = rule
115  self.__rules__rules.append(prop)
116  return self
117 
118  def add_rule_changeevents(self, rule: ChangeEvents.ChangeEventsT):
119  """add_rule_changeevents
120 
121  Args:
122  rule (ChangeEvents.ChangeEventsT):
123  """
124  prop = Property.PropertyT()
125  prop.ruleType = Properties.Properties().ChangeEvents
126  prop.rule = rule
127  self.__rules__rules.append(prop)
128  return self
129 
130  def add_rule_counting(self, rule: Counting.CountingT):
131  """add_rule_counting
132 
133  Args:
134  rule (Counting.CountingT):
135  """
136  prop = Property.PropertyT()
137  prop.ruleType = Properties.Properties().Counting
138  prop.rule = rule
139  self.__rules__rules.append(prop)
140  return self
141 
142  def add_rule_losslessratelimit(self, rule: LosslessRateLimit.LosslessRateLimitT):
143  """add_rule_losslessratelimit
144 
145  Args:
146  rule (LosslessRateLimit.LosslessRateLimitT):
147  """
148  prop = Property.PropertyT()
149  prop.ruleType = Properties.Properties().LosslessRateLimit
150  prop.rule = rule
151  self.__rules__rules.append(prop)
152  return self
def add_rule_datachangefilter(self, DataChangeFilter.DataChangeFilterT rule)
add_rule_datachangefilter
def add_rule_changeevents(self, ChangeEvents.ChangeEventsT rule)
add_rule_changeevents
def add_rule_losslessratelimit(self, LosslessRateLimit.LosslessRateLimitT rule)
add_rule_losslessratelimit
Variant is a container for a many types of data.
Definition: variant.py:150