Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2014-04-10 06:20:10 +0000
committerGreg Wilkins2014-04-10 06:20:10 +0000
commitef400675aac2746086db06ad6e8fa7bf3fb2fe27 (patch)
tree85e8cedb8a9b52e4cce42f0acd5c3cda36be870c /jetty-io
parent866960d5d72445e7e214027108716fa7d64b8951 (diff)
downloadorg.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.java39
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
}
}
}
+
}

Back to the top