1111
1212SPDX-License-Identifier: Apache-2.0
1313"""
14+
1415import json
1516import logging
1617import os
2122from builtins import str
2223from concurrent .futures import Future
2324from enum import Enum
24- from typing import Tuple , Final
25+ from typing import Final , Tuple
2526
26- from vsomeip_py import vsomeip
2727from uprotocol .proto .uattributes_pb2 import CallOptions , UMessageType , UPriority
2828from uprotocol .proto .umessage_pb2 import UMessage
2929from uprotocol .proto .upayload_pb2 import UPayload , UPayloadFormat
3030from uprotocol .proto .uri_pb2 import UEntity , UUri
31- from uprotocol .proto .ustatus_pb2 import UStatus , UCode
31+ from uprotocol .proto .ustatus_pb2 import UCode , UStatus
3232from uprotocol .rpc .rpcclient import RpcClient
3333from uprotocol .transport .builder .uattributesbuilder import UAttributesBuilder
3434from uprotocol .transport .ulistener import UListener
3535from uprotocol .transport .utransport import UTransport
3636from uprotocol .uri .validator .urivalidator import UriValidator
3737from uprotocol .uuid .serializer .longuuidserializer import LongUuidSerializer
38+ from vsomeip_py import vsomeip
3839
3940from .helper import VsomeipHelper
4041
@@ -119,18 +120,14 @@ def _create_services(self) -> None:
119120
120121 with self ._lock :
121122 self ._configuration ["unicast" ] = self ._unicast
122- self ._configuration ["service-discovery" ]["multicast" ] = str (
123- self ._multicast [0 ]
124- )
123+ self ._configuration ["service-discovery" ]["multicast" ] = str (self ._multicast [0 ])
125124 self ._configuration ["service-discovery" ]["port" ] = str (self ._multicast [1 ])
126125
127126 for service in services :
128127 service_name = service .Name
129128 service_id = service .Id
130129 service_name = (
131- self ._replace_special_chars (service_name )
132- + "_"
133- + VsomeipTransport .VSOMEIPType .SERVICE .value
130+ self ._replace_special_chars (service_name ) + "_" + VsomeipTransport .VSOMEIPType .SERVICE .value
134131 )
135132 if service_name not in self ._instances :
136133 self ._configuration ["applications" ].append (
@@ -165,9 +162,7 @@ def _create_services(self) -> None:
165162
166163 service ["instance" ].offer (events = service ["events" ])
167164
168- def _get_instance (
169- self , entity : UEntity , entity_type : VSOMEIPType
170- ) -> vsomeip .vSOMEIP :
165+ def _get_instance (self , entity : UEntity , entity_type : VSOMEIPType ) -> vsomeip .vSOMEIP :
171166 """
172167 configure and create instances of vsomeip
173168
@@ -177,13 +172,8 @@ def _get_instance(
177172 entity_id = entity .id
178173 entity_name = self ._replace_special_chars (entity .name ) + "_" + entity_type .value
179174 with self ._lock :
180- if (
181- entity_name not in self ._instances
182- and entity_type == VsomeipTransport .VSOMEIPType .CLIENT
183- ):
184- self ._configuration ["applications" ].append (
185- {"id" : str (len (self ._instances )), "name" : entity_name }
186- )
175+ if entity_name not in self ._instances and entity_type == VsomeipTransport .VSOMEIPType .CLIENT :
176+ self ._configuration ["applications" ].append ({"id" : str (len (self ._instances )), "name" : entity_name })
187177 self ._configuration ["clients" ].append (
188178 {
189179 "instance" : str (self .INSTANCE_ID ),
@@ -205,18 +195,14 @@ def _get_instance(
205195 if entity_name in self ._instances :
206196 return self ._instances [entity_name ]
207197
208- def _invoke_handler (
209- self , message_type : int , _ : int , __ : int , data : bytearray , request_id : int
210- ) -> bytearray :
198+ def _invoke_handler (self , message_type : int , _ : int , __ : int , data : bytearray , request_id : int ) -> bytearray :
211199 """
212200 callback for RPC method to set Future
213201 """
214202 if message_type == vsomeip .vSOMEIP .Message_Type .REQUEST .value :
215203 return
216204
217- req_id = LongUuidSerializer .instance ().serialize (
218- self ._requests [request_id ].attributes .id
219- )
205+ req_id = LongUuidSerializer .instance ().serialize (self ._requests [request_id ].attributes .id )
220206 parsed_message = UMessage (
221207 payload = UPayload (
222208 value = bytes (data ),
@@ -230,9 +216,7 @@ def _invoke_handler(
230216 else :
231217 _logger .info ("Future result state is already finished or cancelled" )
232218
233- def _on_event_handler (
234- self , message_type : int , service_id : int , event_id : int , data : bytearray , _ : int
235- ) -> None :
219+ def _on_event_handler (self , message_type : int , service_id : int , event_id : int , data : bytearray , _ : int ) -> None :
236220 """
237221 handle responses from service with callback to listener registered
238222 """
@@ -247,9 +231,7 @@ def _on_event_handler(
247231 hint = UPayloadFormat .UPAYLOAD_FORMAT_PROTOBUF_WRAPPED_IN_ANY
248232 message_payload = UPayload (value = payload_data , hint = hint )
249233
250- parsed_message = UMessage (
251- payload = message_payload , attributes = message .attributes
252- )
234+ parsed_message = UMessage (payload = message_payload , attributes = message .attributes )
253235
254236 for _ , listener in self ._registers [service_id ][event_id ]:
255237 if listener :
@@ -278,19 +260,15 @@ def _on_method_handler(
278260 hint = UPayloadFormat .UPAYLOAD_FORMAT_PROTOBUF_WRAPPED_IN_ANY
279261 message_payload = UPayload (value = payload_data , hint = hint )
280262
281- parsed_message = UMessage (
282- payload = message_payload , attributes = message .attributes
283- )
263+ parsed_message = UMessage (payload = message_payload , attributes = message .attributes )
284264
285265 for _ , listener in self ._registers [service_id ][method_id ]:
286266 if listener :
287267 listener .on_receive (parsed_message ) # call actual callback now...
288268
289269 return None
290270
291- def _for_response_handler (
292- self , message_type : int , _ : int , __ : int , ___ : bytearray , request_id : int
293- ) -> bytearray :
271+ def _for_response_handler (self , message_type : int , _ : int , __ : int , ___ : bytearray , request_id : int ) -> bytearray :
294272 """
295273 Return from the send response set for the response of the initial request message
296274 """
@@ -314,9 +292,7 @@ def _for_response_handler(
314292 del self ._responses [req_id ][0 ]
315293 break
316294
317- return bytearray (
318- response_data
319- ) # note: return data is what is sent over transport (i.e. someip) as response
295+ return bytearray (response_data ) # note: return data is what is sent over transport (i.e. someip) as response
320296
321297 def send (self , message : UMessage ) -> UStatus :
322298 """
@@ -331,9 +307,7 @@ def send(self, message: UMessage) -> UStatus:
331307 status = UriValidator .validate (uri )
332308 if status .is_failure ():
333309 return status .to_status ()
334- instance = self ._get_instance (
335- uri .entity , VsomeipTransport .VSOMEIPType .SERVICE
336- )
310+ instance = self ._get_instance (uri .entity , VsomeipTransport .VSOMEIPType .SERVICE )
337311
338312 event_id = uri .resource .id
339313 service_id = uri .entity .id
@@ -354,17 +328,13 @@ def send(self, message: UMessage) -> UStatus:
354328 status = UriValidator .validate (uri )
355329 if status .is_failure ():
356330 return status .to_status ()
357- instance = self ._get_instance (
358- uri .entity , VsomeipTransport .VSOMEIPType .CLIENT
359- )
331+ instance = self ._get_instance (uri .entity , VsomeipTransport .VSOMEIPType .CLIENT )
360332
361333 method_id = uri .resource .id
362334 payload_data = bytearray (message .payload .value )
363335 try :
364336 request_id = instance .request (id = method_id , data = payload_data )
365- self ._requests [request_id ] = (
366- message # Important: in memory ONLY, thus stored per application level
367- )
337+ self ._requests [request_id ] = message # Important: in memory ONLY, thus stored per application level
368338 except Exception as ex :
369339 return UStatus (message = str (ex ), code = UCode .UNKNOWN )
370340 return UStatus (message = "request" , code = UCode .OK )
@@ -409,19 +379,11 @@ def register_listener(self, uri: UUri, listener: UListener) -> UStatus:
409379
410380 try :
411381 if is_method :
412- instance = self ._get_instance (
413- uri .entity , VsomeipTransport .VSOMEIPType .SERVICE
414- )
415- instance .on_message (
416- resource_id , self ._on_method_handler
417- ) # handles the UListener
418- instance .on_message (
419- resource_id , self ._for_response_handler
420- ) # handles returning a response of data
382+ instance = self ._get_instance (uri .entity , VsomeipTransport .VSOMEIPType .SERVICE )
383+ instance .on_message (resource_id , self ._on_method_handler ) # handles the UListener
384+ instance .on_message (resource_id , self ._for_response_handler ) # handles returning a response of data
421385 else :
422- instance = self ._get_instance (
423- uri .entity , VsomeipTransport .VSOMEIPType .CLIENT
424- )
386+ instance = self ._get_instance (uri .entity , VsomeipTransport .VSOMEIPType .CLIENT )
425387 instance .on_event (resource_id , self ._on_event_handler )
426388 except Exception as err :
427389 return UStatus (message = str (err ), code = UCode .UNKNOWN )
@@ -439,9 +401,7 @@ def unregister_listener(self, topic: UUri, listener: UListener) -> UStatus:
439401 :return: Returns UStatus with UCode.OK if the listener is unregistered
440402 correctly, otherwise it returns with the appropriate failure.
441403 """
442- instance = self ._get_instance (
443- topic .entity , VsomeipTransport .VSOMEIPType .SERVICE
444- )
404+ instance = self ._get_instance (topic .entity , VsomeipTransport .VSOMEIPType .SERVICE )
445405 service_id = topic .entity .id
446406 event_id = topic .resource .id
447407 try :
@@ -454,9 +414,7 @@ def unregister_listener(self, topic: UUri, listener: UListener) -> UStatus:
454414 return UStatus (message = str (err ), code = UCode .UNKNOWN )
455415 return UStatus (message = "unregister listener" , code = UCode .OK )
456416
457- def invoke_method (
458- self , method_uri : UUri , request_payload : UPayload , options : CallOptions
459- ) -> Future :
417+ def invoke_method (self , method_uri : UUri , request_payload : UPayload , options : CallOptions ) -> Future :
460418 """
461419 API for clients to invoke a method (send an RPC request) and
462420 receive the response (the returned Future UMessage).
@@ -479,12 +437,8 @@ def invoke_method(
479437 raise ValueError ("TTl is invalid or missing" )
480438
481439 source = self ._source
482- attributes = UAttributesBuilder .request (
483- source , method_uri , UPriority .UPRIORITY_CS4 , options .ttl
484- ).build ()
485- instance = self ._get_instance (
486- method_uri .entity , VsomeipTransport .VSOMEIPType .CLIENT
487- )
440+ attributes = UAttributesBuilder .request (source , method_uri , UPriority .UPRIORITY_CS4 , options .ttl ).build ()
441+ instance = self ._get_instance (method_uri .entity , VsomeipTransport .VSOMEIPType .CLIENT )
488442 method_id = method_uri .resource .id
489443 uuid = LongUuidSerializer .instance ().serialize (attributes .id )
490444
0 commit comments