Skip to content

Commit 0927a71

Browse files
authored
Merge pull request #69 from samson0v/master
Updated rate limits setting
2 parents 8cccdc9 + 35b5462 commit 0927a71

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

tb_device_mqtt.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ def __init__(self, host, port=1883, username=None, password=None, quality_of_ser
339339
self.__device_client_rpc_dict = {}
340340
self.__attr_request_number = 0
341341
self.max_payload_size = max_payload_size
342-
self.service_configuration_callback = self.__on_service_configuration
342+
self.service_configuration_callback = self.on_service_configuration
343343
telemetry_rate_limit, telemetry_dp_rate_limit = RateLimit.get_rate_limits_by_host(self.__host,
344344
telemetry_rate_limit,
345345
telemetry_dp_rate_limit)
@@ -645,16 +645,18 @@ def send_rpc_call(self, method, params, callback):
645645
self.quality_of_service)
646646

647647
def request_service_configuration(self, callback):
648-
self.send_rpc_call("getServiceConfiguration", {}, callback)
649-
650-
def __on_service_configuration(self, _, service_config, *args, **kwargs):
651-
if service_config.get("deviceMsgRateLimit"):
652-
self._messages_rate_limit.set_limit(service_config.get("deviceMsgRateLimit"), percentage=80)
653-
if service_config.get('deviceTelemetryMsgRateLimit'):
654-
self.__telemetry_rate_limit.set_limit(service_config.get('deviceTelemetryMsgRateLimit'), percentage=80)
655-
if service_config.get('deviceTelemetryDataPointsRateLimit'):
656-
self.__telemetry_dp_rate_limit.set_limit(service_config.get('deviceTelemetryDataPointsRateLimit'),
657-
percentage=80)
648+
self.send_rpc_call("getSessionLimits", {}, callback)
649+
650+
def on_service_configuration(self, _, service_config, *args, **kwargs):
651+
if service_config.get("rateLimits"):
652+
rate_limits_config = service_config.get("rateLimits")
653+
654+
if rate_limits_config.get('messages'):
655+
self._messages_rate_limit.set_limit(rate_limits_config.get('messages'), percentage=80)
656+
if rate_limits_config.get('telemetryMessages'):
657+
self.__telemetry_rate_limit.set_limit(rate_limits_config.get('telemetryMessages'), percentage=80)
658+
if rate_limits_config.get('telemetryDataPoints'):
659+
self.__telemetry_dp_rate_limit.set_limit(rate_limits_config.get('telemetryDataPoints'), percentage=80)
658660
if service_config.get('maxInflightMessages'):
659661
self.max_inflight_messages_set(int(service_config.get('maxInflightMessages')))
660662
if service_config.get('maxPayloadSize'):

tb_gateway_mqtt.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -307,26 +307,32 @@ def _change_devices_rate_limit(self, rate_limit_key, rate_limit_value, percentag
307307
device[rate_limit_key].set_limit(rate_limit_value, percentage=percentage)
308308

309309
def __on_service_configuration(self, _, service_config, *args, **kwargs):
310-
if service_config.get("gatewayDeviceMessagesRateLimits"):
310+
gateway_rate_limit_config = service_config.pop('gatewayRateLimits', {})
311+
device_rate_limit_config = service_config.pop('rateLimits', {})
312+
313+
super().on_service_configuration(_, {'rateLimit': gateway_rate_limit_config, **service_config}, *args, **kwargs)
314+
315+
if device_rate_limit_config.get("messages"):
311316
# change global rate limit for future devices
312-
self.__device_messages_rate_limit = service_config.get('gatewayDeviceMessagesRateLimits')
317+
self.__device_messages_rate_limit = device_rate_limit_config.get('messages')
313318

314319
# change rate limit for already connected devices
315-
self._change_devices_rate_limit('msg_rate_limit', service_config.get('gatewayDeviceMessagesRateLimits'))
316-
if service_config.get('gatewayDeviceTelemetryMessagesRateLimits'):
320+
self._change_devices_rate_limit('msg_rate_limit', device_rate_limit_config.get('messages'))
321+
if device_rate_limit_config.get('telemetryMessages'):
317322
# change global rate limit for future devices
318-
self.__device_telemetry_rate_limit = service_config.get('gatewayDeviceTelemetryMessagesRateLimits')
323+
self.__device_telemetry_rate_limit = device_rate_limit_config.get('telemetryMessages')
319324

320325
# change rate limit for already connected devices
321326
self._change_devices_rate_limit('telemetry_msg_rate_limit',
322-
service_config.get('gatewayDeviceTelemetryMessagesRateLimits'))
323-
if service_config.get('gatewayDeviceTelemetryDataPointsRateLimits'):
327+
device_rate_limit_config.get('telemetryMessages'))
328+
if device_rate_limit_config.get('telemetryDataPoints'):
324329
# change global rate limit for future devices
325-
self.__device_telemetry_dp_rate_limit = service_config.get('gatewayDeviceTelemetryDataPointsRateLimits')
330+
self.__device_telemetry_dp_rate_limit = device_rate_limit_config.get('telemetryDataPoints')
326331

327332
# change rate limit for already connected devices
328333
self._change_devices_rate_limit('telemetry_dp_rate_limit',
329-
service_config.get('gatewayDeviceTelemetryDataPointsRateLimits'))
334+
device_rate_limit_config.get('telemetryDataPoints'))
335+
330336
if service_config.get('maxInflightMessages'):
331337
self.max_inflight_messages_set(int(service_config.get('maxInflightMessages')))
332338
if service_config.get('maxPayloadSize'):

0 commit comments

Comments
 (0)