# -*- encoding: utf-8 -*- # @author : vincent.benoit@scle.fr # @brief : Client UNIX Socket Manager ######################################################### # Importation de modules externes # import sys, re, os import socket import time ######################################################### # Classes et Methodes # class Sock: ''' Socket class ''' def __init__(self, addr="", logger=None): ''' Class constructor ''' self.addr = addr self.log = logger self.isConnected = False self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) def connect(self): ''' connect to KineIntercom server ''' ret = False idx = 0 while not ret and idx < 3: try: self.sock.connect(self.addr) ret = True except TimeoutError as e: self.log.error("Erreur de connexion avec le processus KineIntercom") except ConnectionRefusedError as e: self.log.error("Connexion refusée avec le processus KineIntercom") except FileNotFoundError as e: self.log.error("Connexion inexistante") idx = idx + 1 time.sleep(1) self.isConnected = ret return ret def disconnect(self): ''' Disconnect from KineIntercom server ''' self.sock.close() def send(self, msg): ''' Send message to Server ''' totalsent = 0 ret = True while totalsent < len(msg): sent = self.sock.send(msg[totalsent:]) if sent == 0: self.log.error("socket connection broken") ret = False break totalsent = totalsent + sent return ret ######################################################### # Decorators # ######################################################### # Instantiation #