client.py 1.37 KB
import sys
import socket
from .connection import Connection


class Client(Connection):
    def __init__(self, conf):
        Connection.__init__(self, conf)
        self.address = (conf['ip'], conf['port'])
        self.request = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    def connect(self):
        self.request.connect(self.address)
        self.set_connected_time()

    def on_refused(self, err):
        self.close()

    def before_loop(self):
        if sys.version_info.major == 2:
            self.before_loop_v2()
            return
        try:
            self.connect()
            Connection.before_loop(self)
        except OSError as err:
            self.on_socket_error(err)
        except socket.timeout as err:
            self.on_socket_error(err)
        except ConnectionRefusedError as err:
            self.on_refused(err)
        except socket.error as err:
            self.on_socket_error(err)

    def before_loop_v2(self):
        try:
            self.connect()
            Connection.before_loop(self)
        except OSError as err:
            self.on_socket_error(err)
        except socket.timeout as err:
            self.on_socket_error(err)
        except socket.error as err:
            if err.errno == 111:
                self.on_refused(err)
            else:
                self.on_socket_error(err)