Browse Source

SocketIOClient.getTransport method added. Issue #46

master
Nikita 12 years ago
parent
commit
842234ac39
  1. 7
      src/main/java/com/corundumstudio/socketio/SocketIOClient.java
  2. 9
      src/main/java/com/corundumstudio/socketio/transport/BaseClient.java
  3. 6
      src/main/java/com/corundumstudio/socketio/transport/FlashSocketTransport.java
  4. 5
      src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java
  5. 7
      src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java
  6. 12
      src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java
  7. 5
      src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java
  8. 3
      src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java

7
src/main/java/com/corundumstudio/socketio/SocketIOClient.java

@ -23,6 +23,13 @@ import com.corundumstudio.socketio.parser.Packet;
public interface SocketIOClient extends ClientOperations {
/**
* Current client transport protocol
*
* @return transport protocol
*/
Transport getTransport();
/**
* Send event with ack callback
*

9
src/main/java/com/corundumstudio/socketio/transport/BaseClient.java

@ -27,6 +27,7 @@ import org.jboss.netty.channel.ChannelFutureListener;
import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.namespace.Namespace;
import com.corundumstudio.socketio.parser.Packet;
@ -47,12 +48,18 @@ public abstract class BaseClient {
private final DisconnectableHub disconnectable;
private final AckManager ackManager;
private final UUID sessionId;
private final Transport transport;
protected Channel channel;
public BaseClient(UUID sessionId, AckManager ackManager, DisconnectableHub disconnectable) {
public BaseClient(UUID sessionId, AckManager ackManager, DisconnectableHub disconnectable, Transport transport) {
this.sessionId = sessionId;
this.ackManager = ackManager;
this.disconnectable = disconnectable;
this.transport = transport;
}
public Transport getTransport() {
return transport;
}
public abstract ChannelFuture send(Packet packet);

6
src/main/java/com/corundumstudio/socketio/transport/FlashSocketTransport.java

@ -21,6 +21,7 @@ import org.jboss.netty.channel.ChannelHandler.Sharable;
import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.HeartbeatHandler;
import com.corundumstudio.socketio.SocketIOPipelineFactory;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.handler.AuthorizeHandler;
@ -36,6 +37,11 @@ public class FlashSocketTransport extends WebSocketTransport {
path = connectPath + NAME;
}
@Override
protected Transport getTransport() {
return Transport.FLASHSOCKET;
}
@Override
protected void removeHandler(ChannelPipeline pipeline) {
pipeline.remove(SocketIOPipelineFactory.WEB_SOCKET_TRANSPORT);

5
src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java

@ -21,6 +21,7 @@ import java.util.UUID;
import com.corundumstudio.socketio.AckCallback;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.namespace.Namespace;
import com.corundumstudio.socketio.parser.Packet;
import com.corundumstudio.socketio.parser.PacketType;
@ -40,6 +41,10 @@ public class NamespaceClient implements SocketIOClient {
return baseClient;
}
public Transport getTransport() {
return baseClient.getTransport();
}
public Namespace getNamespace() {
return namespace;
}

7
src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java

@ -21,14 +21,17 @@ import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFuture;
import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.messages.WebSocketPacketMessage;
import com.corundumstudio.socketio.parser.Packet;
public class WebSocketClient extends BaseClient {
public WebSocketClient(Channel channel, AckManager ackManager, DisconnectableHub disconnectable, UUID sessionId) {
super(sessionId, ackManager, disconnectable);
public WebSocketClient(Channel channel, AckManager ackManager,
DisconnectableHub disconnectable, UUID sessionId,
Transport transport) {
super(sessionId, ackManager, disconnectable, transport);
this.channel = channel;
}

12
src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.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;
@ -31,7 +29,6 @@ import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelStateEvent;
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.HttpRequest;
import org.jboss.netty.handler.codec.http.QueryStringDecoder;
@ -42,12 +39,11 @@ import org.jboss.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFa
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.CompositeIterable;
import com.corundumstudio.socketio.Disconnectable;
import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.HeartbeatHandler;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOPipelineFactory;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.handler.AuthorizeHandler;
import com.corundumstudio.socketio.messages.PacketsMessage;
@ -149,7 +145,7 @@ public class WebSocketTransport extends BaseTransport {
return;
}
WebSocketClient client = new WebSocketClient(channel, ackManager, disconnectableHub, sessionId);
WebSocketClient client = new WebSocketClient(channel, ackManager, disconnectableHub, sessionId, getTransport());
channelId2Client.put(channel.getId(), client);
sessionId2Client.put(sessionId, client);
@ -159,6 +155,10 @@ public class WebSocketTransport extends BaseTransport {
removeHandler(channel.getPipeline());
}
protected Transport getTransport() {
return Transport.WEBSOCKET;
}
protected void removeHandler(ChannelPipeline pipeline) {
pipeline.remove(SocketIOPipelineFactory.FLASH_SOCKET_TRANSPORT);
}

5
src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java

@ -21,6 +21,7 @@ import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFuture;
import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.messages.XHRNewChannelMessage;
import com.corundumstudio.socketio.messages.XHRPacketMessage;
@ -30,8 +31,8 @@ public class XHRPollingClient extends BaseClient {
private String origin;
public XHRPollingClient(AckManager ackManager, DisconnectableHub disconnectable, UUID sessionId) {
super(sessionId, ackManager, disconnectable);
public XHRPollingClient(AckManager ackManager, DisconnectableHub disconnectable, UUID sessionId, Transport transport) {
super(sessionId, ackManager, disconnectable, transport);
}
public void update(Channel channel, String origin) {

3
src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java

@ -40,6 +40,7 @@ import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.Configuration;
import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.handler.AuthorizeHandler;
import com.corundumstudio.socketio.messages.PacketsMessage;
@ -184,7 +185,7 @@ public class XHRPollingTransport extends BaseTransport {
}
private XHRPollingClient createClient(String origin, Channel channel, UUID sessionId) {
XHRPollingClient client = new XHRPollingClient(ackManager, disconnectable, sessionId);
XHRPollingClient client = new XHRPollingClient(ackManager, disconnectable, sessionId, Transport.XHRPOLLING);
sessionId2Client.put(sessionId, client);
client.update(channel, origin);

Loading…
Cancel
Save