def __init__(self, uds_name): """ Constructor """ if uds_name is None: self.__uds = None return try: os.remove(uds_name) # override any previous use of the UDS except OSError: pass self.__uds = DomainSocket(uds_name)
class UDSReader(object): """ classdocs """ # ---------------------------------------------------------------------------------------------------------------- def __init__(self, uds_name): """ Constructor """ if uds_name is None: self.__uds = None return try: os.remove(uds_name) # override any previous use of the UDS except OSError: pass self.__uds = DomainSocket(uds_name) # ---------------------------------------------------------------------------------------------------------------- def connect(self): if self.__uds: self.__uds.connect() def close(self): if self.__uds: self.__uds.close() def messages(self): if self.__uds: for message in self.__uds.read(): yield message.strip() else: for message in sys.stdin: yield message.strip() # ---------------------------------------------------------------------------------------------------------------- def __str__(self, *args, **kwargs): return "UDSReader:{uds:%s}" % self.__uds
class UDSWriter(object): """ classdocs """ # ---------------------------------------------------------------------------------------------------------------- def __init__(self, address): """ Constructor """ self.__uds = DomainSocket(address) if address else None # ---------------------------------------------------------------------------------------------------------------- def connect(self): if self.__uds: self.__uds.connect() def close(self): if self.__uds: self.__uds.close() def write(self, message, wait_for_availability=False): if self.__uds: self.__uds.write(message, wait_for_availability) else: print(message) sys.stdout.flush() # ---------------------------------------------------------------------------------------------------------------- @property def address(self): return self.__uds.address if self.__uds else None # ---------------------------------------------------------------------------------------------------------------- def __str__(self, *args, **kwargs): return "UDSWriter:{uds:%s}" % self.__uds
if cmd.verbose: print(api_auth, file=sys.stderr) # ClientAuth... client_auth = ClientAuth.load(Host) if client_auth is None: print("ClientAuth not available.", file=sys.stderr) exit(1) if cmd.verbose: print(client_auth, file=sys.stderr) # comms... pub_comms = DomainSocket( cmd.uds_pub_addr) if cmd.uds_pub_addr else StdIO() # manager... manager = TopicManager(HTTPClient(), api_auth.api_key) # check topics... unavailable = False for subscription in cmd.subscriptions: if not manager.find(subscription.topic): print("Topic not available: %s" % subscription[0], file=sys.stderr) unavailable = True if unavailable: exit(1)
# ---------------------------------------------------------------------------------------------------------------- # cmd... cmd = CmdUDS() if not cmd.is_valid(): cmd.print_help(sys.stderr) exit(2) if cmd.verbose: print(cmd, file=sys.stderr) # ---------------------------------------------------------------------------------------------------------------- # resources... uds = DomainSocket(cmd.path) if cmd.verbose: print(uds, file=sys.stderr) sys.stderr.flush() try: # ------------------------------------------------------------------------------------------------------------ # run... uds.connect() for message in uds.read(): print(message) sys.stdout.flush()
def __init__(self, address): """ Constructor """ self.__uds = DomainSocket(address) if address else None
Created on 26 May 2017 @author: Bruno Beloff ([email protected]) Note: multiple writers are permitted per UDS. https://pymotw.com/2/socket/uds.html """ import time from scs_host.comms.domain_socket import DomainSocket # -------------------------------------------------------------------------------------------------------------------- server_address = '/Users/bruno/Python/Mac/scs_analysis/scs_analysis/osio_mqtt_sub.uds' uds = DomainSocket(server_address) print(uds) while True: try: uds.connect() uds.write("Hello UDS!", True) finally: uds.close( ) # not needed - just to check a closed connection can be closed time.sleep(1)
https://pymotw.com/2/socket/uds.html """ import sys from scs_core.data.localized_datetime import LocalizedDatetime from scs_host.comms.domain_socket import DomainSocket # -------------------------------------------------------------------------------------------------------------------- server_address = '/Users/bruno/Python/Mac/scs_analysis/scs_analysis/osio_mqtt_sub.uds' uds = DomainSocket(server_address) print(uds) try: uds.connect() for message in uds.read(): now = LocalizedDatetime.now() print("%s: got:[%s]" % (now.as_iso8601(), message)) except KeyboardInterrupt as ex: print("uds_reader_test: KeyboardInterrupt", file=sys.stderr) finally: uds.close()