Browse Source

Namespace refactoring. #123

master
Nikita 11 years ago
parent
commit
96734bb7a0
  1. 2
      src/main/java/com/corundumstudio/socketio/handler/AuthorizeHandler.java
  2. 4
      src/main/java/com/corundumstudio/socketio/handler/PacketHandler.java
  3. 32
      src/main/java/com/corundumstudio/socketio/transport/MainBaseClient.java
  4. 2
      src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java
  5. 10
      src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java
  6. 2
      src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java
  7. 6
      src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java
  8. 2
      src/test/java/com/corundumstudio/socketio/handler/PacketHandlerTest.java

2
src/main/java/com/corundumstudio/socketio/handler/AuthorizeHandler.java

@ -205,7 +205,7 @@ public class AuthorizeHandler extends ChannelInboundHandlerAdapter implements Di
if (!client.getNamespaces().contains(ns)) {
connect(client.getSessionId());
SocketIOClient nsClient = client.addChildClient(ns);
SocketIOClient nsClient = client.addNamespaceClient(ns);
ns.onConnect(nsClient);
Packet packet = new Packet(PacketType.MESSAGE);

4
src/main/java/com/corundumstudio/socketio/handler/PacketHandler.java

@ -71,10 +71,10 @@ public class PacketHandler extends SimpleChannelInboundHandler<PacketsMessage> {
}
if (packet.getSubType() == PacketType.CONNECT) {
client.addChildClient(ns);
client.addNamespaceClient(ns);
}
NamespaceClient nClient = (NamespaceClient) client.getChildClient(ns);
NamespaceClient nClient = client.getChildClient(ns);
if (nClient == null) {
log.debug("Can't find namespace client in namespace: {}, sessionId: {} probably it was disconnected.", ns.getName(), client.getSessionId());
return;

32
src/main/java/com/corundumstudio/socketio/transport/MainBaseClient.java

@ -48,15 +48,15 @@ import com.corundumstudio.socketio.store.StoreFactory;
*/
public abstract class MainBaseClient {
private final Map<Namespace, SocketIOClient> namespaceClients = new ConcurrentHashMap<Namespace, SocketIOClient>();
private final Store store;
private final HandshakeData handshakeData;
private final AtomicBoolean disconnected = new AtomicBoolean();
private final DisconnectableHub disconnectableHub;
private final AckManager ackManager;
private final Map<Namespace, NamespaceClient> namespaceClients = new ConcurrentHashMap<Namespace, NamespaceClient>();
private final UUID sessionId;
private Channel channel;
private final HandshakeData handshakeData;
private final Store store;
private final DisconnectableHub disconnectableHub;
private final AckManager ackManager;
public MainBaseClient(UUID sessionId, AckManager ackManager, DisconnectableHub disconnectable,
StoreFactory storeFactory, HandshakeData handshakeData) {
@ -69,21 +69,21 @@ public abstract class MainBaseClient {
public abstract Transport getTransport();
public abstract ChannelFuture send(Packet... packets);
public abstract ChannelFuture send(Packet packets);
public void removeChildClient(SocketIOClient client) {
namespaceClients.remove((Namespace) client.getNamespace());
public void removeNamespaceClient(NamespaceClient client) {
namespaceClients.remove(client.getNamespace());
if (namespaceClients.isEmpty()) {
disconnectableHub.onDisconnect(this);
}
}
public SocketIOClient getChildClient(Namespace namespace) {
public NamespaceClient getChildClient(Namespace namespace) {
return namespaceClients.get(namespace);
}
public SocketIOClient addChildClient(Namespace namespace) {
SocketIOClient client = new NamespaceClient(this, namespace);
public NamespaceClient addNamespaceClient(Namespace namespace) {
NamespaceClient client = new NamespaceClient(this, namespace);
namespaceClients.put(namespace, client);
return client;
}
@ -92,18 +92,14 @@ public abstract class MainBaseClient {
return namespaceClients.keySet();
}
public Collection<SocketIOClient> getAllChildClients() {
return namespaceClients.values();
}
public boolean isConnected() {
return !disconnected.get();
}
public void onChannelDisconnect() {
disconnected.set(true);
for (SocketIOClient client : getAllChildClients()) {
((NamespaceClient) client).onDisconnect();
for (NamespaceClient client : namespaceClients.values()) {
client.onDisconnect();
}
}

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

@ -105,7 +105,7 @@ public class NamespaceClient implements SocketIOClient {
public void onDisconnect() {
disconnected.set(true);
baseClient.removeChildClient(this);
baseClient.removeNamespaceClient(this);
namespace.onDisconnect(this);
}

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

@ -37,13 +37,9 @@ public class WebSocketClient extends MainBaseClient {
setChannel(channel);
}
public ChannelFuture send(Packet... packets) {
for (Packet packet : packets) {
packet.setBinary(true);
getChannel().writeAndFlush(new WebSocketPacketMessage(getSessionId(), packet));
}
// TODO fix
return getChannel().newSucceededFuture();
public ChannelFuture send(Packet packet) {
packet.setBinary(true);
return getChannel().writeAndFlush(new WebSocketPacketMessage(getSessionId(), packet));
}
@Override

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

@ -174,7 +174,7 @@ public class WebSocketTransport extends BaseTransport {
XHRPollingClient oldClient = pollingTransport.getClient(sessionId);
if (oldClient != null) {
for (Namespace namespace : oldClient.getNamespaces()) {
client.addChildClient(namespace);
client.addNamespaceClient(namespace);
}
} else {
authorizeHandler.connect(client);

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

@ -58,10 +58,8 @@ public class XHRPollingClient extends MainBaseClient {
return origin;
}
public ChannelFuture send(Packet... packets) {
for (Packet packet : packets) {
packetQueue.add(packet);
}
public ChannelFuture send(Packet packet) {
packetQueue.add(packet);
if (getChannel() != null && getChannel().attr(WRITE_ONCE).get() == null) {
return getChannel().writeAndFlush(new XHRSendPacketsMessage(getSessionId(), origin, packetQueue));
}

2
src/test/java/com/corundumstudio/socketio/handler/PacketHandlerTest.java

@ -68,7 +68,7 @@ public class PacketHandlerTest {
public void before() {
if (namespacesHub.get(Namespace.DEFAULT_NAME) == null) {
Namespace ns = namespacesHub.create(Namespace.DEFAULT_NAME);
client.addChildClient(ns);
client.addNamespaceClient(ns);
}
invocations.set(0);

Loading…
Cancel
Save