worker()
This commit is contained in:
parent
121e586b08
commit
7d57f59dd5
126
atom
126
atom
@ -1001,13 +1001,13 @@ decodeFile() {
|
|||||||
source_file $fileid
|
source_file $fileid
|
||||||
command_line $commandline
|
command_line $commandline
|
||||||
status 0
|
status 0
|
||||||
cleanup $tempdir/$tmpfile.wav
|
|
||||||
EOInsert
|
EOInsert
|
||||||
)
|
)
|
||||||
progressSpin
|
progressSpin
|
||||||
fi
|
fi
|
||||||
if (( sox_needed ))
|
if (( sox_needed ))
|
||||||
then
|
then
|
||||||
|
cleanup="$tempdir/$tmpfile"
|
||||||
decodeSox "$tempdir/$tmpfile.wav"
|
decodeSox "$tempdir/$tmpfile.wav"
|
||||||
if ! soxtaskid=$(
|
if ! soxtaskid=$(
|
||||||
Select tasks id <<<"key = $tmpfile"
|
Select tasks id <<<"key = $tmpfile"
|
||||||
@ -1019,8 +1019,9 @@ decodeFile() {
|
|||||||
source_file $fileid
|
source_file $fileid
|
||||||
command_line $commandline
|
command_line $commandline
|
||||||
requires $decodetaskid
|
requires $decodetaskid
|
||||||
|
required $decodetaskid
|
||||||
status 0
|
status 0
|
||||||
cleanup $tempdir/$tmpfile.wav
|
cleanup $cleanup
|
||||||
EOInsert
|
EOInsert
|
||||||
)
|
)
|
||||||
progressSpin
|
progressSpin
|
||||||
@ -1128,7 +1129,11 @@ encodeFile::mp3() {
|
|||||||
Insert tasks <<-EOInsert
|
Insert tasks <<-EOInsert
|
||||||
key ${fileid}lame$destination
|
key ${fileid}lame$destination
|
||||||
requires ${soxtaskid:-$decodetaskid}
|
requires ${soxtaskid:-$decodetaskid}
|
||||||
|
required ${soxtaskid:-$decodetaskid}
|
||||||
|
fileid $destfileid
|
||||||
|
filename $destdir/$destfile.mp3
|
||||||
command_line lame $lameopts "$tempdir/$tmpfile.wav" "$destdir/$destfile.mp3"
|
command_line lame $lameopts "$tempdir/$tmpfile.wav" "$destdir/$destfile.mp3"
|
||||||
|
cleanup "$tempdir/$tmpfile.wav"
|
||||||
source_file $fileid
|
source_file $fileid
|
||||||
status 0
|
status 0
|
||||||
EOInsert
|
EOInsert
|
||||||
@ -1152,7 +1157,11 @@ encodeFile::vorbis() {
|
|||||||
Insert tasks <<-EOInsert
|
Insert tasks <<-EOInsert
|
||||||
key ${fileid}oggenc$destination
|
key ${fileid}oggenc$destination
|
||||||
requires ${soxtaskid:-$decodetaskid}
|
requires ${soxtaskid:-$decodetaskid}
|
||||||
|
required ${soxtaskid:-$decodetaskid}
|
||||||
|
fileid $destfileid
|
||||||
|
filename $destdir/$destfile.ogg
|
||||||
command_line oggenc $oggencopts -o "$destdir/$destfile.ogg" "$tempdir/$tmpfile.wav"
|
command_line oggenc $oggencopts -o "$destdir/$destfile.ogg" "$tempdir/$tmpfile.wav"
|
||||||
|
cleanup "$tempdir/$tmpfile.wav"
|
||||||
source_file $fileid
|
source_file $fileid
|
||||||
status 0
|
status 0
|
||||||
EOInsert
|
EOInsert
|
||||||
@ -1194,6 +1203,103 @@ transcodeLauncher() {
|
|||||||
#update counter / metadata
|
#update counter / metadata
|
||||||
}
|
}
|
||||||
|
|
||||||
|
worker() {
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
if [ -f "$tempdir/worker-lock" ]
|
||||||
|
then
|
||||||
|
sleep 0.001
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
touch "$tempdir/worker-lock"
|
||||||
|
concurrency=$(Select worker_comm value <<<"parameter = concurrency")
|
||||||
|
active_workers=$(Select tasks 'count(*)' <<<"status = 1")
|
||||||
|
if (( active_workers < concurrency ))
|
||||||
|
then
|
||||||
|
echo '
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM tasks
|
||||||
|
WHERE status = 0
|
||||||
|
AND requires is NULL;
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
source_file,
|
||||||
|
required,
|
||||||
|
command_line,
|
||||||
|
cleanup,
|
||||||
|
fileid,
|
||||||
|
filename
|
||||||
|
FROM tasks
|
||||||
|
WHERE status = 0
|
||||||
|
AND requires is NULL
|
||||||
|
ORDER BY source_file
|
||||||
|
LIMIT 1;
|
||||||
|
' >&3
|
||||||
|
read -u4 count
|
||||||
|
if (( count == 0 ))
|
||||||
|
then
|
||||||
|
rm "$tempdir/worker-lock"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
read -u4 line
|
||||||
|
taskid=${line%%|*}
|
||||||
|
rest="${line#*|}|"
|
||||||
|
sourcefileid=${rest%%|*}
|
||||||
|
rest=${rest#*|}
|
||||||
|
required=${rest%%|*}
|
||||||
|
rest=${rest#*|}
|
||||||
|
commandline=${rest%%|*}
|
||||||
|
rest=${rest#*|}
|
||||||
|
cleanup=${rest%%|*}
|
||||||
|
rest=${rest#*|}
|
||||||
|
destfileid=${rest%%|*}
|
||||||
|
rest=${rest#*|}
|
||||||
|
destfilename=${rest%%|*}
|
||||||
|
rest=${rest#*|}
|
||||||
|
Update tasks status 1 <<<"id = $taskid"
|
||||||
|
rm "$tempdir/worker-lock"
|
||||||
|
if eval $commandline 2>>"$tempdir/errors.log"
|
||||||
|
then
|
||||||
|
Delete tasks <<<"id = $taskid"
|
||||||
|
if [ -n "$destfilename" ]
|
||||||
|
then
|
||||||
|
echo \
|
||||||
|
"UPDATE destination_files" \
|
||||||
|
"SET filename=\"$destfilename\"," \
|
||||||
|
" last_change=(" \
|
||||||
|
" SELECT last_change" \
|
||||||
|
" FROM source_files" \
|
||||||
|
" WHERE id=$sourcefileid"\
|
||||||
|
" )" \
|
||||||
|
"WHERE id=$destfileid;" \
|
||||||
|
>&3
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
Update tasks status 2 <<<"id = $taskid"
|
||||||
|
[ -n "$filename" ] && rm -f "$filename"
|
||||||
|
[ -n "$cleanup" ] && rm -f "$cleanup"
|
||||||
|
fi
|
||||||
|
if [ -n "$cleanup" -a -n "$required" ]
|
||||||
|
then
|
||||||
|
echo "SELECT COUNT(*)
|
||||||
|
FROM tasks
|
||||||
|
WHERE ( status = 0 OR status = 1 )
|
||||||
|
AND required = $required;">&3
|
||||||
|
read -u4 count
|
||||||
|
if (( count == 0 ))
|
||||||
|
then
|
||||||
|
eval rm $cleanup
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
rm "$tempdir/worker-lock"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
#UI
|
#UI
|
||||||
|
|
||||||
if [ ! -f ~/.atom/atom.cfg ]
|
if [ ! -f ~/.atom/atom.cfg ]
|
||||||
@ -1373,14 +1479,25 @@ echo '
|
|||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
key TEXT UNIQUE,
|
key TEXT UNIQUE,
|
||||||
source_file INTEGER,
|
source_file INTEGER,
|
||||||
|
fileid INTEGER,
|
||||||
|
filename TEXT,
|
||||||
command_line TEXT,
|
command_line TEXT,
|
||||||
requires INTEGER,
|
requires INTEGER,
|
||||||
|
required INTEGER,
|
||||||
status INTEGER NOT NULL,
|
status INTEGER NOT NULL,
|
||||||
cleanup TEXT,
|
cleanup TEXT,
|
||||||
FOREIGN KEY(requires) REFERENCES tasks(id)
|
FOREIGN KEY(requires) REFERENCES tasks(id)
|
||||||
ON DELETE SET NULL
|
ON DELETE SET NULL
|
||||||
);
|
);
|
||||||
CREATE INDEX tasks_by_key ON tasks ( key );' >&3
|
CREATE INDEX tasks_by_key ON tasks ( key );
|
||||||
|
CREATE INDEX tasks_by_sourcefile ON tasks ( source_file );
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE worker_comm(
|
||||||
|
parameter TEXT UNIQUE NOT NULL,
|
||||||
|
value TEXT
|
||||||
|
);
|
||||||
|
CREATE INDEX wrkcomm_by_param ON worker_comm ( parameter );
|
||||||
|
' >&3
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
SELECT COUNT(source_files.id)
|
SELECT COUNT(source_files.id)
|
||||||
@ -1571,6 +1688,9 @@ echo 'COMMIT;' >&3
|
|||||||
echo -e "\rCreated ${count:-0} tasks for $filecount files"
|
echo -e "\rCreated ${count:-0} tasks for $filecount files"
|
||||||
unset count
|
unset count
|
||||||
|
|
||||||
|
InsertOrUpdate worker_comm value 1 <<<"parameter concurrency"
|
||||||
|
worker
|
||||||
|
|
||||||
closeDatabase
|
closeDatabase
|
||||||
|
|
||||||
# vim:set ts=8 sw=8:
|
# vim:set ts=8 sw=8:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user