You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/07/31 08:43:30 UTC
svn commit: r561242 - in /mina:
branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/
branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/
branches/1.0/core/src/main/java/org/apache/mina/util/ branches/1.1/core/...
Author: trustin
Date: Mon Jul 30 23:43:29 2007
New Revision: 561242
URL: http://svn.apache.org/viewvc?view=rev&rev=561242
Log:
Fixed issue: DIRMINA-407 (IoSession.getScheduledWriteMessages() returns wrong value.) * Need to remove duplicates in trunk (other branches are OK IMO because we are in maintenance mode.)
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
mina/branches/1.0/core/src/main/java/org/apache/mina/util/Queue.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java Mon Jul 30 23:43:29 2007
@@ -160,7 +160,7 @@
public int getScheduledWriteRequests() {
synchronized (writeRequestQueue) {
- return writeRequestQueue.size();
+ return writeRequestQueue.messageSize();
}
}
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java Mon Jul 30 23:43:29 2007
@@ -169,7 +169,7 @@
public int getScheduledWriteRequests() {
synchronized (writeRequestQueue) {
- return writeRequestQueue.size();
+ return writeRequestQueue.messageSize();
}
}
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/util/Queue.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/util/Queue.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/util/Queue.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/util/Queue.java Mon Jul 30 23:43:29 2007
@@ -26,6 +26,7 @@
import java.util.NoSuchElementException;
import org.apache.mina.common.ByteBuffer;
+import org.apache.mina.common.IoFilter.WriteRequest;
/**
* A unbounded circular queue.
@@ -151,12 +152,10 @@
public int size() {
return size;
}
-
+
/**
* Returns the sum of the '<tt>remaining</tt>' of all {@link ByteBuffer}s
* in this queue.
- *
- * @throws ClassCastException if an element is not a {@link ByteBuffer}
*/
public int byteSize() {
if (isEmpty()) {
@@ -167,18 +166,101 @@
if (first < last) {
for (int i = first; i < last; i++) {
- byteSize += ((ByteBuffer) items[i]).remaining();
+ if (items[i] instanceof ByteBuffer) {
+ byteSize += ((ByteBuffer) items[i]).remaining();
+ } else if (items[i] instanceof WriteRequest) {
+ Object message = ((WriteRequest) items[i]).getMessage();
+ if (message instanceof ByteBuffer) {
+ byteSize += ((ByteBuffer) message).remaining();
+ }
+ }
}
} else {
for (int i = first; i < items.length; i++) {
- byteSize += ((ByteBuffer) items[i]).remaining();
+ if (items[i] instanceof ByteBuffer) {
+ byteSize += ((ByteBuffer) items[i]).remaining();
+ } else if (items[i] instanceof WriteRequest) {
+ Object message = ((WriteRequest) items[i]).getMessage();
+ if (message instanceof ByteBuffer) {
+ byteSize += ((ByteBuffer) message).remaining();
+ }
+ }
}
for (int i = last - 1; i >= 0; i--) {
- byteSize += ((ByteBuffer) items[i]).remaining();
+ if (items[i] instanceof ByteBuffer) {
+ byteSize += ((ByteBuffer) items[i]).remaining();
+ } else if (items[i] instanceof WriteRequest) {
+ Object message = ((WriteRequest) items[i]).getMessage();
+ if (message instanceof ByteBuffer) {
+ byteSize += ((ByteBuffer) message).remaining();
+ }
+ }
}
}
return byteSize;
+ }
+
+ public int messageSize() {
+ if (isEmpty()) {
+ return 0;
+ }
+
+ int messageSize = 0;
+
+ if (first < last) {
+ for (int i = first; i < last; i++) {
+ if (items[i] instanceof WriteRequest) {
+ Object message = ((WriteRequest) items[i]).getMessage();
+ if (message instanceof ByteBuffer) {
+ if (((ByteBuffer) message).hasRemaining()) {
+ messageSize ++;
+ }
+ } else {
+ messageSize ++;
+ }
+ } else if (items[i] instanceof ByteBuffer) {
+ if (((ByteBuffer) items[i]).hasRemaining()) {
+ messageSize ++;
+ }
+ }
+ }
+ } else {
+ for (int i = first; i < items.length; i++) {
+ if (items[i] instanceof WriteRequest) {
+ Object message = ((WriteRequest) items[i]).getMessage();
+ if (message instanceof ByteBuffer) {
+ if (((ByteBuffer) message).hasRemaining()) {
+ messageSize ++;
+ }
+ } else {
+ messageSize ++;
+ }
+ } else if (items[i] instanceof ByteBuffer) {
+ if (((ByteBuffer) items[i]).hasRemaining()) {
+ messageSize ++;
+ }
+ }
+ }
+ for (int i = last - 1; i >= 0; i--) {
+ if (items[i] instanceof WriteRequest) {
+ Object message = ((WriteRequest) items[i]).getMessage();
+ if (message instanceof ByteBuffer) {
+ if (((ByteBuffer) message).hasRemaining()) {
+ messageSize ++;
+ }
+ } else {
+ messageSize ++;
+ }
+ } else if (items[i] instanceof ByteBuffer) {
+ if (((ByteBuffer) items[i]).hasRemaining()) {
+ messageSize ++;
+ }
+ }
+ }
+ }
+
+ return messageSize;
}
public String toString() {
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java Mon Jul 30 23:43:29 2007
@@ -162,7 +162,19 @@
}
public int getScheduledWriteRequests() {
- return writeRequestQueue.size();
+ int size = 0;
+ for (WriteRequest request : writeRequestQueue) {
+ Object message = request.getMessage();
+ if (message instanceof ByteBuffer) {
+ if (((ByteBuffer) message).hasRemaining()) {
+ size ++;
+ }
+ } else {
+ size ++;
+ }
+ }
+
+ return size;
}
/**
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java Mon Jul 30 23:43:29 2007
@@ -173,7 +173,21 @@
}
public int getScheduledWriteRequests() {
- return writeRequestQueue.size();
+ int size = 0;
+ synchronized (writeRequestQueue) {
+ for (WriteRequest request : writeRequestQueue) {
+ Object message = request.getMessage();
+ if (message instanceof ByteBuffer) {
+ if (((ByteBuffer) message).hasRemaining()) {
+ size ++;
+ }
+ } else {
+ size ++;
+ }
+ }
+ }
+
+ return size;
}
public int getScheduledWriteBytes() {
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java Mon Jul 30 23:43:29 2007
@@ -27,7 +27,7 @@
* @author The Apache Directory Project (mina-dev@directory.apache.org)
* @version $Rev$, $Date$
*/
-public class VmPipeAddress extends SocketAddress implements Comparable {
+public class VmPipeAddress extends SocketAddress implements Comparable<VmPipeAddress> {
private static final long serialVersionUID = 3257844376976830515L;
private final int port;
@@ -63,8 +63,8 @@
return false;
}
- public int compareTo(Object o) {
- return this.port - ((VmPipeAddress) o).port;
+ public int compareTo(VmPipeAddress o) {
+ return this.port - o.port;
}
public String toString() {
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java Mon Jul 30 23:43:29 2007
@@ -135,9 +135,21 @@
}
public int getScheduledWriteMessages() {
+ int size = 0;
synchronized (writeRequestQueue) {
- return writeRequestQueue.size();
+ for (WriteRequest request : writeRequestQueue) {
+ Object message = request.getMessage();
+ if (message instanceof ByteBuffer) {
+ if (((ByteBuffer) message).hasRemaining()) {
+ size ++;
+ }
+ } else {
+ size ++;
+ }
+ }
}
+
+ return size;
}
public int getScheduledWriteBytes() {
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java Mon Jul 30 23:43:29 2007
@@ -187,9 +187,21 @@
}
public int getScheduledWriteMessages() {
+ int size = 0;
synchronized (writeRequestQueue) {
- return writeRequestQueue.size();
+ for (WriteRequest request : writeRequestQueue) {
+ Object message = request.getMessage();
+ if (message instanceof ByteBuffer) {
+ if (((ByteBuffer) message).hasRemaining()) {
+ size ++;
+ }
+ } else {
+ size ++;
+ }
+ }
}
+
+ return size;
}
public int getScheduledWriteBytes() {
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAddress.java Mon Jul 30 23:43:29 2007
@@ -27,7 +27,7 @@
* @author The Apache MINA Project (dev@mina.apache.org)
* @version $Rev$, $Date$
*/
-public class VmPipeAddress extends SocketAddress implements Comparable {
+public class VmPipeAddress extends SocketAddress implements Comparable<VmPipeAddress> {
private static final long serialVersionUID = 3257844376976830515L;
private final int port;
@@ -67,8 +67,8 @@
return false;
}
- public int compareTo(Object o) {
- return this.port - ((VmPipeAddress) o).port;
+ public int compareTo(VmPipeAddress o) {
+ return this.port - o.port;
}
@Override
Modified: mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java?view=diff&rev=561242&r1=561241&r2=561242
==============================================================================
--- mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java (original)
+++ mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java Mon Jul 30 23:43:29 2007
@@ -120,9 +120,21 @@
}
public int getScheduledWriteMessages() {
+ int size = 0;
synchronized (writeRequestQueue) {
- return writeRequestQueue.size();
+ for (WriteRequest request : writeRequestQueue) {
+ Object message = request.getMessage();
+ if (message instanceof ByteBuffer) {
+ if (((ByteBuffer) message).hasRemaining()) {
+ size ++;
+ }
+ } else {
+ size ++;
+ }
+ }
}
+
+ return size;
}
public int getScheduledWriteBytes() {