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 { public interface SocketIOClient extends ClientOperations {
/**
* Current client transport protocol
*
* @return transport protocol
*/
Transport getTransport();
/** /**
* Send event with ack callback * 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.DisconnectableHub;
import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager; import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.namespace.Namespace; import com.corundumstudio.socketio.namespace.Namespace;
import com.corundumstudio.socketio.parser.Packet; import com.corundumstudio.socketio.parser.Packet;
@ -47,14 +48,20 @@ public abstract class BaseClient {
private final DisconnectableHub disconnectable; private final DisconnectableHub disconnectable;
private final AckManager ackManager; private final AckManager ackManager;
private final UUID sessionId; private final UUID sessionId;
private final Transport transport;
protected Channel channel; 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.sessionId = sessionId;
this.ackManager = ackManager; this.ackManager = ackManager;
this.disconnectable = disconnectable; this.disconnectable = disconnectable;
this.transport = transport;
} }
public Transport getTransport() {
return transport;
}
public abstract ChannelFuture send(Packet packet); public abstract ChannelFuture send(Packet packet);
public void removeChildClient(SocketIOClient client) { public void removeChildClient(SocketIOClient client) {

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.DisconnectableHub;
import com.corundumstudio.socketio.HeartbeatHandler; import com.corundumstudio.socketio.HeartbeatHandler;
import com.corundumstudio.socketio.SocketIOPipelineFactory; import com.corundumstudio.socketio.SocketIOPipelineFactory;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager; import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.handler.AuthorizeHandler; import com.corundumstudio.socketio.handler.AuthorizeHandler;
@ -35,6 +36,11 @@ public class FlashSocketTransport extends WebSocketTransport {
super(connectPath, isSsl, ackManager, disconnectable, authorizeHandler, heartbeatHandler); super(connectPath, isSsl, ackManager, disconnectable, authorizeHandler, heartbeatHandler);
path = connectPath + NAME; path = connectPath + NAME;
} }
@Override
protected Transport getTransport() {
return Transport.FLASHSOCKET;
}
@Override @Override
protected void removeHandler(ChannelPipeline pipeline) { protected void removeHandler(ChannelPipeline pipeline) {

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.AckCallback;
import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.namespace.Namespace; import com.corundumstudio.socketio.namespace.Namespace;
import com.corundumstudio.socketio.parser.Packet; import com.corundumstudio.socketio.parser.Packet;
import com.corundumstudio.socketio.parser.PacketType; import com.corundumstudio.socketio.parser.PacketType;
@ -39,6 +40,10 @@ public class NamespaceClient implements SocketIOClient {
public BaseClient getBaseClient() { public BaseClient getBaseClient() {
return baseClient; return baseClient;
} }
public Transport getTransport() {
return baseClient.getTransport();
}
public Namespace getNamespace() { public Namespace getNamespace() {
return namespace; 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 org.jboss.netty.channel.ChannelFuture;
import com.corundumstudio.socketio.DisconnectableHub; import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager; import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.messages.WebSocketPacketMessage; import com.corundumstudio.socketio.messages.WebSocketPacketMessage;
import com.corundumstudio.socketio.parser.Packet; import com.corundumstudio.socketio.parser.Packet;
public class WebSocketClient extends BaseClient { 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; this.channel = channel;
} }

12
src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java

@ -16,9 +16,7 @@
package com.corundumstudio.socketio.transport; package com.corundumstudio.socketio.transport;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap; 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.ChannelStateEvent;
import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.MessageEvent; 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.HttpHeaders;
import org.jboss.netty.handler.codec.http.HttpRequest; import org.jboss.netty.handler.codec.http.HttpRequest;
import org.jboss.netty.handler.codec.http.QueryStringDecoder; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.CompositeIterable;
import com.corundumstudio.socketio.Disconnectable;
import com.corundumstudio.socketio.DisconnectableHub; import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.HeartbeatHandler; import com.corundumstudio.socketio.HeartbeatHandler;
import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIOPipelineFactory; import com.corundumstudio.socketio.SocketIOPipelineFactory;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager; import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.handler.AuthorizeHandler; import com.corundumstudio.socketio.handler.AuthorizeHandler;
import com.corundumstudio.socketio.messages.PacketsMessage; import com.corundumstudio.socketio.messages.PacketsMessage;
@ -149,7 +145,7 @@ public class WebSocketTransport extends BaseTransport {
return; return;
} }
WebSocketClient client = new WebSocketClient(channel, ackManager, disconnectableHub, sessionId);
WebSocketClient client = new WebSocketClient(channel, ackManager, disconnectableHub, sessionId, getTransport());
channelId2Client.put(channel.getId(), client); channelId2Client.put(channel.getId(), client);
sessionId2Client.put(sessionId, client); sessionId2Client.put(sessionId, client);
@ -159,6 +155,10 @@ public class WebSocketTransport extends BaseTransport {
removeHandler(channel.getPipeline()); removeHandler(channel.getPipeline());
} }
protected Transport getTransport() {
return Transport.WEBSOCKET;
}
protected void removeHandler(ChannelPipeline pipeline) { protected void removeHandler(ChannelPipeline pipeline) {
pipeline.remove(SocketIOPipelineFactory.FLASH_SOCKET_TRANSPORT); 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 org.jboss.netty.channel.ChannelFuture;
import com.corundumstudio.socketio.DisconnectableHub; import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager; import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.messages.XHRNewChannelMessage; import com.corundumstudio.socketio.messages.XHRNewChannelMessage;
import com.corundumstudio.socketio.messages.XHRPacketMessage; import com.corundumstudio.socketio.messages.XHRPacketMessage;
@ -30,8 +31,8 @@ public class XHRPollingClient extends BaseClient {
private String origin; 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) { 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.Configuration;
import com.corundumstudio.socketio.DisconnectableHub; import com.corundumstudio.socketio.DisconnectableHub;
import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.Transport;
import com.corundumstudio.socketio.ack.AckManager; import com.corundumstudio.socketio.ack.AckManager;
import com.corundumstudio.socketio.handler.AuthorizeHandler; import com.corundumstudio.socketio.handler.AuthorizeHandler;
import com.corundumstudio.socketio.messages.PacketsMessage; import com.corundumstudio.socketio.messages.PacketsMessage;
@ -184,7 +185,7 @@ public class XHRPollingTransport extends BaseTransport {
} }
private XHRPollingClient createClient(String origin, Channel channel, UUID sessionId) { 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); sessionId2Client.put(sessionId, client);
client.update(channel, origin); client.update(channel, origin);

Loading…
Cancel
Save