aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2012-10-31 22:05:09 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2012-10-31 22:05:09 +1300
commit68ef12c1844fd692aca86a848d268accadbe67be (patch)
treeb0ce5cc8bd2d2bff09338b8452578ecb22d0f727
parent4ad61d312d4e1c42de2269f1e70f2d556375a337 (diff)
downloadtrackermap-server-68ef12c1844fd692aca86a848d268accadbe67be.tar.gz
trackermap-server-68ef12c1844fd692aca86a848d268accadbe67be.tar.bz2
trackermap-server-68ef12c1844fd692aca86a848d268accadbe67be.zip
Single channel factory (fix #68)
-rw-r--r--src/org/traccar/GlobalChannelFactory.java40
-rw-r--r--src/org/traccar/TrackerServer.java10
2 files changed, 43 insertions, 7 deletions
diff --git a/src/org/traccar/GlobalChannelFactory.java b/src/org/traccar/GlobalChannelFactory.java
new file mode 100644
index 000000000..0c4d11275
--- /dev/null
+++ b/src/org/traccar/GlobalChannelFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2012 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 java.util.concurrent.Executors;
+import org.jboss.netty.channel.ChannelFactory;
+import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
+
+/**
+ * Channel factory
+ */
+public class GlobalChannelFactory {
+
+ private static ChannelFactory instance = null;
+
+ private GlobalChannelFactory() {
+ }
+
+ public static ChannelFactory getFactory() {
+ if(instance == null) {
+ instance = new NioServerSocketChannelFactory(
+ Executors.newCachedThreadPool(),
+ Executors.newCachedThreadPool());
+ }
+ return instance;
+ }
+}
diff --git a/src/org/traccar/TrackerServer.java b/src/org/traccar/TrackerServer.java
index 488186606..a29386c05 100644
--- a/src/org/traccar/TrackerServer.java
+++ b/src/org/traccar/TrackerServer.java
@@ -17,14 +17,12 @@ package org.traccar;
import java.net.InetSocketAddress;
import java.nio.ByteOrder;
-import java.util.concurrent.Executors;
import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.buffer.HeapChannelBufferFactory;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.group.ChannelGroup;
import org.jboss.netty.channel.group.ChannelGroupFuture;
import org.jboss.netty.channel.group.DefaultChannelGroup;
-import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
/**
* Tracker server
@@ -34,18 +32,16 @@ public class TrackerServer extends ServerBootstrap {
/**
* Initialization
*/
- private void init(Integer port, Integer threadPoolSize) {
+ private void init(Integer port) {
setPort(port);
// Create channel factory
- setFactory(new NioServerSocketChannelFactory(
- Executors.newCachedThreadPool(),
- Executors.newCachedThreadPool()));
+ setFactory(GlobalChannelFactory.getFactory());
}
public TrackerServer(Integer port) {
- init(port, 1);
+ init(port);
}
/**