
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
58 lines
1.9 KiB
Python
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()
|