From 53531a7aa32e040bed6e07f48635988ea791ae07 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 28 Jun 2021 19:53:47 +0200 Subject: [PATCH] Convert netty-threadgroup-config to OSGi DS This is a rather simple wiring, use OSGi DS instead of blueprint. Change-Id: I49686821b3d7f70ae058d3362b16d9c6acae8d03 Signed-off-by: Robert Varga --- .../config/netty-threadgroup-config/pom.xml | 4 ++ ...loseable.java => AbstractGlobalGroup.java} | 19 ++------- .../yang/netty/threadgroup/Configuration.java | 20 +++++++++ .../netty/threadgroup/GlobalBossGroup.java | 28 +++++++++++++ .../netty/threadgroup/GlobalWorkerGroup.java | 28 +++++++++++++ .../yang/netty/threadgroup/package-info.java | 9 ++++ .../OSGI-INF/blueprint/netty-threadgroup.xml | 41 ------------------- 7 files changed, 93 insertions(+), 56 deletions(-) rename opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/{NioEventLoopGroupCloseable.java => AbstractGlobalGroup.java} (50%) create mode 100644 opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/Configuration.java create mode 100644 opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/GlobalBossGroup.java create mode 100644 opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/GlobalWorkerGroup.java create mode 100644 opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/package-info.java delete mode 100644 opendaylight/config/netty-threadgroup-config/src/main/resources/OSGI-INF/blueprint/netty-threadgroup.xml diff --git a/opendaylight/config/netty-threadgroup-config/pom.xml b/opendaylight/config/netty-threadgroup-config/pom.xml index 690c490687..be77bad7af 100644 --- a/opendaylight/config/netty-threadgroup-config/pom.xml +++ b/opendaylight/config/netty-threadgroup-config/pom.xml @@ -21,5 +21,9 @@ io.netty netty-transport + + org.osgi + osgi.cmpn + diff --git a/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/NioEventLoopGroupCloseable.java b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/AbstractGlobalGroup.java similarity index 50% rename from opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/NioEventLoopGroupCloseable.java rename to opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/AbstractGlobalGroup.java index 1b80ec3b26..ca4bc29283 100644 --- a/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/NioEventLoopGroupCloseable.java +++ b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/AbstractGlobalGroup.java @@ -10,24 +10,13 @@ package org.opendaylight.controller.config.yang.netty.threadgroup; import io.netty.channel.nio.NioEventLoopGroup; import java.util.concurrent.TimeUnit; -public final class NioEventLoopGroupCloseable extends NioEventLoopGroup implements AutoCloseable { - private NioEventLoopGroupCloseable(final int threadCount) { - super(threadCount); - } - - private NioEventLoopGroupCloseable() { +abstract class AbstractGlobalGroup extends NioEventLoopGroup implements AutoCloseable { + AbstractGlobalGroup(final int threadCount) { + super(threadCount < 0 ? 0 : threadCount); } @Override - public void close() { + public final void close() { shutdownGracefully(0, 1, TimeUnit.SECONDS); } - - public static NioEventLoopGroupCloseable newInstance(final Integer threadCount) { - if (threadCount == null || threadCount <= 0) { - return new NioEventLoopGroupCloseable(); - } - - return new NioEventLoopGroupCloseable(threadCount); - } } diff --git a/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/Configuration.java b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/Configuration.java new file mode 100644 index 0000000000..174b44fdf2 --- /dev/null +++ b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/Configuration.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2021 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.yang.netty.threadgroup; + +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; + +@ObjectClassDefinition(pid = "org.opendaylight.netty.threadgroup") +public @interface Configuration { + @AttributeDefinition(name = "global-boss-group-thread-count") + int bossThreadCount() default 0; + + @AttributeDefinition(name = "global-worker-group-thread-count") + int workerThreadCount() default 0; +} diff --git a/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/GlobalBossGroup.java b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/GlobalBossGroup.java new file mode 100644 index 0000000000..5b461848e9 --- /dev/null +++ b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/GlobalBossGroup.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2021 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.yang.netty.threadgroup; + +import io.netty.channel.EventLoopGroup; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.metatype.annotations.Designate; + +@Component(immediate = true, service = EventLoopGroup.class, property = "type=global-boss-group") +@Designate(ocd = Configuration.class) +public final class GlobalBossGroup extends AbstractGlobalGroup { + @Activate + public GlobalBossGroup(final Configuration configuration) { + super(configuration.bossThreadCount()); + } + + @Deactivate + void deactivate() { + close(); + } +} diff --git a/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/GlobalWorkerGroup.java b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/GlobalWorkerGroup.java new file mode 100644 index 0000000000..4a9f46ed6b --- /dev/null +++ b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/GlobalWorkerGroup.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2021 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.yang.netty.threadgroup; + +import io.netty.channel.EventLoopGroup; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.metatype.annotations.Designate; + +@Component(immediate = true, service = EventLoopGroup.class, property = "type=global-worker-group") +@Designate(ocd = Configuration.class) +public final class GlobalWorkerGroup extends AbstractGlobalGroup { + @Activate + public GlobalWorkerGroup(final Configuration configuration) { + super(configuration.workerThreadCount()); + } + + @Deactivate + void deactivate() { + close(); + } +} diff --git a/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/package-info.java b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/package-info.java new file mode 100644 index 0000000000..f5b65ee83a --- /dev/null +++ b/opendaylight/config/netty-threadgroup-config/src/main/java/org/opendaylight/controller/config/yang/netty/threadgroup/package-info.java @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2021 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +@org.osgi.service.component.annotations.RequireServiceComponentRuntime +package org.opendaylight.controller.config.yang.netty.threadgroup; \ No newline at end of file diff --git a/opendaylight/config/netty-threadgroup-config/src/main/resources/OSGI-INF/blueprint/netty-threadgroup.xml b/opendaylight/config/netty-threadgroup-config/src/main/resources/OSGI-INF/blueprint/netty-threadgroup.xml deleted file mode 100644 index 77e2556492..0000000000 --- a/opendaylight/config/netty-threadgroup-config/src/main/resources/OSGI-INF/blueprint/netty-threadgroup.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 2.36.6