Browse Source

ExceptionListener.exceptionCaught method added. #117

master
Nikita 11 years ago
parent
commit
e4fc0c123c
  1. 2
      src/main/java/com/corundumstudio/socketio/SocketIOChannelInitializer.java
  2. 9
      src/main/java/com/corundumstudio/socketio/handler/PacketHandler.java
  3. 7
      src/main/java/com/corundumstudio/socketio/listener/DefaultExceptionListener.java
  4. 4
      src/main/java/com/corundumstudio/socketio/listener/ExceptionListener.java
  5. 9
      src/main/java/com/corundumstudio/socketio/listener/ExceptionListenerAdapter.java
  6. 8
      src/test/java/com/corundumstudio/socketio/handler/PacketHandlerTest.java

2
src/main/java/com/corundumstudio/socketio/SocketIOChannelInitializer.java

@ -124,7 +124,7 @@ public class SocketIOChannelInitializer extends ChannelInitializer<Channel> impl
}
}
packetHandler = new PacketHandler(packetListener, decoder, namespacesHub);
packetHandler = new PacketHandler(packetListener, decoder, namespacesHub, configuration.getExceptionListener());
authorizeHandler = new AuthorizeHandler(connectPath, scheduler, configuration, namespacesHub);
StoreFactory factory = configuration.getStoreFactory();

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

@ -24,6 +24,7 @@ import io.netty.util.CharsetUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.listener.ExceptionListener;
import com.corundumstudio.socketio.messages.PacketsMessage;
import com.corundumstudio.socketio.namespace.Namespace;
import com.corundumstudio.socketio.namespace.NamespacesHub;
@ -41,12 +42,14 @@ public class PacketHandler extends SimpleChannelInboundHandler<PacketsMessage> {
private final PacketListener packetListener;
private final Decoder decoder;
private final NamespacesHub namespacesHub;
private final ExceptionListener exceptionListener;
public PacketHandler(PacketListener packetListener, Decoder decoder, NamespacesHub namespacesHub) {
public PacketHandler(PacketListener packetListener, Decoder decoder, NamespacesHub namespacesHub, ExceptionListener exceptionListener) {
super();
this.packetListener = packetListener;
this.decoder = decoder;
this.namespacesHub = namespacesHub;
this.exceptionListener = exceptionListener;
}
@Override
@ -87,7 +90,9 @@ public class PacketHandler extends SimpleChannelInboundHandler<PacketsMessage> {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception {
log.error("Exception occurs", e);
if (!exceptionListener.exceptionCaught(ctx, e)) {
super.exceptionCaught(ctx, e);
}
}
}

7
src/main/java/com/corundumstudio/socketio/listener/DefaultExceptionListener.java

@ -15,6 +15,8 @@
*/
package com.corundumstudio.socketio.listener;
import io.netty.channel.ChannelHandlerContext;
import java.util.List;
import org.slf4j.Logger;
@ -51,4 +53,9 @@ public class DefaultExceptionListener extends ExceptionListenerAdapter {
log.error(e.getMessage(), e);
}
public boolean exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception {
log.error(e.getMessage(), e);
return true;
}
}

4
src/main/java/com/corundumstudio/socketio/listener/ExceptionListener.java

@ -15,6 +15,8 @@
*/
package com.corundumstudio.socketio.listener;
import io.netty.channel.ChannelHandlerContext;
import java.util.List;
import com.corundumstudio.socketio.SocketIOClient;
@ -31,4 +33,6 @@ public interface ExceptionListener {
void onJsonException(Exception e, Object data, SocketIOClient client);
boolean exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception;
}

9
src/main/java/com/corundumstudio/socketio/listener/ExceptionListenerAdapter.java

@ -15,6 +15,8 @@
*/
package com.corundumstudio.socketio.listener;
import io.netty.channel.ChannelHandlerContext;
import java.util.List;
import com.corundumstudio.socketio.SocketIOClient;
@ -24,7 +26,7 @@ import com.corundumstudio.socketio.SocketIOClient;
*
*
*/
public class ExceptionListenerAdapter implements ExceptionListener {
public abstract class ExceptionListenerAdapter implements ExceptionListener {
@Override
public void onEventException(Exception e, List<Object> data, SocketIOClient client) {
@ -46,4 +48,9 @@ public class ExceptionListenerAdapter implements ExceptionListener {
public void onJsonException(Exception e, Object data, SocketIOClient client) {
}
@Override
public boolean exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception {
return false;
}
}

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

@ -95,7 +95,7 @@ public class PacketHandlerTest {
packets.add(packet);
PacketListener listener = createTestListener(packets);
PacketHandler handler = new PacketHandler(listener, decoder, namespacesHub);
PacketHandler handler = new PacketHandler(listener, decoder, namespacesHub, null);
testHandler(handler, new ConcurrentLinkedQueue<Packet>(packets));
}
@ -114,7 +114,7 @@ public class PacketHandlerTest {
packets.add(packet1);
PacketListener listener = createTestListener(packets);
PacketHandler handler = new PacketHandler(listener, decoder, namespacesHub);
PacketHandler handler = new PacketHandler(listener, decoder, namespacesHub, null);
testHandler(handler, new ConcurrentLinkedQueue<Packet>(packets));
}
@ -133,7 +133,7 @@ public class PacketHandlerTest {
packets.add(packet1);
PacketListener listener = createTestListener(packets);
PacketHandler handler = new PacketHandler(listener, decoder, namespacesHub);
PacketHandler handler = new PacketHandler(listener, decoder, namespacesHub, null);
testHandler(handler, new ConcurrentLinkedQueue<Packet>(packets));
}
@ -152,7 +152,7 @@ public class PacketHandlerTest {
public void onPacket(Packet packet, NamespaceClient client) {
}
};
PacketHandler handler = new PacketHandler(listener, decoder, namespacesHub);
PacketHandler handler = new PacketHandler(listener, decoder, namespacesHub, null);
long start = System.currentTimeMillis();
ByteBuf buffer = Unpooled.wrappedBuffer("\ufffd10\ufffd3:::Привет\ufffd7\ufffd3:::53d\ufffd3\ufffd0::\ufffd5\ufffd3:::5\ufffd7\ufffd3:::53d\ufffd3\ufffd0::\ufffd5\ufffd3:::5\ufffd7\ufffd3:::53d\ufffd3\ufffd0::\ufffd5\ufffd3:::5\ufffd7\ufffd3:::53d\ufffd3\ufffd0::\ufffd5\ufffd3:::5\ufffd7\ufffd3:::53d\ufffd3\ufffd0::".getBytes());
for (int i = 0; i < 50000; i++) {

Loading…
Cancel
Save