1
0
mirror of https://github.com/JoelBender/bacpypes synced 2025-09-28 22:15:23 +08:00

add a reference count to the cache information record

This commit is contained in:
Joel Bender 2017-09-30 03:19:06 -04:00
parent 5cd17080c0
commit daf8fe76d5
3 changed files with 33 additions and 0 deletions

View File

@ -135,8 +135,12 @@ class DeviceInfoCache:
current_info = DeviceInfo()
current_info.address = key
current_info._cache_keys = (None, key)
current_info._ref_count = 1
self.cache[key] = current_info
else:
if _debug: DeviceInfoCache._debug(" - reference bump")
current_info._ref_count += 1
if _debug: DeviceInfoCache._debug(" - current_info: %r", current_info)
@ -177,11 +181,18 @@ class DeviceInfoCache:
has finished with the device information."""
if _debug: DeviceInfoCache._debug("release_device_info %r", info)
# this information record might be used by more than one SSM
if info._ref_count > 1:
if _debug: DeviceInfoCache._debug(" - multiple references")
info._ref_count -= 1
return
cache_id, cache_address = info._cache_keys
if cache_id is not None:
del self.cache[cache_id]
if cache_address is not None:
del self.cache[cache_address]
if _debug: DeviceInfoCache._debug(" - released")
bacpypes_debugging(DeviceInfoCache)

View File

@ -135,8 +135,12 @@ class DeviceInfoCache:
current_info = DeviceInfo()
current_info.address = key
current_info._cache_keys = (None, key)
current_info._ref_count = 1
self.cache[key] = current_info
else:
if _debug: DeviceInfoCache._debug(" - reference bump")
current_info._ref_count += 1
if _debug: DeviceInfoCache._debug(" - current_info: %r", current_info)
@ -177,11 +181,18 @@ class DeviceInfoCache:
has finished with the device information."""
if _debug: DeviceInfoCache._debug("release_device_info %r", info)
# this information record might be used by more than one SSM
if info._ref_count > 1:
if _debug: DeviceInfoCache._debug(" - multiple references")
info._ref_count -= 1
return
cache_id, cache_address = info._cache_keys
if cache_id is not None:
del self.cache[cache_id]
if cache_address is not None:
del self.cache[cache_address]
if _debug: DeviceInfoCache._debug(" - released")
#
# Application

View File

@ -135,8 +135,12 @@ class DeviceInfoCache:
current_info = DeviceInfo()
current_info.address = key
current_info._cache_keys = (None, key)
current_info._ref_count = 1
self.cache[key] = current_info
else:
if _debug: DeviceInfoCache._debug(" - reference bump")
current_info._ref_count += 1
if _debug: DeviceInfoCache._debug(" - current_info: %r", current_info)
@ -177,11 +181,18 @@ class DeviceInfoCache:
has finished with the device information."""
if _debug: DeviceInfoCache._debug("release_device_info %r", info)
# this information record might be used by more than one SSM
if info._ref_count > 1:
if _debug: DeviceInfoCache._debug(" - multiple references")
info._ref_count -= 1
return
cache_id, cache_address = info._cache_keys
if cache_id is not None:
del self.cache[cache_id]
if cache_address is not None:
del self.cache[cache_address]
if _debug: DeviceInfoCache._debug(" - released")
#
# Application