Bin Yang 6e87c185ba Fix issue of lost of broker location due to registration service migration
The logic of pulling ptp status relies on the announcement of location info which
might be lost during registration service migration.
To workaround it, the logic of pulling ptp status will pull location info
if not available

Partial-Bug: 1926532

Signed-off-by: Bin Yang <bin.yang@windriver.com>
Change-Id: I9ddd3e8dcff7660170c029f6d85fab0701a59c9e
2021-04-29 14:35:15 +08:00

58 lines
1.9 KiB
Python

#
# Copyright (c) 2021 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import logging
import multiprocessing as mp
from notificationclientsdk.common.helpers import rpc_helper
from notificationclientsdk.model.dto.rpc_endpoint import RpcEndpointInfo
from notificationclientsdk.client.locationservice import LocationServiceClient
from notificationclientsdk.services.notification_worker import NotificationWorker
LOG = logging.getLogger(__name__)
from notificationclientsdk.common.helpers import log_helper
log_helper.config_logger(LOG)
'''Entry point of Default Process Worker'''
def ProcessWorkerDefault(event, subscription_event, daemon_context):
worker = NotificationWorker(event, subscription_event, daemon_context)
worker.run()
return
class DaemonControl(object):
def __init__(self, daemon_context, process_worker = None):
self.daemon_context = daemon_context
self.residing_node_name = daemon_context['THIS_NODE_NAME']
self.event = mp.Event()
self.subscription_event = mp.Event()
self.registration_endpoint = RpcEndpointInfo(daemon_context['REGISTRATION_TRANSPORT_ENDPOINT'])
self.registration_transport = rpc_helper.get_transport(self.registration_endpoint)
self.locationservice_client = LocationServiceClient(self.registration_endpoint.TransportEndpoint)
if not process_worker:
process_worker = ProcessWorkerDefault
self.mpinstance = mp.Process( target=process_worker, args=(
self.event, self.subscription_event, daemon_context))
self.mpinstance.start()
# initial update
self.refresh()
pass
def __del__(self):
if self.locationservice_client:
self.locationservice_client.cleanup()
self.locationservice_client = None
return
def refresh(self):
self.subscription_event.set()
self.event.set()