private final void submit_job(
      final GearmanPacket packet,
      final ServerClient client,
      ServerJob.JobPriority priority,
      boolean isBackground) {

    /*
     * A client issues this when a job needs to be run. The server will
     * then assign a job handle and respond with a JOB_CREATED packet.
     *
     * If on of the BG versions is used, the client is not updated with
     * status or notified when the job has completed (it is detached).
     *
     * The Gearman job server queue is implemented with three levels:
     * normal, high, and low. Jobs submitted with one of the HIGH versions
     * always take precedence, and jobs submitted with the normal versions
     * take precedence over the LOW versions.
     *
     * Arguments:
     * - NULL byte terminated function name.
     * - NULL byte terminated unique ID.
     * - Opaque data that is given to the function as an argument.
     */

    // Argument: function name
    final byte[] funcName = packet.getArgumentData(0);
    assert funcName != null;
    final ByteArray funcNameBA = new ByteArray(funcName);

    // Argument: unique ID
    final byte[] uniqueID = packet.getArgumentData(1);
    assert uniqueID != null;
    final ByteArray uniqueIDBA = new ByteArray(uniqueID);

    // Argument: data
    final byte[] data = packet.getArgumentData(2);
    assert data != null;

    /*
     * FWIX CHANGE
     */
    // final ServerFunction func = this.funcSetHigh.getFunction(funcNameBA);

    funcSet.createJob(funcNameBA, uniqueIDBA, data, priority, client, isBackground);
  }