void OnFileCreated(string storage, long file) { string mimetype; string filename; long rev; Storage.GetDownloadFileInfo(storage, file, out mimetype, out filename, out rev); if (mimetype.StartsWith("audio/")) { lock (instanceLock) { if (!runningTasks.ContainsKey(storage + ":" + file + ":mp3") && !File.Exists(basePath + "/" + storage + "/mp3/" + file)) { LongTask task = new LongTask(delegate { BuildMp3(storage, file); }, null, "Build MP3 " + storage + ":" + file); longRunningTaskScheduler.Start(task); runningTasks[storage + ":" + file + ":mp3"] = task; } if (!runningTasks.ContainsKey(storage + ":" + file + ":ogg") && !File.Exists(basePath + "/" + storage + "/ogg/" + file)) { LongTask task = new LongTask(delegate { BuildOgg(storage, file); }, null, "Build OGG " + storage + ":" + file, LongTaskPriority.Low); longRunningTaskScheduler.Start(task); runningTasks[storage + ":" + file + ":ogg"] = task; } } } }
void OnFileCreated(string storage, long file) { string mimetype; string filename; long rev; Storage.GetDownloadFileInfo(storage, file, out mimetype, out filename, out rev); if (mimetype.StartsWith("video/")) { lock (instanceLock) { if (!runningTasks.ContainsKey(storage + ":" + file + ":mp4") && !File.Exists(basePath + "/" + storage + "/mp4/" + file)) { LongTask task = new LongTask(delegate { BuildMp4(storage, file); }, null, "Build MP4 for " + storage + ":" + file); longRunningTaskScheduler.Start(task); runningTasks[storage + ":" + file + ":mp4"] = task; } if (!runningTasks.ContainsKey(storage + ":" + file + ":webm") && !File.Exists(basePath + "/" + storage + "/webm/" + file)) { LongTask task = new LongTask(delegate { BuildWebm(storage, file); }, null, "Build WEBM for " + storage + ":" + file, LongTaskPriority.Low); longRunningTaskScheduler.Start(task); runningTasks[storage + ":" + file + ":webm"] = task; } } } }
public VideoEncoder ScheduleEncode(Video video) { VideoEncoder encoder = null; lock (instanceLock) { lock (instanceLock) { if (!runningEncoders.ContainsKey(video.node.id)) { encoder = new VideoEncoder(this, video); LongTask task = new LongTask(() => { encoder.Run(); lock (instanceLock) { runningEncoders.Remove(encoder.Video.node.id); runningEncodersById.Remove(encoder.Id); } }, video.node.owner, $"Build MP4 for '{video.node.name}' (id: {video.node.id})"); scheduler.Start(task); runningEncoders[video.node.id] = encoder; runningEncodersById[encoder.Id] = encoder; } else { encoder = runningEncoders[video.node.id]; } } } return(encoder); }
public AudioEncoder ScheduleEncode(Audio audio) { AudioEncoder encoder = null; lock (instanceLock) { lock (instanceLock) { if (!runningEncoders.ContainsKey(audio.node.id)) { encoder = new AudioEncoder(this, audio); LongTask task = new LongTask(() => { encoder.Run(); lock (instanceLock) { runningEncoders.Remove(encoder.Audio.node.id); runningEncodersById.Remove(encoder.Id); } }, audio.node.owner, $"Build MP3 for '{audio.node.name}' (id: {audio.node.id})"); scheduler.Start(task); runningEncoders[audio.node.id] = encoder; runningEncodersById[encoder.Id] = encoder; } else { encoder = runningEncoders[audio.node.id]; } } } return(encoder); }
public void QueuePdfGenerate(string storage, long file) { lock (instanceLock) { if (!runningTasks.ContainsKey(storage + ":" + file)) { LongTask task = new LongTask(delegate { try { PdfGenerate(storage, file); } finally { // remove the task lock (instanceLock) { if (runningTasks.ContainsKey(storage + ":" + file)) { runningTasks.Remove(storage + ":" + file); } } } }, null, "Build PDF " + storage + ":" + file); longRunningTaskScheduler.Start(task); runningTasks[storage + ":" + file] = task; } } }