Ejemplo n.º 1
0
 async def create_subscription(self, params, callback):
     self.logger.info("create_subscription")
     request = ua.CreateSubscriptionRequest()
     request.Parameters = params
     data = await self.protocol.send_request(request)
     response = struct_from_binary(
         ua.CreateSubscriptionResponse,
         data
     )
     self.logger.info("create subscription callback")
     self.logger.debug(response)
     response.ResponseHeader.ServiceResult.check()
     self._publish_callbacks[response.Parameters.SubscriptionId] = callback
     return response.Parameters
Ejemplo n.º 2
0
 async def create_subscription(self, params, callback):
     self.logger.debug("create_subscription")
     request = ua.CreateSubscriptionRequest()
     request.Parameters = params
     data = await self.protocol.send_request(request)
     response = struct_from_binary(ua.CreateSubscriptionResponse, data)
     response.ResponseHeader.ServiceResult.check()
     self._subscription_callbacks[response.Parameters.SubscriptionId] = callback
     self.logger.info("create_subscription success SubscriptionId %s", response.Parameters.SubscriptionId)
     if not self._publish_task or self._publish_task.done():
         # Start the publish loop if it is not yet running
         # The current strategy is to have only one open publish request per UaClient. This might not be enough
         # in high latency networks or in case many subscriptions are created. A Set of Tasks of `_publish_loop`
         # could be used if necessary.
         self._publish_task = self.loop.create_task(self._publish_loop())
     return response.Parameters