View Javadoc

1   package com.atlassian.vcache.internal.core.metrics;
2   
3   import com.atlassian.vcache.ExternalCache;
4   import com.atlassian.vcache.ExternalWriteOperationsUnbuffered;
5   import com.atlassian.vcache.StableReadExternalCache;
6   
7   import static java.util.Objects.requireNonNull;
8   
9   /**
10   * Wrapper for a {@link StableReadExternalCache} that records metrics.
11   *
12   * @param <V> the value type
13   * @since 1.0.0
14   */
15  class TimedStableReadExternalCache<V>
16          extends TimedExternalWriteOperationsUnbuffered<V>
17          implements StableReadExternalCache<V> {
18      private final StableReadExternalCache<V> delegate;
19  
20      TimedStableReadExternalCache(MetricsRecorder metricsRecorder, StableReadExternalCache<V> delegate) {
21          super(metricsRecorder);
22          this.delegate = requireNonNull(delegate);
23      }
24  
25      @Override
26      protected ExternalWriteOperationsUnbuffered<V> getDelegateOps() {
27          return delegate;
28      }
29  
30      @Override
31      protected ExternalCache<V> getDelegate() {
32          return delegate;
33      }
34  }