def _do_packet(self, packet, ip, port):
        """
        React to incoming packet

        :param packet: Packet to handle
        :type packet: T >= paps.si.app.message.APPMessage
        :param ip: Client ip address
        :type ip: unicode
        :param port: Client port
        :type port: int
        :rtype: None
        """
        msg_type = packet.header.message_type

        if msg_type == MsgType.JOIN:
            self._do_join_packet(packet, ip, port)
        elif msg_type == MsgType.UNJOIN:
            self._do_unjoin_packet(packet, ip, port)
        elif msg_type == MsgType.UPDATE:
            self._do_update_packet(packet, ip, port)