71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
# -*- 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 #
|