From d7f4e49f89a878008101b58eaa207f89068cabba Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 24 Oct 2018 14:10:00 +0400 Subject: Search unwrapped handlers by class --- src/org/traccar/BasePipelineFactory.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/org/traccar/BasePipelineFactory.java') diff --git a/src/org/traccar/BasePipelineFactory.java b/src/org/traccar/BasePipelineFactory.java index d511af214..401c42d8b 100644 --- a/src/org/traccar/BasePipelineFactory.java +++ b/src/org/traccar/BasePipelineFactory.java @@ -44,6 +44,7 @@ import org.traccar.processing.ComputedAttributesHandler; import org.traccar.processing.CopyAttributesHandler; import java.net.InetSocketAddress; +import java.util.Map; public abstract class BasePipelineFactory extends ChannelInitializer { @@ -241,6 +242,21 @@ public abstract class BasePipelineFactory extends ChannelInitializer { } } + public static T getHandler(ChannelPipeline pipeline, Class clazz) { + for (Map.Entry handlerEntry : pipeline) { + ChannelHandler handler = handlerEntry.getValue(); + if (handler instanceof WrapperInboundHandler) { + handler = ((WrapperInboundHandler) handler).getWrappedHandler(); + } else if (handler instanceof WrapperOutboundHandler) { + handler = ((WrapperOutboundHandler) handler).getWrappedHandler(); + } + if (clazz.isAssignableFrom(handler.getClass())) { + return (T) handler; + } + } + return null; + } + @Override protected void initChannel(Channel channel) throws Exception { final ChannelPipeline pipeline = channel.pipeline(); -- cgit v1.2.3