aboutsummaryrefslogtreecommitdiff
path: root/src/org
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2015-11-18 09:59:12 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2015-11-18 09:59:12 +1300
commita97966cb0335c5a8841bd0791871253a4f780d0b (patch)
tree37909ce539d2e9dc29dacbb62a555ccda00b44f6 /src/org
parentdfaa98a4a02f568922684abce56317d6afda5322 (diff)
parent65361d8f0359fe2c4e02e76892a565683743b796 (diff)
downloadtraccar-server-a97966cb0335c5a8841bd0791871253a4f780d0b.tar.gz
traccar-server-a97966cb0335c5a8841bd0791871253a4f780d0b.tar.bz2
traccar-server-a97966cb0335c5a8841bd0791871253a4f780d0b.zip
Merge pull request #1534 from ivanfmartinez/master
Add support for configurable handlers
Diffstat (limited to 'src/org')
-rw-r--r--src/org/traccar/BasePipelineFactory.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/org/traccar/BasePipelineFactory.java b/src/org/traccar/BasePipelineFactory.java
index c0952db86..7273d51cf 100644
--- a/src/org/traccar/BasePipelineFactory.java
+++ b/src/org/traccar/BasePipelineFactory.java
@@ -19,6 +19,7 @@ import java.net.InetSocketAddress;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.jboss.netty.channel.ChannelEvent;
+import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
@@ -130,6 +131,9 @@ public abstract class BasePipelineFactory implements ChannelPipelineFactory {
pipeline.addLast("geocoder", reverseGeocoderHandler);
}
pipeline.addLast("remoteAddress", new RemoteAddressHandler());
+
+ addDynamicHandlers(pipeline, "extraHandler", "extra.handlers");
+
if (Context.getDataManager() != null) {
pipeline.addLast("dataHandler", new DefaultDataHandler());
}
@@ -140,4 +144,19 @@ public abstract class BasePipelineFactory implements ChannelPipelineFactory {
return pipeline;
}
+ private void addDynamicHandlers(ChannelPipeline pipeline, String id, String key) {
+ final String[] extraHandlers = Context.getConfig().getString(key,"").split(",");
+ int i = 0;
+ for (String extraHandler : extraHandlers) {
+ try {
+ Class c = Class.forName(extraHandler);
+ i++;
+ pipeline.addLast(id + "."+i, (ChannelHandler)c.newInstance());
+ } catch (Throwable e) {
+ Log.error("Error loading handler : " + extraHandler + " " + e);
+ }
+ }
+
+ }
+
}