Browse Source

Error handling improvements.

master
Nikita 12 years ago
parent
commit
36a4384c51
  1. 2
      src/main/java/com/corundumstudio/socketio/SocketIOEncoder.java
  2. 8
      src/main/java/com/corundumstudio/socketio/annotation/OnConnectScanner.java
  3. 3
      src/main/java/com/corundumstudio/socketio/annotation/OnDisconnectScanner.java
  4. 9
      src/main/java/com/corundumstudio/socketio/annotation/OnEventScanner.java
  5. 9
      src/main/java/com/corundumstudio/socketio/annotation/OnJsonObjectScanner.java
  6. 9
      src/main/java/com/corundumstudio/socketio/annotation/OnMessageScanner.java
  7. 13
      src/main/java/com/corundumstudio/socketio/handler/PacketHandler.java
  8. 34
      src/main/java/com/corundumstudio/socketio/handler/SocketIOException.java

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

@ -199,7 +199,7 @@ public class SocketIOEncoder extends SimpleChannelDownstreamHandler implements M
if (channel.isOpen()) {
channel.write(res);
} else {
log.trace("Channel was closed, for sessionId: {}", webSocketPacketMessage.getSessionId());
log.debug("Channel was closed, for sessionId: {}", webSocketPacketMessage.getSessionId());
}
}

8
src/main/java/com/corundumstudio/socketio/annotation/OnConnectScanner.java

@ -18,17 +18,13 @@ package com.corundumstudio.socketio.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.handler.SocketIOException;
import com.corundumstudio.socketio.listener.ConnectListener;
import com.corundumstudio.socketio.namespace.Namespace;
public class OnConnectScanner implements AnnotationScanner {
private final Logger log = LoggerFactory.getLogger(getClass());
public Class<? extends Annotation> getScanAnnotation() {
return OnConnect.class;
}
@ -40,7 +36,7 @@ public class OnConnectScanner implements AnnotationScanner {
try {
method.invoke(object, client);
} catch (Exception e) {
log.error("Can't invoke OnConnect listener on: " + clazz.getName() + ", method: " + method.getName(), e);
throw new SocketIOException(e);
}
}
});

3
src/main/java/com/corundumstudio/socketio/annotation/OnDisconnectScanner.java

@ -22,6 +22,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.handler.SocketIOException;
import com.corundumstudio.socketio.listener.DisconnectListener;
import com.corundumstudio.socketio.namespace.Namespace;
@ -42,7 +43,7 @@ public class OnDisconnectScanner implements AnnotationScanner {
try {
method.invoke(object, client);
} catch (Exception e) {
log.error("Can't invoke OnDisconnect listener on: " + clazz.getName() + ", method: " + method.getName(), e);
throw new SocketIOException(e);
}
}
});

9
src/main/java/com/corundumstudio/socketio/annotation/OnEventScanner.java

@ -18,18 +18,14 @@ package com.corundumstudio.socketio.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.AckRequest;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.handler.SocketIOException;
import com.corundumstudio.socketio.listener.DataListener;
import com.corundumstudio.socketio.namespace.Namespace;
public class OnEventScanner implements AnnotationScanner {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public Class<? extends Annotation> getScanAnnotation() {
return OnEvent.class;
@ -65,8 +61,7 @@ public class OnEventScanner implements AnnotationScanner {
}
method.invoke(object, args);
} catch (Exception e) {
log.error("Can't invoke OnEvent listener on: " + clazz.getName() + ", method: "
+ method.getName(), e);
throw new SocketIOException(e);
}
}
});

9
src/main/java/com/corundumstudio/socketio/annotation/OnJsonObjectScanner.java

@ -18,18 +18,14 @@ package com.corundumstudio.socketio.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.AckRequest;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.handler.SocketIOException;
import com.corundumstudio.socketio.listener.DataListener;
import com.corundumstudio.socketio.namespace.Namespace;
public class OnJsonObjectScanner implements AnnotationScanner {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public Class<? extends Annotation> getScanAnnotation() {
return OnJsonObject.class;
@ -58,8 +54,7 @@ public class OnJsonObjectScanner implements AnnotationScanner {
}
method.invoke(object, args);
} catch (Exception e) {
log.error("Can't invoke OnJsonObject listener on: " + clazz.getName() + ", method: "
+ method.getName(), e);
throw new SocketIOException(e);
}
}
});

9
src/main/java/com/corundumstudio/socketio/annotation/OnMessageScanner.java

@ -18,18 +18,14 @@ package com.corundumstudio.socketio.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.AckRequest;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.handler.SocketIOException;
import com.corundumstudio.socketio.listener.DataListener;
import com.corundumstudio.socketio.namespace.Namespace;
public class OnMessageScanner implements AnnotationScanner {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public Class<? extends Annotation> getScanAnnotation() {
return OnMessage.class;
@ -56,8 +52,7 @@ public class OnMessageScanner implements AnnotationScanner {
}
method.invoke(object, args);
} catch (Exception e) {
log.error("Can't invoke OnMessage listener on: " + clazz.getName() + ", method: "
+ method.getName(), e);
throw new SocketIOException(e);
}
}
});

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

@ -63,11 +63,16 @@ public class PacketHandler extends SimpleChannelUpstreamHandler {
log.trace("In message: {} sessionId: {}", new Object[] {content.toString(CharsetUtil.UTF_8), client.getSessionId()});
}
while (content.readable()) {
Packet packet = decoder.decodePackets(content, client.getSessionId());
Namespace ns = namespacesHub.get(packet.getEndpoint());
try {
Packet packet = decoder.decodePackets(content, client.getSessionId());
Namespace ns = namespacesHub.get(packet.getEndpoint());
NamespaceClient nClient = (NamespaceClient) client.getChildClient(ns);
packetListener.onPacket(packet, nClient);
NamespaceClient nClient = (NamespaceClient) client.getChildClient(ns);
packetListener.onPacket(packet, nClient);
} catch (Exception ex) {
String c = content.toString(CharsetUtil.UTF_8);
log.error("Error during data processing. Client sessionId: " + client.getSessionId() + ", data: " + c, ex);
}
}
} else {
ctx.sendUpstream(e);

34
src/main/java/com/corundumstudio/socketio/handler/SocketIOException.java

@ -0,0 +1,34 @@
/**
* Copyright 2012 Nikita Koksharov
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.corundumstudio.socketio.handler;
public class SocketIOException extends RuntimeException {
private static final long serialVersionUID = -9218908839842557188L;
public SocketIOException(String message, Throwable cause) {
super(message, cause);
}
public SocketIOException(String message) {
super(message);
}
public SocketIOException(Throwable cause) {
super(cause);
}
}
Loading…
Cancel
Save