OpenSslCachingKeyMaterialProvider Class — netty Architecture
Architecture documentation for the OpenSslCachingKeyMaterialProvider class in OpenSslCachingKeyMaterialProvider.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 027fa0d4_ee53_49e1_2f43_14281c068aba["OpenSslCachingKeyMaterialProvider"] 1d7d42cf_90b5_ed83_955d_121858a9a5ff["OpenSslCachingKeyMaterialProvider.java"] 027fa0d4_ee53_49e1_2f43_14281c068aba -->|defined in| 1d7d42cf_90b5_ed83_955d_121858a9a5ff db781f07_f1c5_7ce3_36ad_68779d448dad["OpenSslCachingKeyMaterialProvider()"] 027fa0d4_ee53_49e1_2f43_14281c068aba -->|method| db781f07_f1c5_7ce3_36ad_68779d448dad 39a52764_8b0c_f8e7_cb47_93303efaebc2["OpenSslKeyMaterial()"] 027fa0d4_ee53_49e1_2f43_14281c068aba -->|method| 39a52764_8b0c_f8e7_cb47_93303efaebc2 05bd6cca_0bf1_2ac2_47a4_3c35a0508639["destroy()"] 027fa0d4_ee53_49e1_2f43_14281c068aba -->|method| 05bd6cca_0bf1_2ac2_47a4_3c35a0508639
Relationship Graph
Source Code
handler/src/main/java/io/netty/handler/ssl/OpenSslCachingKeyMaterialProvider.java lines 29–79
final class OpenSslCachingKeyMaterialProvider extends OpenSslKeyMaterialProvider {
private final int maxCachedEntries;
private volatile boolean full;
private final ConcurrentMap<String, OpenSslKeyMaterial> cache = new ConcurrentHashMap<String, OpenSslKeyMaterial>();
OpenSslCachingKeyMaterialProvider(X509KeyManager keyManager, String password, int maxCachedEntries) {
super(keyManager, password);
this.maxCachedEntries = maxCachedEntries;
}
@Override
OpenSslKeyMaterial chooseKeyMaterial(ByteBufAllocator allocator, String alias) throws Exception {
OpenSslKeyMaterial material = cache.get(alias);
if (material == null) {
material = super.chooseKeyMaterial(allocator, alias);
if (material == null) {
// No keymaterial should be used.
return null;
}
if (full) {
return material;
}
if (cache.size() > maxCachedEntries) {
full = true;
// Do not cache...
return material;
}
OpenSslKeyMaterial old = cache.putIfAbsent(alias, material);
if (old != null) {
material.release();
material = old;
}
}
// We need to call retain() as we want to always have at least a refCnt() of 1 before destroy() was called.
return material.retain();
}
@Override
void destroy() {
// Remove and release all entries.
do {
Iterator<OpenSslKeyMaterial> iterator = cache.values().iterator();
while (iterator.hasNext()) {
iterator.next().release();
iterator.remove();
}
} while (!cache.isEmpty());
}
}
Source
Frequently Asked Questions
What is the OpenSslCachingKeyMaterialProvider class?
OpenSslCachingKeyMaterialProvider is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/OpenSslCachingKeyMaterialProvider.java.
Where is OpenSslCachingKeyMaterialProvider defined?
OpenSslCachingKeyMaterialProvider is defined in handler/src/main/java/io/netty/handler/ssl/OpenSslCachingKeyMaterialProvider.java at line 29.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free