class QueueServer(Server):
    def __init__(self):
        Helper.LOGGER_NAEM = 'QueueServer'
        super(QueueServer, self).__init__()
        self.queue = MyQueue()

    def server_up(self):
        super(QueueServer, self).server_up()
        self.menage_clients(self.api)

    def api(self, client_ip, client_con):
        '''
            answering on all valid API
                ENQ <Item>
                    Returns status OK or message if there is an error
                DEQ
                    Returns the item or message is there is an error
                STAT
                    Returns the number of items in the stack
                STOP
                    Stops the server
                DEBUG <on|off>
                    Enable / Disable log messages in the server
        '''
        while self.connection_up:
            try:
                cmd, args, _ = self.get_msg(client_ip, client_con)
                if len(cmd):
                    # 'ENQ' and <ITEM> to enqueue to queue
                    if cmd == 'ENQ':
                        self.send_msg(client_ip, client_con,
                                      self.queue.enq(*args))
                    elif cmd == 'DEQ':
                        self.send_msg(client_ip, client_con,
                                      self.queue.deq())
                    elif cmd == 'STAT':
                        self.send_msg(client_ip, client_con,
                                      self.queue.status())
                    elif cmd == 'STOP':
                        self.broadcast_message("STOP")
                        self.server_down()
                    elif cmd == 'DEBUG':# DEBUG <ON/OFF>
                        self.send_msg(client_ip, client_con,
                                      self.change_log_level(*args))
                    else:
                        self.send_msg(client_ip, client_con,
                                      "<ERROR:INVALID-COMMAND!>%s" % cmd_help_txt)
            except Exception:
                pass

    def change_log_level(self, log_on_off):
        if log_on_off == 'ON':
            super(QueueServer, self).change_log_level('DEBUG')
            self.log('debug', "DEBUG MODE-%s" % (log_on_off))
        elif log_on_off == 'OFF':
            self.log('debug', "DEBUG MODE-%s" % (log_on_off))
            super(QueueServer, self).change_log_level('INFO')
        else:
            return "BAD-INPUT"
        return '<OK>'