@WeakOuter private final class ThreadNameSupplier implements Supplier<String> { @Override public String get() { return serviceName() + " " + state(); } }
/** Concrete implementation of {@link WeakValueReference}. */ static final class WeakValueReferenceImpl<K, V, E extends InternalEntry<K, V, E>> extends WeakReference<V> implements WeakValueReference<K, V, E> { @Weak final E entry; WeakValueReferenceImpl(ReferenceQueue<V> queue, V referent, E entry) { super(referent, queue); this.entry = entry; } @Override public E getEntry() { return entry; } @Override public WeakValueReference<K, V, E> copyFor(ReferenceQueue<V> queue, E entry) { return new WeakValueReferenceImpl<>(queue, get(), entry); } }
@J2ObjCIncompatible // ClassValue @VisibleForTesting static GetCheckedTypeValidator classValueValidator() { return GetCheckedTypeValidatorHolder.ClassValueValidator.INSTANCE; }
@WeakOuter private final class HasReachedRunningGuard extends Guard { HasReachedRunningGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().compareTo(RUNNING) >= 0; } }
private static final class EntrySet<K, V> extends ImmutableSet<Entry<K, V>> { @Weak private final transient ImmutableSetMultimap<K, V> multimap; EntrySet(ImmutableSetMultimap<K, V> multimap) { this.multimap = multimap; } @Override public boolean contains(@Nullable Object object) { if (object instanceof Entry) { Entry<?, ?> entry = (Entry<?, ?>) object; return multimap.containsEntry(entry.getKey(), entry.getValue()); } return false; } @Override public int size() { return multimap.size(); } @Override public UnmodifiableIterator<Entry<K, V>> iterator() { return multimap.entryIterator(); } @Override boolean isPartialView() { return false; } }
@WeakOuter private final class IsStoppedGuard extends Guard { IsStoppedGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().isTerminal(); } }
private static class EntryCollection<K, V> extends ImmutableCollection<Entry<K, V>> { @Weak final ImmutableMultimap<K, V> multimap; EntryCollection(ImmutableMultimap<K, V> multimap) { this.multimap = multimap; } @Override public UnmodifiableIterator<Entry<K, V>> iterator() { return multimap.entryIterator(); } @Override boolean isPartialView() { return multimap.isPartialView(); } @Override public int size() { return multimap.size(); } @Override public boolean contains(Object object) { if (object instanceof Entry) { Entry<?, ?> entry = (Entry<?, ?>) object; return multimap.containsEntry(entry.getKey(), entry.getValue()); } return false; } private static final long serialVersionUID = 0; }
@WeakOuter private final class IsStartableGuard extends Guard { IsStartableGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state() == NEW; } }
@WeakOuter final class StoppedGuard extends Monitor.Guard { StoppedGuard() { super(ServiceManagerState.this.monitor); } @Override @GuardedBy("ServiceManagerState.this.monitor") public boolean isSatisfied() { return states.count(TERMINATED) + states.count(FAILED) == numberOfServices; } }
@WeakOuter private final class IsStoppableGuard extends Guard { IsStoppableGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().compareTo(RUNNING) <= 0; } }
@WeakOuter final class AwaitHealthGuard extends Monitor.Guard { AwaitHealthGuard() { super(ServiceManagerState.this.monitor); } @Override @GuardedBy("ServiceManagerState.this.monitor") public boolean isSatisfied() { // All services have started or some service has terminated/failed. return states.count(RUNNING) == numberOfServices || states.contains(STOPPING) || states.contains(TERMINATED) || states.contains(FAILED); } }
@WeakOuter final class StoppedGuard extends Monitor.Guard { StoppedGuard() { super(ServiceManagerState.this.monitor); } @Override @GuardedBy("ServiceManagerState.this.monitor") public boolean isSatisfied() { return states.count(TERMINATED) + states.count(FAILED) == numberOfServices; } }
@WeakOuter private final class ThreadNameSupplier implements Supplier<String> { @Override public String get() { return serviceName() + " " + state(); } }
@WeakOuter private final class HasReachedRunningGuard extends Guard { HasReachedRunningGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().compareTo(RUNNING) >= 0; } }
@WeakOuter private final class IsStoppedGuard extends Guard { IsStoppedGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().isTerminal(); } }
@WeakOuter private final class IsStartableGuard extends Guard { IsStartableGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state() == NEW; } }
@WeakOuter private final class IsStoppableGuard extends Guard { IsStoppableGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().compareTo(RUNNING) <= 0; } }
@WeakOuter private final class IsStoppableGuard extends Guard { IsStoppableGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().compareTo(RUNNING) <= 0; } }
@WeakOuter private final class HasReachedRunningGuard extends Guard { HasReachedRunningGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().compareTo(RUNNING) >= 0; } }
@WeakOuter private final class IsStoppedGuard extends Guard { IsStoppedGuard() { super(AbstractService.this.monitor); } @Override public boolean isSatisfied() { return state().isTerminal(); } }