From 57366748294540873ce78faf72b1e595c3cb7676 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 8 Oct 2012 17:42:52 +0400 Subject: [PATCH] Transport classes refactoring --- .../socketio/transport/BaseTransport.java | 38 +++++++++++++++++++ .../transport/WebSocketTransport.java | 9 +---- .../transport/XHRPollingTransport.java | 17 ++------- 3 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/corundumstudio/socketio/transport/BaseTransport.java diff --git a/src/main/java/com/corundumstudio/socketio/transport/BaseTransport.java b/src/main/java/com/corundumstudio/socketio/transport/BaseTransport.java new file mode 100644 index 0000000..a1bb0fd --- /dev/null +++ b/src/main/java/com/corundumstudio/socketio/transport/BaseTransport.java @@ -0,0 +1,38 @@ +/** + * Copyright 2012 Nikita Koksharov + * + * 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 com.corundumstudio.socketio.transport; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.jboss.netty.channel.SimpleChannelUpstreamHandler; + +import com.corundumstudio.socketio.CompositeIterable; +import com.corundumstudio.socketio.Disconnectable; +import com.corundumstudio.socketio.SocketIOClient; + +public abstract class BaseTransport extends SimpleChannelUpstreamHandler implements Disconnectable { + + protected Iterable getAllClients(Collection clients) { + List> allClients = new ArrayList>(clients.size()); + for (BaseClient client : clients) { + allClients.add(client.getAllChildClients()); + } + return new CompositeIterable(allClients); + } + +} diff --git a/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java b/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java index a55416b..888d9fd 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java +++ b/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java @@ -53,7 +53,7 @@ import com.corundumstudio.socketio.handler.AuthorizeHandler; import com.corundumstudio.socketio.messages.PacketsMessage; @Sharable -public class WebSocketTransport extends SimpleChannelUpstreamHandler implements Disconnectable { +public class WebSocketTransport extends BaseTransport { public static final String NAME = "websocket"; @@ -181,13 +181,8 @@ public class WebSocketTransport extends SimpleChannelUpstreamHandler implements } public Iterable getAllClients() { - // TODO remove CPD! Collection clients = sessionId2Client.values(); - List> allClients = new ArrayList>(clients.size()); - for (WebSocketClient client : sessionId2Client.values()) { - allClients.add(client.getAllChildClients()); - } - return new CompositeIterable(allClients); + return getAllClients(clients); } } diff --git a/src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java b/src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java index a7fef7a..c23b252 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java +++ b/src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java @@ -16,9 +16,7 @@ package com.corundumstudio.socketio.transport; import java.io.IOException; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -32,7 +30,6 @@ import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.MessageEvent; -import org.jboss.netty.channel.SimpleChannelUpstreamHandler; import org.jboss.netty.handler.codec.http.HttpHeaders; import org.jboss.netty.handler.codec.http.HttpMethod; import org.jboss.netty.handler.codec.http.HttpRequest; @@ -40,12 +37,9 @@ import org.jboss.netty.handler.codec.http.QueryStringDecoder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.corundumstudio.socketio.CompositeIterable; import com.corundumstudio.socketio.Configuration; -import com.corundumstudio.socketio.Disconnectable; import com.corundumstudio.socketio.DisconnectableHub; import com.corundumstudio.socketio.SocketIOClient; -import com.corundumstudio.socketio.SocketIOPipelineFactory; import com.corundumstudio.socketio.ack.AckManager; import com.corundumstudio.socketio.handler.AuthorizeHandler; import com.corundumstudio.socketio.messages.PacketsMessage; @@ -60,13 +54,14 @@ import com.corundumstudio.socketio.scheduler.SchedulerKey; import com.corundumstudio.socketio.scheduler.SchedulerKey.Type; @Sharable -public class XHRPollingTransport extends SimpleChannelUpstreamHandler implements Disconnectable { +public class XHRPollingTransport extends BaseTransport { public static final String NAME = "xhr-polling"; private final Logger log = LoggerFactory.getLogger(getClass()); - private final Map sessionId2Client = new ConcurrentHashMap(); + private final Map sessionId2Client = + new ConcurrentHashMap(); private final CancelableScheduler scheduler; private final AckManager ackManager; @@ -222,11 +217,7 @@ public class XHRPollingTransport extends SimpleChannelUpstreamHandler implements public Iterable getAllClients() { Collection clients = sessionId2Client.values(); - List> allClients = new ArrayList>(clients.size()); - for (XHRPollingClient client : sessionId2Client.values()) { - allClients.add(client.getAllChildClients()); - } - return new CompositeIterable(allClients); + return getAllClients(clients); } }