|
|
|
|
@ -363,15 +363,6 @@ def deactivate_all_dynamic_bridges(system_name):
|
|
|
|
|
|
|
|
|
|
### MODIFIED: Core logic updated to handle special TGIDs (9990-9999) correctly with SINGLE_MODE
|
|
|
|
|
def rule_timer_loop():
|
|
|
|
|
for _sys_name in list(systems.keys()):
|
|
|
|
|
try:
|
|
|
|
|
for _slot_id in (1, 2):
|
|
|
|
|
_s = systems[_sys_name].STATUS[_slot_id]
|
|
|
|
|
if _s['RX_TYPE'] != HBPF_SLT_VTERM or _s['TX_TYPE'] != HBPF_SLT_VTERM:
|
|
|
|
|
return
|
|
|
|
|
except (KeyError, TypeError, AttributeError):
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
logger.debug('(ROUTER) routerHBP Rule timer loop started')
|
|
|
|
|
_now = time()
|
|
|
|
|
_remove_bridges = deque()
|
|
|
|
|
@ -379,6 +370,8 @@ def rule_timer_loop():
|
|
|
|
|
# Mantener registro de bridges dinámicos activos por sistema
|
|
|
|
|
_active_dynamic_bridges = {}
|
|
|
|
|
|
|
|
|
|
_debug_msgs = []
|
|
|
|
|
|
|
|
|
|
for _bridge in list(BRIDGES):
|
|
|
|
|
_bridge_used = False
|
|
|
|
|
|
|
|
|
|
@ -411,9 +404,9 @@ def rule_timer_loop():
|
|
|
|
|
if _system['SYSTEM'] not in _active_dynamic_bridges:
|
|
|
|
|
_active_dynamic_bridges[_system['SYSTEM']] = []
|
|
|
|
|
_active_dynamic_bridges[_system['SYSTEM']].append((_bridge, _system))
|
|
|
|
|
logger.debug('(ROUTER) Conference Bridge ACTIVE (INFINITE TIMER): System: %s Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
|
|
|
|
_debug_msgs.append('(ROUTER) Conference Bridge ACTIVE (INFINITE TIMER): System: %s Bridge: %s, TS: %s, TGID: %s' % (_system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID'])))
|
|
|
|
|
else:
|
|
|
|
|
logger.debug('(ROUTER) Conference Bridge INACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
|
|
|
|
_debug_msgs.append('(ROUTER) Conference Bridge INACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s' % (_system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID'])))
|
|
|
|
|
elif _system['TO_TYPE'] == 'OFF':
|
|
|
|
|
if _system['ACTIVE'] == False:
|
|
|
|
|
# Activar inmediatamente sin timer
|
|
|
|
|
@ -422,7 +415,7 @@ def rule_timer_loop():
|
|
|
|
|
logger.info('(ROUTER) Conference Bridge ACTIVATED (NO TIMEOUT): System: %s, Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
|
|
|
|
else:
|
|
|
|
|
_bridge_used = True
|
|
|
|
|
logger.debug('(ROUTER) Conference Bridge ACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
|
|
|
|
_debug_msgs.append('(ROUTER) Conference Bridge ACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s' % (_system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID'])))
|
|
|
|
|
else:
|
|
|
|
|
# COMPORTAMIENTO ORIGINAL (SINGLE MODE ACTIVADO o bridges estáticos o TGIDs especiales)
|
|
|
|
|
if _system['TO_TYPE'] == 'ON':
|
|
|
|
|
@ -438,7 +431,7 @@ def rule_timer_loop():
|
|
|
|
|
_bridge_used = True
|
|
|
|
|
logger.info('(ROUTER) Conference Bridge ACTIVE (ON timer running): System: %s Bridge: %s, TS: %s, TGID: %s, Timeout in: %.2fs,', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']), timeout_in)
|
|
|
|
|
elif _system['ACTIVE'] == False:
|
|
|
|
|
logger.debug('(ROUTER) Conference Bridge INACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
|
|
|
|
_debug_msgs.append('(ROUTER) Conference Bridge INACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s' % (_system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID'])))
|
|
|
|
|
elif _system['TO_TYPE'] == 'OFF':
|
|
|
|
|
if _system['ACTIVE'] == False:
|
|
|
|
|
if _system['TIMER'] < _now:
|
|
|
|
|
@ -451,16 +444,19 @@ def rule_timer_loop():
|
|
|
|
|
logger.info('(ROUTER) Conference Bridge INACTIVE (OFF timer running): System: %s Bridge: %s, TS: %s, TGID: %s, Timeout in: %.2fs,', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']), timeout_in)
|
|
|
|
|
elif _system['ACTIVE'] == True:
|
|
|
|
|
_bridge_used = True
|
|
|
|
|
logger.debug('(ROUTER) Conference Bridge ACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
|
|
|
|
_debug_msgs.append('(ROUTER) Conference Bridge ACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s' % (_system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID'])))
|
|
|
|
|
else:
|
|
|
|
|
if _system['SYSTEM'][0:3] != 'OBP':
|
|
|
|
|
_bridge_used = True
|
|
|
|
|
elif _system['SYSTEM'][0:3] == 'OBP' and _system['TO_TYPE'] == 'STAT':
|
|
|
|
|
_bridge_used = True
|
|
|
|
|
logger.debug('(ROUTER) Conference Bridge NO ACTION: System: %s, Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
|
|
|
|
_debug_msgs.append('(ROUTER) Conference Bridge NO ACTION: System: %s, Bridge: %s, TS: %s, TGID: %s' % (_system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID'])))
|
|
|
|
|
|
|
|
|
|
if _bridge_used == False:
|
|
|
|
|
_remove_bridges.append(_bridge)
|
|
|
|
|
|
|
|
|
|
if _debug_msgs:
|
|
|
|
|
logger.debug('\n'.join(_debug_msgs))
|
|
|
|
|
|
|
|
|
|
for _bridgerem in _remove_bridges:
|
|
|
|
|
del BRIDGES[_bridgerem]
|
|
|
|
|
|