@Override public void runTask(@NonNull Job<AaptProcess> job) throws Exception { job.runTask(new JobContext<>(mAaptProcesses.get(Thread.currentThread().getName()))); mOutstandingJobs.get(((QueuedJob) job).key).remove(job); ConcurrentLinkedQueue<Job<AaptProcess>> jobs = mDoneJobs.get(((QueuedJob) job).key); synchronized (mDoneJobs) { if (jobs == null) { jobs = new ConcurrentLinkedQueue<>(); mDoneJobs.put(((QueuedJob) job).key, jobs); } } jobs.add(job); }
@Override public void shutdown() { try { singletonJobContext.getPayload().close(); } catch (IOException e) { throw new RuntimeException(e); } } }
@Override public void runTask(@NonNull Job<AaptProcess> job) throws Exception { job.runTask( new JobContext<AaptProcess>( mAaptProcesses.get(Thread.currentThread().getName()))); mOutstandingJobs.get(((QueuedJob) job).key).remove(job); }
@Override public void run(@NonNull Job<AaptProcess> job, @NonNull JobContext<AaptProcess> context) throws IOException { AaptProcess aapt = context.getPayload(); if (aapt == null) { mLogger.error(null /* throwable */, "Thread(%1$s) has a null payload", Thread.currentThread().getName()); return; } mLogger.verbose("Thread(%1$s): submitting job %2$s to %3$d", Thread.currentThread().getName(), job.getJobTitle(), aapt.hashCode()); aapt.crunch(from, to, job); mLogger.verbose("Thread(%1$s): submitted job %2$s", Thread.currentThread().getName(), job.getJobTitle()); }
@Override public void runTask(@NonNull Job<Void> job) throws Exception { job.runTask(new JobContext<>(null /* payload */)); job.finished(); } }
@Override public void run(@NonNull Job<AaptProcess> job, @NonNull JobContext<AaptProcess> context) throws IOException { mLogger.verbose("Thread(%1$s): begin executing job %2$s", Thread.currentThread().getName(), job.getJobTitle()); context.getPayload().crunch(from, to, job); mLogger.verbose("Thread(%1$s): done executing job %2$s", Thread.currentThread().getName(), job.getJobTitle()); }
@Override public void runTask(@NonNull Job<Void> job) throws Exception { job.runTask(new JobContext<Void>(null /* payload */)); job.finished(); } }
@Override public void run(@NonNull Job<ExecutionRecordWriter> job, @NonNull JobContext<ExecutionRecordWriter> context) throws IOException { context.getPayload().write(executionRecord); job.finished(); } }));
ProcessRecorder(@NonNull ExecutionRecordWriter outWriter, @NonNull ILogger iLogger) { this.singletonJobContext = new JobContext<ExecutionRecordWriter>(outWriter); workQueue = new WorkQueue<ExecutionRecordWriter>( iLogger, new WorkQueueContext(), "execRecordWriter", 1); }