Class FileWatcherCertificateProvider
- java.lang.Object
-
- io.grpc.xds.internal.security.certprovider.CertificateProvider
-
- io.grpc.xds.internal.security.certprovider.FileWatcherCertificateProvider
-
- All Implemented Interfaces:
Closeable
,java.io.Closeable
,java.lang.AutoCloseable
,java.lang.Runnable
final class FileWatcherCertificateProvider extends CertificateProvider implements java.lang.Runnable
Implementation ofCertificateProvider
for file watching cert provider.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
FileWatcherCertificateProvider.Factory
-
Nested classes/interfaces inherited from class io.grpc.xds.internal.security.certprovider.CertificateProvider
CertificateProvider.DistributorWatcher, CertificateProvider.Watcher
-
-
Field Summary
Fields Modifier and Type Field Description private java.nio.file.Path
certFile
private java.nio.file.Path
keyFile
private java.nio.file.attribute.FileTime
lastModifiedTimeCert
private java.nio.file.attribute.FileTime
lastModifiedTimeKey
private java.nio.file.attribute.FileTime
lastModifiedTimeRoot
private static java.util.logging.Logger
logger
private long
refreshIntervalInSeconds
private java.util.concurrent.ScheduledExecutorService
scheduledExecutorService
(package private) java.util.concurrent.ScheduledFuture<?>
scheduledFuture
private boolean
shutdown
private io.grpc.internal.TimeProvider
timeProvider
private java.nio.file.Path
trustFile
-
Constructor Summary
Constructors Constructor Description FileWatcherCertificateProvider(CertificateProvider.DistributorWatcher watcher, boolean notifyCertUpdates, java.lang.String certFile, java.lang.String keyFile, java.lang.String trustFile, long refreshIntervalInSeconds, java.util.concurrent.ScheduledExecutorService scheduledExecutorService, io.grpc.internal.TimeProvider timeProvider)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
checkAndReloadCertificates()
void
close()
Releases all resources and stop cert refreshes and watcher updates.private long
computeDelaySecondsToCertExpiry(java.security.cert.X509Certificate lastCert)
private void
generateErrorIfCurrentCertExpired(java.lang.Throwable t)
void
run()
private void
scheduleNextRefreshCertificate(long delayInSeconds)
void
start()
Starts the cert refresh and watcher update cycle.-
Methods inherited from class io.grpc.xds.internal.security.certprovider.CertificateProvider
getWatcher, isNotifyCertUpdates
-
-
-
-
Field Detail
-
logger
private static final java.util.logging.Logger logger
-
scheduledExecutorService
private final java.util.concurrent.ScheduledExecutorService scheduledExecutorService
-
timeProvider
private final io.grpc.internal.TimeProvider timeProvider
-
certFile
private final java.nio.file.Path certFile
-
keyFile
private final java.nio.file.Path keyFile
-
trustFile
private final java.nio.file.Path trustFile
-
refreshIntervalInSeconds
private final long refreshIntervalInSeconds
-
scheduledFuture
java.util.concurrent.ScheduledFuture<?> scheduledFuture
-
lastModifiedTimeCert
private java.nio.file.attribute.FileTime lastModifiedTimeCert
-
lastModifiedTimeKey
private java.nio.file.attribute.FileTime lastModifiedTimeKey
-
lastModifiedTimeRoot
private java.nio.file.attribute.FileTime lastModifiedTimeRoot
-
shutdown
private boolean shutdown
-
-
Constructor Detail
-
FileWatcherCertificateProvider
FileWatcherCertificateProvider(CertificateProvider.DistributorWatcher watcher, boolean notifyCertUpdates, java.lang.String certFile, java.lang.String keyFile, java.lang.String trustFile, long refreshIntervalInSeconds, java.util.concurrent.ScheduledExecutorService scheduledExecutorService, io.grpc.internal.TimeProvider timeProvider)
-
-
Method Detail
-
start
public void start()
Description copied from class:CertificateProvider
Starts the cert refresh and watcher update cycle.- Specified by:
start
in classCertificateProvider
-
close
public void close()
Description copied from class:CertificateProvider
Releases all resources and stop cert refreshes and watcher updates.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in classCertificateProvider
-
scheduleNextRefreshCertificate
private void scheduleNextRefreshCertificate(long delayInSeconds)
-
checkAndReloadCertificates
void checkAndReloadCertificates()
-
generateErrorIfCurrentCertExpired
private void generateErrorIfCurrentCertExpired(java.lang.Throwable t)
-
computeDelaySecondsToCertExpiry
private long computeDelaySecondsToCertExpiry(java.security.cert.X509Certificate lastCert)
-
run
public void run()
- Specified by:
run
in interfacejava.lang.Runnable
-
-