diff options
author | Greg Wilkins | 2014-04-10 06:20:10 +0000 |
---|---|---|
committer | Greg Wilkins | 2014-04-10 06:20:10 +0000 |
commit | ef400675aac2746086db06ad6e8fa7bf3fb2fe27 (patch) | |
tree | 85e8cedb8a9b52e4cce42f0acd5c3cda36be870c /jetty-io | |
parent | 866960d5d72445e7e214027108716fa7d64b8951 (diff) | |
download | org.eclipse.jetty.project-ef400675aac2746086db06ad6e8fa7bf3fb2fe27.tar.gz org.eclipse.jetty.project-ef400675aac2746086db06ad6e8fa7bf3fb2fe27.tar.xz org.eclipse.jetty.project-ef400675aac2746086db06ad6e8fa7bf3fb2fe27.zip |
431519 Fixed NetworkTrafficListener
Diffstat (limited to 'jetty-io')
-rw-r--r-- | jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficSelectChannelEndPoint.java | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficSelectChannelEndPoint.java b/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficSelectChannelEndPoint.java index d45902e36d..a4b6f7d2a1 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficSelectChannelEndPoint.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficSelectChannelEndPoint.java @@ -19,11 +19,13 @@ package org.eclipse.jetty.io; import java.io.IOException; +import java.net.Socket; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.SocketChannel; import java.util.List; +import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.thread.Scheduler; @@ -57,9 +59,11 @@ public class NetworkTrafficSelectChannelEndPoint extends SelectChannelEndPoint if (b.hasRemaining()) { int position = b.position(); + ByteBuffer view=b.slice(); flushed&=super.flush(b); int l=b.position()-position; - notifyOutgoing(b, position, l); + view.limit(view.position()+l); + notifyOutgoing(view); if (!flushed) break; } @@ -67,9 +71,12 @@ public class NetworkTrafficSelectChannelEndPoint extends SelectChannelEndPoint return flushed; } + - public void notifyOpened() + @Override + public void onOpen() { + super.onOpen(); if (listeners != null && !listeners.isEmpty()) { for (NetworkTrafficListener listener : listeners) @@ -86,16 +93,17 @@ public class NetworkTrafficSelectChannelEndPoint extends SelectChannelEndPoint } } - public void notifyIncoming(ByteBuffer buffer, int read) + @Override + public void onClose() { - if (listeners != null && !listeners.isEmpty() && read > 0) + super.onClose(); + if (listeners != null && !listeners.isEmpty()) { for (NetworkTrafficListener listener : listeners) { try { - ByteBuffer view = buffer.asReadOnlyBuffer(); - listener.incoming(getSocket(), view); + listener.closed(getSocket()); } catch (Exception x) { @@ -105,18 +113,17 @@ public class NetworkTrafficSelectChannelEndPoint extends SelectChannelEndPoint } } - public void notifyOutgoing(ByteBuffer buffer, int position, int written) + + public void notifyIncoming(ByteBuffer buffer, int read) { - if (listeners != null && !listeners.isEmpty() && written > 0) + if (listeners != null && !listeners.isEmpty() && read > 0) { for (NetworkTrafficListener listener : listeners) { try { - ByteBuffer view = buffer.slice(); - view.position(position); - view.limit(position + written); - listener.outgoing(getSocket(), view); + ByteBuffer view = buffer.asReadOnlyBuffer(); + listener.incoming(getSocket(), view); } catch (Exception x) { @@ -126,15 +133,16 @@ public class NetworkTrafficSelectChannelEndPoint extends SelectChannelEndPoint } } - public void notifyClosed() + public void notifyOutgoing(ByteBuffer view) { - if (listeners != null && !listeners.isEmpty()) + if (listeners != null && !listeners.isEmpty() && view.hasRemaining()) { + Socket socket=getSocket(); for (NetworkTrafficListener listener : listeners) { try { - listener.closed(getSocket()); + listener.outgoing(socket, view); } catch (Exception x) { @@ -143,4 +151,5 @@ public class NetworkTrafficSelectChannelEndPoint extends SelectChannelEndPoint } } } + } |