Esempio n. 1
0
    def handle_read(self):
        LineSocketDispatcher.handle_read(self)
        for line in self.read_lines:
            if not line:
                self.send("ERROR", "SYNTAX_ERROR")
                continue

            command = line[0].upper()
            arguments = line[1:]

            method_name = "handle_command_" + command

            if not hasattr(self, method_name):
                self.send("ERROR", "UNKNOWN_COMMAND", command)
                continue

            method = getattr(self, "handle_command_" + command)

            if not (len(inspect.getargspec(method).args) - 1) == len(arguments):
                self.send("ERROR", "EXPECT_ARGUMENTS", command, *inspect.getargspec(method).args[1:])
                continue

            method(*arguments)

        self.read_lines = []
Esempio n. 2
0
    def handle_timer(self):
        LineSocketDispatcher.handle_timer(self)
        if self.connected():
            if (datetime.now() >= self.heartbeat_sent + options.heartbeat_interval):
                self.send("HEARTBEAT")
                self.heartbeat_sent = datetime.now()

            if (datetime.now() >= self.heartbeat_received + options.heartbeat_timeout):
                print("ERROR: Missed to many heartbeats, closing connect.", file=sys.stderr)
                self.handle_close()
Esempio n. 3
0
 def __init__(self, sock_family, sock_type, remote_address, fd=None):
     LineSocketDispatcher.__init__(self, sock_family, sock_type, remote_address, fd)
     self.heartbeat_sent = datetime.now()
     self.heartbeat_received = datetime.now()
Esempio n. 4
0
 def handle_accept(self):
     self.send("WELCOME", options.catalogue, options.cluster, options.environment)
     LineSocketDispatcher.handle_accept(self)
Esempio n. 5
0
 def handle_write(self):
     LineSocketDispatcher.handle_write(self)
Esempio n. 6
0
 def timer(self):
     t1 = LineSocketDispatcher.timer(self)
     t2 = self.heartbeat_sent + options.heartbeat_interval    if self.connected() else datetime.max
     t3 = self.heartbeat_received + options.heartbeat_timeout if self.connected() else datetime.max
     return min(t1, t2, t3)
Esempio n. 7
0
 def reset(self):
     LineSocketDispatcher.reset(self)
     self.heartbeat_sent = datetime.now()
     self.heartbeat_received = datetime.now()