#!/usr/bin/env bash

createworker() {
        (( ++active ))
        read -u4 -r -d $'\0' line
        taskid=${line%%::AtOM:SQL:Sep::*}
        rest="${line#*::AtOM:SQL:Sep::}::AtOM:SQL:Sep::"
        sourcefileid=${rest%%::AtOM:SQL:Sep::*}
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cmd_arg+=("${rest%%::AtOM:SQL:Sep::*}")
        rest=${rest#*::AtOM:SQL:Sep::}
        cleanup=${rest%%::AtOM:SQL:Sep::*}
        rest=${rest#*::AtOM:SQL:Sep::}
        destfileid=${rest%%::AtOM:SQL:Sep::*}
        rest=${rest#*::AtOM:SQL:Sep::}
        destfilename=${rest%%::AtOM:SQL:Sep::*}
        rest=${rest#*::AtOM:SQL:Sep::}
        for key in ${!cmd_arg[@]}
        do
                [ -z "${cmd_arg[key]}" ] && unset cmd_arg[key]
        done
        workerid=$(getworkerid)
        workertasks[workerid]=$taskid
        Update tasks status 1 <<<"id = $taskid"
        worker $workerid &
        workers[$workerid]=$!
}