Completed
Push — master ( 18d750...3bad9e )
by Andrii
11:56
created

heppy.Client   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 39
Duplicated Lines 0 %
Metric Value
dl 0
loc 39
rs 10
wmc 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A Client.disconnect() 0 2 1
A Client._connect() 0 5 1
A Client.request() 0 3 1
A Client.connect() 0 3 2
1
import socket
2
3
from heppy import Net
4
5
class Client:
6
    def __init__(self, address):
7
        self.socket  = None
8
        self.address = address
9
10
    def _connect(self):
11
        self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
12
        self.socket.settimeout(0.01)
13
        self.socket.connect(self.address)
14
        self.socket.settimeout(None)
15
16
    def connect(self):
17
        if self.socket is None:
18
            self._connect()
19
20
    def disconnect(self):
21
        self.socket = None
22
23
    def write(self, data):
24
        self.connect()
25
        Net.write(self.socket, data)
26
27
    def read(self):
28
        res = Net.read(self.socket)
29
        self.disconnect()
30
        return res
31
32
    def request(self, data):
33
        self.write(data)
34
        return self.read()
35
36
    @staticmethod
37
    def try_connect(address):
38
        try:
39
            client = Client(address)
40
            client.connect()
41
            return True
42
        except:
43
            return False
44
45