aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2015-06-30 09:51:23 +1200
committerAnton Tananaev <anton.tananaev@gmail.com>2015-06-30 09:51:23 +1200
commit727e7bfad908abd899d1114c5405f9bf69b47ebc (patch)
tree5c66197f72f4cbb42a1b5cecd5a71fed4b2ed757 /src
parent54c54703d66e8991472c1f7476ba4acb424b27d9 (diff)
downloadtraccar-server-727e7bfad908abd899d1114c5405f9bf69b47ebc.tar.gz
traccar-server-727e7bfad908abd899d1114c5405f9bf69b47ebc.tar.bz2
traccar-server-727e7bfad908abd899d1114c5405f9bf69b47ebc.zip
Active devices in connection manager
Diffstat (limited to 'src')
-rw-r--r--src/org/traccar/BasePipelineFactory.java5
-rw-r--r--src/org/traccar/BaseProtocolDecoder.java2
-rw-r--r--src/org/traccar/Context.java12
-rw-r--r--src/org/traccar/TrackerEventHandler.java2
-rw-r--r--src/org/traccar/database/ActiveDevice.java17
-rw-r--r--src/org/traccar/database/ConnectionManager.java (renamed from src/org/traccar/database/DataCache.java)19
-rw-r--r--src/org/traccar/database/DataManager.java12
-rw-r--r--src/org/traccar/http/AsyncServlet.java10
-rw-r--r--src/org/traccar/http/CommandsServlet.java4
9 files changed, 48 insertions, 35 deletions
diff --git a/src/org/traccar/BasePipelineFactory.java b/src/org/traccar/BasePipelineFactory.java
index 2414d7a63..c4ca8f47c 100644
--- a/src/org/traccar/BasePipelineFactory.java
+++ b/src/org/traccar/BasePipelineFactory.java
@@ -21,13 +21,8 @@ import org.jboss.netty.buffer.ChannelBuffers;
import org.jboss.netty.channel.*;
import org.jboss.netty.handler.logging.LoggingHandler;
import org.jboss.netty.handler.timeout.IdleStateHandler;
-import org.traccar.database.DataCache;
-import org.traccar.database.DataManager;
-import org.traccar.geocode.ReverseGeocoder;
import org.traccar.helper.Log;
-import javax.crypto.Cipher;
-
public abstract class BasePipelineFactory implements ChannelPipelineFactory {
private final TrackerServer server;
diff --git a/src/org/traccar/BaseProtocolDecoder.java b/src/org/traccar/BaseProtocolDecoder.java
index 6e9efd830..730c3a54c 100644
--- a/src/org/traccar/BaseProtocolDecoder.java
+++ b/src/org/traccar/BaseProtocolDecoder.java
@@ -53,7 +53,7 @@ public abstract class BaseProtocolDecoder extends ExtendedObjectDecoder {
Device device = Context.getDataManager().getDeviceByUniqueId(uniqueId);
if (device != null) {
deviceId = device.getId();
- Context.getDataManager().setActiveDevice(device.getUniqueId(), protocol, channel, remoteAddress);
+ Context.getConnectionManager().setActiveDevice(device.getUniqueId(), protocol, channel, remoteAddress);
return true;
} else {
deviceId = 0;
diff --git a/src/org/traccar/Context.java b/src/org/traccar/Context.java
index 9d65f3e64..d8024d066 100644
--- a/src/org/traccar/Context.java
+++ b/src/org/traccar/Context.java
@@ -17,7 +17,7 @@ package org.traccar;
import java.io.FileInputStream;
import java.util.Properties;
-import org.traccar.database.DataCache;
+import org.traccar.database.ConnectionManager;
import org.traccar.database.DataManager;
import org.traccar.database.PermissionsManager;
import org.traccar.geocode.GisgraphyReverseGeocoder;
@@ -47,10 +47,10 @@ public class Context {
return dataManager;
}
- private static DataCache dataCache;
+ private static ConnectionManager connectionManager;
- public static DataCache getDataCache() {
- return dataCache;
+ public static ConnectionManager getConnectionManager() {
+ return connectionManager;
}
private static PermissionsManager permissionsManager;
@@ -90,7 +90,7 @@ public class Context {
}
dataManager = new DataManager(properties);
- dataCache = new DataCache();
+ connectionManager = new ConnectionManager();
if (!Boolean.valueOf(properties.getProperty("web.old"))) {
permissionsManager = new PermissionsManager();
}
@@ -113,7 +113,7 @@ public class Context {
serverManager = new ServerManager();
dataManager.initDatabaseSchema();
- dataCache.init(dataManager);
+ connectionManager.init(dataManager);
serverManager.init();
}
diff --git a/src/org/traccar/TrackerEventHandler.java b/src/org/traccar/TrackerEventHandler.java
index eee866a6d..31e6fb5cb 100644
--- a/src/org/traccar/TrackerEventHandler.java
+++ b/src/org/traccar/TrackerEventHandler.java
@@ -65,7 +65,7 @@ public class TrackerEventHandler extends IdleStateAwareChannelHandler {
if (lastPostition != null) {
try {
Context.getDataManager().updateLatestPosition(lastPostition);
- Context.getDataCache().update(lastPostition);
+ Context.getConnectionManager().update(lastPostition);
} catch (Exception error) {
Log.warning(error);
}
diff --git a/src/org/traccar/database/ActiveDevice.java b/src/org/traccar/database/ActiveDevice.java
index 58c5d210d..f94e1b12a 100644
--- a/src/org/traccar/database/ActiveDevice.java
+++ b/src/org/traccar/database/ActiveDevice.java
@@ -1,3 +1,18 @@
+/*
+ * 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.database;
import org.jboss.netty.channel.Channel;
@@ -7,6 +22,7 @@ import org.traccar.command.GpsCommand;
import java.net.SocketAddress;
public class ActiveDevice {
+
private String uniqueId;
private Protocol protocol;
private Channel channel;
@@ -34,4 +50,5 @@ public class ActiveDevice {
public void write(Object message) {
getChannel().write(message, remoteAddress);
}
+
}
diff --git a/src/org/traccar/database/DataCache.java b/src/org/traccar/database/ConnectionManager.java
index fc29f0e2e..7ef190fcf 100644
--- a/src/org/traccar/database/DataCache.java
+++ b/src/org/traccar/database/ConnectionManager.java
@@ -15,6 +15,7 @@
*/
package org.traccar.database;
+import java.net.SocketAddress;
import java.sql.SQLException;
import java.util.Collection;
import java.util.HashMap;
@@ -23,11 +24,15 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
+
+import org.jboss.netty.channel.Channel;
+import org.traccar.Protocol;
import org.traccar.helper.Log;
import org.traccar.model.Position;
-public class DataCache {
-
+public class ConnectionManager {
+
+ private Map<String, ActiveDevice> activeDevices = new HashMap<String, ActiveDevice>();
private final Map<Long, Position> positions = new HashMap<Long, Position>();
private final Map<Long, Set<DataCacheListener>> listeners = new HashMap<Long, Set<DataCacheListener>>();
@@ -41,7 +46,15 @@ public class DataCache {
Log.warning(error);
}
}
-
+
+ public void setActiveDevice(String uniqueId, Protocol protocol, Channel channel, SocketAddress remoteAddress) {
+ activeDevices.put(uniqueId, new ActiveDevice(uniqueId, protocol, channel, remoteAddress));
+ }
+
+ public ActiveDevice getActiveDevice(String uniqueId) {
+ return activeDevices.get(uniqueId);
+ }
+
public synchronized void update(Position position) {
long deviceId = position.getDeviceId();
positions.put(deviceId, position);
diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java
index 62275af3c..07e50ff5d 100644
--- a/src/org/traccar/database/DataManager.java
+++ b/src/org/traccar/database/DataManager.java
@@ -17,7 +17,6 @@ package org.traccar.database;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.io.File;
-import java.net.SocketAddress;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
@@ -34,9 +33,7 @@ import java.util.Properties;
import javax.naming.InitialContext;
import javax.sql.DataSource;
-import org.jboss.netty.channel.Channel;
import org.traccar.Context;
-import org.traccar.Protocol;
import org.traccar.helper.DriverDelegate;
import org.traccar.helper.Log;
import org.traccar.http.AsyncServlet;
@@ -56,7 +53,6 @@ public class DataManager {
private DataSource dataSource;
private final Map<String, Device> devices = new HashMap<String, Device>();
- private Map<String, ActiveDevice> activeDevices = new HashMap<String, ActiveDevice>();
private long devicesLastUpdate;
private long devicesRefreshDelay;
@@ -79,14 +75,6 @@ public class DataManager {
return dataSource;
}
- public void setActiveDevice(String uniqueId, Protocol protocol, Channel channel, SocketAddress remoteAddress) {
- this.activeDevices.put(uniqueId, new ActiveDevice(uniqueId, protocol, channel, remoteAddress));
- }
-
- public ActiveDevice getActiveDevice(String uniqueId) {
- return this.activeDevices.get(uniqueId);
- }
-
private void initDatabase(Properties properties) throws Exception {
String jndiName = properties.getProperty("database.jndi");
diff --git a/src/org/traccar/http/AsyncServlet.java b/src/org/traccar/http/AsyncServlet.java
index 99929731f..e9cb35840 100644
--- a/src/org/traccar/http/AsyncServlet.java
+++ b/src/org/traccar/http/AsyncServlet.java
@@ -36,7 +36,7 @@ import org.jboss.netty.util.Timeout;
import org.jboss.netty.util.TimerTask;
import org.traccar.Context;
import org.traccar.GlobalTimer;
-import org.traccar.database.DataCache;
+import org.traccar.database.ConnectionManager;
import org.traccar.helper.Log;
import org.traccar.model.Position;
import org.traccar.model.User;
@@ -76,19 +76,19 @@ public class AsyncServlet extends HttpServlet {
this.userId = userId;
this.devices.addAll(devices);
- Collection<Position> initialPositions = Context.getDataCache().getInitialState(devices);
+ Collection<Position> initialPositions = Context.getConnectionManager().getInitialState(devices);
for (Position position : initialPositions) {
positions.put(position.getDeviceId(), position);
}
- Context.getDataCache().addListener(devices, dataListener);
+ Context.getConnectionManager().addListener(devices, dataListener);
}
public boolean hasDevice(long deviceId) {
return devices.contains(deviceId);
}
- private final DataCache.DataCacheListener dataListener = new DataCache.DataCacheListener() {
+ private final ConnectionManager.DataCacheListener dataListener = new ConnectionManager.DataCacheListener() {
@Override
public void onUpdate(Position position) {
synchronized (AsyncSession.this) {
@@ -112,7 +112,7 @@ public class AsyncServlet extends HttpServlet {
public void run(Timeout tmt) throws Exception {
synchronized (AsyncSession.this) {
logEvent("sessionTimeout");
- Context.getDataCache().removeListener(devices, dataListener);
+ Context.getConnectionManager().removeListener(devices, dataListener);
synchronized (asyncSessions) {
asyncSessions.remove(userId);
}
diff --git a/src/org/traccar/http/CommandsServlet.java b/src/org/traccar/http/CommandsServlet.java
index f68a7a74e..bf40b79e6 100644
--- a/src/org/traccar/http/CommandsServlet.java
+++ b/src/org/traccar/http/CommandsServlet.java
@@ -31,7 +31,7 @@ public class CommandsServlet extends BaseServlet {
String uniqueId = command.getUniqueId();
- ActiveDevice activeDevice = Context.getDataManager().getActiveDevice(uniqueId);
+ ActiveDevice activeDevice = Context.getConnectionManager().getActiveDevice(uniqueId);
if(activeDevice == null) {
throw new RuntimeException("The device has not yet registered to the server");
}
@@ -45,7 +45,7 @@ public class CommandsServlet extends BaseServlet {
JsonObject json = Json.createReader(req.getReader()).readObject();
String uniqueId = json.getString("uniqueId");
- ActiveDevice activeDevice = Context.getDataManager().getActiveDevice(uniqueId);
+ ActiveDevice activeDevice = Context.getConnectionManager().getActiveDevice(uniqueId);
if(activeDevice == null) {
throw new RuntimeException("The device has not yet registered to the server");
}