public AaptProcess start() throws IOException, InterruptedException { String[] command = new String[] { mAaptLocation, "m", }; mLogger.verbose("Trying to start %1$s", command[0]); Process process = new ProcessBuilder(command).start(); mLogger.verbose("Started %1$d", process.hashCode()); return new AaptProcess(process, mLogger); } }
@Override public void destruction(@NonNull Thread t) throws IOException, InterruptedException { AaptProcess aaptProcess = mAaptProcesses.get(Thread.currentThread().getName()); if (aaptProcess != null) { mLogger.verbose("Thread(%1$s): notify aapt slave shutdown", Thread.currentThread().getName()); aaptProcess.shutdown(); mAaptProcesses.remove(t.getName()); mLogger.verbose("Thread(%1$s): after shutdown queue_size=%2$d", Thread.currentThread().getName(), mAaptProcesses.size()); } }
@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 creation(@NonNull Thread t) throws IOException { try { AaptProcess aaptProcess = new AaptProcess.Builder(mAaptLocation, mLogger).start(); assert aaptProcess != null; mLogger.verbose("Thread(%1$s): created aapt slave, Process(%2$s)", Thread.currentThread().getName(), aaptProcess.hashCode()); aaptProcess.waitForReady(); mAaptProcesses.put(t.getName(), aaptProcess); } catch (InterruptedException e) { mLogger.error(e, "Cannot start slave process"); e.printStackTrace(); } }
@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 creation(@NonNull Thread t) throws IOException { try { mLogger.verbose("Thread(%1$s): create aapt slave", Thread.currentThread().getName()); AaptProcess aaptProcess = new AaptProcess.Builder(mAaptLocation, mLogger).start(); assert aaptProcess != null; aaptProcess.waitForReady(); mAaptProcesses.put(t.getName(), aaptProcess); } catch (InterruptedException e) { mLogger.error(e, "Cannot start slave process"); e.printStackTrace(); } }
@Override public void destruction(@NonNull Thread t) throws IOException, InterruptedException { AaptProcess aaptProcess = mAaptProcesses.get(Thread.currentThread().getName()); if (aaptProcess != null) { mLogger.verbose("Thread(%1$s): notify aapt slave shutdown, Process(%2$s)", Thread.currentThread().getName(), aaptProcess.hashCode()); aaptProcess.shutdown(); mAaptProcesses.remove(t.getName()); mLogger.verbose("Thread(%1$s): Process(%2$d), after shutdown queue_size=%3$d", Thread.currentThread().getName(), aaptProcess.hashCode(), mAaptProcesses.size()); } }
public AaptProcess start() throws IOException, InterruptedException { String[] command = new String[] { mAaptLocation, "m", }; mLogger.verbose("Trying to start %1$s", command[0]); Process process = new ProcessBuilder(command).start(); AaptProcess aaptProcess = new AaptProcess(mAaptLocation, process, mLogger); mLogger.verbose("Started %1$d", aaptProcess.hashCode()); return aaptProcess; } }
@Override public void shutdown() { if (!mAaptProcesses.isEmpty()) { mLogger.warning("Process list not empty"); for (Map.Entry<String, AaptProcess> aaptProcessEntry : mAaptProcesses .entrySet()) { mLogger.warning("Thread(%1$s): queue not cleaned", aaptProcessEntry.getKey()); try { aaptProcessEntry.getValue().shutdown(); } catch (Exception e) { mLogger.error(e, "while shutting down" + aaptProcessEntry.getKey()); } } } mAaptProcesses.clear(); } };
@Override public void shutdown() { if (!mAaptProcesses.isEmpty()) { mLogger.warning("Process list not empty"); for (Map.Entry<String, AaptProcess> aaptProcessEntry : mAaptProcesses .entrySet()) { mLogger.warning("Thread(%1$s): queue not cleaned", aaptProcessEntry.getKey()); try { aaptProcessEntry.getValue().shutdown(); } catch (Exception e) { mLogger.error(e, "while shutting down" + aaptProcessEntry.getKey()); } } } mAaptProcesses.clear(); } };