namespace Encoder; public class EncoderService : IEncoderService { Queue JobQueue; public EncoderService(EncoderServiceOptions options) { JobQueue = new Queue(); } public Guid EnqueueJob(EncodingJob job) { JobQueue.Enqueue(job); return job.Id; } public EncodingJob? GetJobStatus(Guid jobId) { return JobQueue.FirstOrDefault(j => j.Id == jobId); } public void RemoveJob(Guid jobId) { var job = JobQueue.FirstOrDefault(j => j.Id == jobId); if (job != null) { var tempQueue = new Queue(); while (JobQueue.Count > 0) { var currentJob = JobQueue.Dequeue(); if (currentJob.Id != jobId) { tempQueue.Enqueue(currentJob); } } JobQueue = tempQueue; } } public Task ProcessNextJob() { var job = JobQueue.Dequeue(); // Encode.... return Task.CompletedTask; } }