Author: norman
Date: Tue Jan 18 20:35:11 2011
New Revision: 1060563
URL: http://svn.apache.org/viewvc?rev=1060563&view=rev
Log:
Move NotEnoughDataException to NettyImapRequestLineReader as it is specific to
this implementation
Removed:
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NotEnoughDataException.java
Modified:
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java
Modified:
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java?rev=1060563&r1=1060562&r2=1060563&view=diff
==============================================================================
---
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
(original)
+++
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
Tue Jan 18 20:35:11 2011
@@ -41,7 +41,10 @@ public class ImapRequestFrameDecoder ext
this.decoder = decoder;
}
- @Override
+ /*
+ * (non-Javadoc)
+ * @see
org.jboss.netty.handler.codec.frame.FrameDecoder#decode(org.jboss.netty.channel.ChannelHandlerContext,
org.jboss.netty.channel.Channel, org.jboss.netty.buffer.ChannelBuffer)
+ */
protected Object decode(ChannelHandlerContext ctx, Channel channel,
ChannelBuffer buffer) throws Exception {
buffer.markReaderIndex();
@@ -49,7 +52,8 @@ public class ImapRequestFrameDecoder ext
Object attachment = ctx.getAttachment();
if (attachment != null) {
int size = (Integer) attachment;
- if (size != NotEnoughDataException.UNKNOWN_SIZE && size >
buffer.readableBytes()) {
+ // now see if the buffer hold enough data to process.
+ if (size !=
NettyImapRequestLineReader.NotEnoughDataException.UNKNOWN_SIZE && size >
buffer.readableBytes()) {
buffer.resetReaderIndex();
return null;
@@ -57,6 +61,7 @@ public class ImapRequestFrameDecoder ext
}
try {
+
ImapRequestLineReader reader = new
NettyImapRequestLineReader(channel, buffer);
ImapMessage message = decoder.decode(reader, (ImapSession)
attributes.get(channel));
@@ -65,9 +70,10 @@ public class ImapRequestFrameDecoder ext
ctx.setAttachment(null);
return message;
- } catch (NotEnoughDataException e) {
+ } catch (NettyImapRequestLineReader.NotEnoughDataException e) {
// this exception was thrown because we don't have enough data yet
int neededData = e.getNeededSize();
+ // store the needed data size for later usage
ctx.setAttachment(neededData);
buffer.resetReaderIndex();
return null;
Modified:
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java?rev=1060563&r1=1060562&r2=1060563&view=diff
==============================================================================
---
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java
(original)
+++
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java
Tue Jan 18 20:35:11 2011
@@ -85,4 +85,30 @@ public class NettyImapRequestLineReader
protected void commandContinuationRequest() throws DecodingException {
channel.write(cRequest);
}
+
+
+ @SuppressWarnings("serial")
+ public final class NotEnoughDataException extends RuntimeException{
+
+ public final static int UNKNOWN_SIZE = -1;
+ private int size;
+
+ public NotEnoughDataException(int size) {
+ this.size = size;
+ }
+
+ public NotEnoughDataException() {
+ this(UNKNOWN_SIZE);
+ }
+
+ /**
+ * Return the size of the data which is needed
+ *
+ * @return size
+ */
+ public int getNeededSize() {
+ return size;
+ }
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]