From: Robert Varga Date: Sun, 6 Apr 2014 16:20:58 +0000 (+0200) Subject: BUG-633: allow bootstrap customization X-Git-Tag: autorelease-tag-v20140601202136_82eb3f9~268^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=980942efbb60ec417a83ea77f60767f7b21c1bd6;ds=sidebyside 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 --- 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; - } /**