aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/DetectorHandler.java66
-rw-r--r--src/org/traccar/ServerManager.java21
-rw-r--r--src/org/traccar/TrackerEventHandler.java1
-rw-r--r--src/org/traccar/TrackerServer.java4
4 files changed, 90 insertions, 2 deletions
diff --git a/src/org/traccar/DetectorHandler.java b/src/org/traccar/DetectorHandler.java
new file mode 100644
index 000000000..1fc5062e3
--- /dev/null
+++ b/src/org/traccar/DetectorHandler.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.traccar;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.channel.*;
+import org.jboss.netty.handler.codec.frame.FrameDecoder;
+import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler;
+import org.jboss.netty.handler.timeout.IdleStateEvent;
+import org.traccar.database.DataManager;
+import org.traccar.helper.ChannelBufferTools;
+import org.traccar.helper.Log;
+import org.traccar.model.Position;
+
+import java.util.List;
+
+public class DetectorHandler extends SimpleChannelHandler {
+
+ private List<TrackerServer> serverList;
+
+ DetectorHandler(List<TrackerServer> serverList) {
+ this.serverList = serverList;
+ }
+
+ @Override
+ public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
+
+ if (e.getMessage() instanceof ChannelBuffer) {
+ ChannelBuffer buf = (ChannelBuffer) e.getMessage();
+
+ for (TrackerServer server : serverList) {
+ try {
+ ChannelPipeline pipeline = server.getPipelineFactory().getPipeline();
+
+ if (pipeline.get("stringDecoder") != null) {
+
+ /*ChannelBuffer tmp = buf.duplicate();
+ FrameDecoder frameDecoder = (FrameDecoder) pipeline.get("frameDecoder");
+ if (frameDecoder != null) {
+ tmp = frameDecoder.
+ }*/
+
+
+
+ }
+ } catch(Exception error) {
+ Log.warning(error);
+ }
+ }
+ }
+ }
+
+}
diff --git a/src/org/traccar/ServerManager.java b/src/org/traccar/ServerManager.java
index 6734d343d..fe5745bc8 100644
--- a/src/org/traccar/ServerManager.java
+++ b/src/org/traccar/ServerManager.java
@@ -179,7 +179,9 @@ public class ServerManager {
initTramigoServer("tramigo");
initTr900Server("tr900");
initArdi01Server("ardi01");
-
+
+ initProtocolDetector();
+
// Initialize web server
if (Boolean.valueOf(properties.getProperty("http.enable"))) {
webServer = new WebServer(properties, dataManager.getDataSource());
@@ -233,6 +235,23 @@ public class ServerManager {
return false;
}
+ private void initProtocolDetector() throws SQLException {
+ String protocol = "detector";
+ if (isProtocolEnabled(properties, protocol)) {
+ serverList.add(new TrackerServer(this, new ServerBootstrap(), protocol) {
+ @Override
+ protected void addSpecificHandlers(ChannelPipeline pipeline) {
+ pipeline.addLast("detectorHandler", new DetectorHandler(serverList));
+ }
+ });
+ serverList.add(new TrackerServer(this, new ConnectionlessBootstrap(), protocol) {
+ @Override
+ protected void addSpecificHandlers(ChannelPipeline pipeline) {
+ pipeline.addLast("detectorHandler", new DetectorHandler(serverList));
+ }
+ });
+ }
+ }
private void initGps103Server(final String protocol) throws SQLException {
if (isProtocolEnabled(properties, protocol)) {
serverList.add(new TrackerServer(this, new ServerBootstrap(), protocol) {
diff --git a/src/org/traccar/TrackerEventHandler.java b/src/org/traccar/TrackerEventHandler.java
index 878b3ba70..32e24c971 100644
--- a/src/org/traccar/TrackerEventHandler.java
+++ b/src/org/traccar/TrackerEventHandler.java
@@ -35,7 +35,6 @@ public class TrackerEventHandler extends IdleStateAwareChannelHandler {
private DataManager dataManager;
TrackerEventHandler(DataManager newDataManager) {
- super();
dataManager = newDataManager;
}
diff --git a/src/org/traccar/TrackerServer.java b/src/org/traccar/TrackerServer.java
index 34f302340..7ae1c8498 100644
--- a/src/org/traccar/TrackerServer.java
+++ b/src/org/traccar/TrackerServer.java
@@ -114,6 +114,10 @@ public abstract class TrackerServer {
bootstrap.setPipelineFactory(pipelineFactory);
}
+ public ChannelPipelineFactory getPipelineFactory() {
+ return bootstrap.getPipelineFactory();
+ }
+
/**
* Start server
*/