From 980942efbb60ec417a83ea77f60767f7b21c1bd6 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sun, 6 Apr 2014 18:20:58 +0200 Subject: [PATCH] BUG-633: allow bootstrap customization Downstream projects may need to customize Bootstrap/ServerBootstrap instances before they are used. Create two protected methods which can be overridden to gain access to the instances before they are used. Change-Id: Ibb45c7b99847cbe2fe8b90e8d1bf125c66a18e0d Signed-off-by: Robert Varga --- .../framework/AbstractDispatcher.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/opendaylight/commons/protocol-framework/src/main/java/org/opendaylight/protocol/framework/AbstractDispatcher.java b/opendaylight/commons/protocol-framework/src/main/java/org/opendaylight/protocol/framework/AbstractDispatcher.java index e90af73785..5e55cddf8e 100644 --- a/opendaylight/commons/protocol-framework/src/main/java/org/opendaylight/protocol/framework/AbstractDispatcher.java +++ b/opendaylight/commons/protocol-framework/src/main/java/org/opendaylight/protocol/framework/AbstractDispatcher.java @@ -89,11 +89,23 @@ public abstract class AbstractDispatcher, L extends }); b.childOption(ChannelOption.SO_KEEPALIVE, true); + customizeBootstrap(b); + // Bind and start to accept incoming connections. final ChannelFuture f = b.bind(address); LOG.debug("Initiated server {} at {}.", f, address); return f; + } + /** + * Customize a server bootstrap before the server is created. This allows + * subclasses to assign non-default server options before the server is + * created. + * + * @param b Server bootstrap + */ + protected void customizeBootstrap(final ServerBootstrap b) { + // The default is a no-op } /** @@ -116,11 +128,25 @@ public abstract class AbstractDispatcher, L extends initializer.initializeChannel(ch, p); } }); + + customizeBootstrap(b); + p.connect(); LOG.debug("Client created."); return p; } + /** + * Customize a client bootstrap before the connection is attempted. This + * allows subclasses to assign non-default options before the client is + * created. + * + * @param b Client bootstrap + */ + protected void customizeBootstrap(final Bootstrap b) { + // The default is a no-op + } + /** * Creates a client. * @@ -138,7 +164,6 @@ public abstract class AbstractDispatcher, L extends p.connect(); return p; - } /** -- 2.36.6