public boolean await() throws InterruptedException { mBooleanLatch.await(); return mResult.get(); }
@Override public String toString() { return MoreObjects.toStringHelper(this) .add("signaled", isSignalled()) .toString(); } }
public void finished() { mResult.set(true); mBooleanLatch.signal(); }
@Override public synchronized void err(@Nullable String line) { if (Strings.isNullOrEmpty(line)) { return; } NotifierProcessOutput delegate = getNotifier(); if (delegate != null) { mLogger.verbose("AAPT1 err(%1$s): %2$s -> %3$s", toString(), line, delegate.mJob); delegate.err(line); } else { if (!mReady.get()) { if (line.equals("ERROR: Unknown command 'm'")) { throw new RuntimeException("Invalid aapt version, version 21 or above is required"); } mLogger.verbose("AAPT err(%1$s): %2$s", toString(), line); mLogger.error(null, "AAPT err(%1$s): %2$s", toString(), line); } else { mLogger.error(null, "AAPT err(%1$s) : No Delegate set : lost message:%2$s", toString(), line); } } // Even after the aapt error, we should notify the main thread that we are ready. // The error state will be handled there if (!mReadyLatch.isSignalled()) { AaptProcess.this.mReady.set(false); mReadyLatch.signal(); } }
public Job(String jobTile, Task<T> task) { mJobTitle = jobTile; mTask = task; mBooleanLatch = new BooleanLatch(); }
public void error() { mResult.set(false); mBooleanLatch.signal(); }
public void waitForReady() throws InterruptedException { if (!mReadyLatch.await(TimeUnit.NANOSECONDS.convert( SLAVE_AAPT_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS))) { throw new RuntimeException("Timed out while waiting for slave aapt process, " + "try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than " + SLAVE_AAPT_TIMEOUT_IN_SECONDS + " seconds"); } mLogger.info("Slave %1$s is ready", hashCode()); }
@Override public String toString() { return Objects.toStringHelper(this) .add("signaled", isSignalled()) .toString(); } }
@Override public synchronized void out(@Nullable String line) { // an empty message or aapt startup message are ignored. if (Strings.isNullOrEmpty(line)) { return; } if (line.equals("Ready")) { AaptProcess.this.mReady.set(true); AaptProcess.this.mReadyLatch.signal(); return; } NotifierProcessOutput delegate = getNotifier(); mLogger.verbose("AAPT out(%1$s): %2$s", mProcess.hashCode(), line); if (delegate != null) { mLogger.verbose("AAPT out(%1$s): -> %2$s", mProcess.hashCode(), delegate.mJob); delegate.out(line); } else { mLogger.error(null, "AAPT out(%1$s) : No Delegate set : lost message:%2$s", mProcess.hashCode(), line); } }
public void waitForReady() throws InterruptedException { if (!mReadyLatch.await(TimeUnit.NANOSECONDS.convert( SLAVE_AAPT_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS))) { throw new RuntimeException(String.format( "Timed out while waiting for slave aapt process, make sure " + "the aapt execute at %1$s can run successfully (some anti-virus may " + "block it) or try setting environment variable SLAVE_AAPT_TIMEOUT to a " + "value bigger than %2$d seconds", mAaptLocation, SLAVE_AAPT_TIMEOUT_IN_SECONDS)); } if (mReady.get()) { mLogger.verbose("Slave %1$s is ready", hashCode()); } else { mLogger.verbose("Slave %1$s failed to start", hashCode()); } }
@Override public synchronized void out(@Nullable String line) { // an empty message or aapt startup message are ignored. if (Strings.isNullOrEmpty(line)) { return; } if (line.equals("Ready")) { AaptProcess.this.mReady.set(true); AaptProcess.this.mReadyLatch.signal(); return; } NotifierProcessOutput delegate = getNotifier(); mLogger.verbose("AAPT out(%1$s): %2$s", toString(), line); if (delegate != null) { mLogger.verbose("AAPT out(%1$s): -> %2$s", toString(), delegate.mJob); delegate.out(line); } else { mLogger.error(null, "AAPT out(%1$s) : No Delegate set : lost message:%2$s", toString(), line); } }