From 7b2880160c38635dea8f77238e16d3ecbb9317e4 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 13 May 2013 11:36:02 +0400 Subject: [PATCH] isChannelOpen method added. Issue #54 --- .../com/corundumstudio/socketio/SocketIOClient.java | 11 +++++++++-- .../socketio/transport/BaseClient.java | 12 ++++++++++-- .../socketio/transport/NamespaceClient.java | 9 ++++++++- .../socketio/transport/WebSocketClient.java | 10 +++------- .../socketio/transport/XHRPollingClient.java | 4 ++-- 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/corundumstudio/socketio/SocketIOClient.java b/src/main/java/com/corundumstudio/socketio/SocketIOClient.java index d443632..0823ec8 100644 --- a/src/main/java/com/corundumstudio/socketio/SocketIOClient.java +++ b/src/main/java/com/corundumstudio/socketio/SocketIOClient.java @@ -25,11 +25,11 @@ public interface SocketIOClient extends ClientOperations { /** * Current client transport protocol - * + * * @return transport protocol */ Transport getTransport(); - + /** * Send event with ack callback * @@ -84,4 +84,11 @@ public interface SocketIOClient extends ClientOperations { */ SocketAddress getRemoteAddress(); + /** + * Check is underlying channel open + * + * @return true if channel open, otherwise false + */ + boolean isChannelOpen(); + } diff --git a/src/main/java/com/corundumstudio/socketio/transport/BaseClient.java b/src/main/java/com/corundumstudio/socketio/transport/BaseClient.java index 5cbfe97..f10f818 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/BaseClient.java +++ b/src/main/java/com/corundumstudio/socketio/transport/BaseClient.java @@ -49,7 +49,7 @@ public abstract class BaseClient { private final AckManager ackManager; private final UUID sessionId; private final Transport transport; - protected Channel channel; + private Channel channel; public BaseClient(UUID sessionId, AckManager ackManager, DisconnectableHub disconnectable, Transport transport) { this.sessionId = sessionId; @@ -61,7 +61,7 @@ public abstract class BaseClient { public Transport getTransport() { return transport; } - + public abstract ChannelFuture send(Packet packet); public void removeChildClient(SocketIOClient client) { @@ -112,4 +112,12 @@ public abstract class BaseClient { onChannelDisconnect(); } + Channel getChannel() { + return channel; + } + + void setChannel(Channel channel) { + this.channel = channel; + } + } diff --git a/src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java b/src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java index f18a19d..ba8ff87 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java +++ b/src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java @@ -40,11 +40,18 @@ public class NamespaceClient implements SocketIOClient { public BaseClient getBaseClient() { return baseClient; } - + + @Override public Transport getTransport() { return baseClient.getTransport(); } + @Override + public boolean isChannelOpen() { + return baseClient.getChannel().isOpen(); + } + + @Override public Namespace getNamespace() { return namespace; } diff --git a/src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java b/src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java index 4f61489..8ecd8c8 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java +++ b/src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java @@ -28,19 +28,15 @@ import com.corundumstudio.socketio.parser.Packet; public class WebSocketClient extends BaseClient { - public WebSocketClient(Channel channel, AckManager ackManager, + public WebSocketClient(Channel channel, AckManager ackManager, DisconnectableHub disconnectable, UUID sessionId, Transport transport) { super(sessionId, ackManager, disconnectable, transport); - this.channel = channel; - } - - public Channel getChannel() { - return channel; + setChannel(channel); } public ChannelFuture send(Packet packet) { - return channel.write(new WebSocketPacketMessage(getSessionId(), packet)); + return getChannel().write(new WebSocketPacketMessage(getSessionId(), packet)); } } diff --git a/src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java b/src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java index 69380f1..5ebd657 100644 --- a/src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java +++ b/src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java @@ -37,7 +37,7 @@ public class XHRPollingClient extends BaseClient { public void update(Channel channel, String origin) { this.origin = origin; - this.channel = channel; + setChannel(channel); channel.write(new XHRNewChannelMessage(getSessionId(), origin)); } @@ -46,7 +46,7 @@ public class XHRPollingClient extends BaseClient { } public ChannelFuture send(Packet packet) { - return channel.write(new XHRPacketMessage(getSessionId(), origin, packet)); + return getChannel().write(new XHRPacketMessage(getSessionId(), origin, packet)); } }