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/09/16 08:57:55 UTC
svn commit: r576054 - in /mina/trunk:
core/src/main/java/org/apache/mina/common/
core/src/main/java/org/apache/mina/transport/socket/nio/
transport-serial/src/main/java/org/apache/mina/transport/serial/
Author: trustin
Date: Sat Sep 15 23:57:53 2007
New Revision: 576054
URL: http://svn.apache.org/viewvc?rev=576054&view=rev
Log:
* Added writeRequestQueue to AbstractIoSession because most implementations needs it.
* Removed getWriteRequestQueue() from IoSession final implementations
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java?rev=576054&r1=576053&r2=576054&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java Sat Sep 15 23:57:53 2007
@@ -28,7 +28,9 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.Queue;
import java.util.Set;
+import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@@ -54,7 +56,10 @@
private final Object lock = new Object();
private final Map<String, Object> attributes = Collections
- .synchronizedMap(new HashMap<String, Object>(8));
+ .synchronizedMap(new HashMap<String, Object>(4));
+
+ private final Queue<WriteRequest> writeRequestQueue =
+ new ConcurrentLinkedQueue<WriteRequest>();
private final long creationTime;
@@ -99,8 +104,9 @@
private long lastIdleTimeForWrite;
protected AbstractIoSession() {
- creationTime = lastReadTime = lastWriteTime = lastIdleTimeForBoth = lastIdleTimeForRead = lastIdleTimeForWrite = System
- .currentTimeMillis();
+ creationTime = lastReadTime = lastWriteTime =
+ lastIdleTimeForBoth = lastIdleTimeForRead =
+ lastIdleTimeForWrite = System.currentTimeMillis();
closeFuture.addListener(SCHEDULED_COUNTER_RESETTER);
}
@@ -437,6 +443,10 @@
public void increaseScheduledWriteMessages() {
scheduledWriteMessages.incrementAndGet();
+ }
+
+ public Queue<WriteRequest> getWriteRequestQueue() {
+ return writeRequestQueue;
}
public long getCreationTime() {
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java?rev=576054&r1=576053&r2=576054&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java Sat Sep 15 23:57:53 2007
@@ -24,8 +24,6 @@
import java.net.SocketException;
import java.nio.channels.DatagramChannel;
import java.nio.channels.SelectionKey;
-import java.util.LinkedList;
-import java.util.Queue;
import org.apache.mina.common.AbstractIoSession;
import org.apache.mina.common.ByteBuffer;
@@ -63,8 +61,6 @@
private final DatagramChannel ch;
- private final Queue<WriteRequest> writeRequestQueue = new LinkedList<WriteRequest>();
-
private final IoHandler handler;
private final InetSocketAddress localAddress;
@@ -150,10 +146,6 @@
.remove(this);
}
filterChain.fireFilterClose(this);
- }
-
- Queue<WriteRequest> getWriteRequestQueue() {
- return writeRequestQueue;
}
@Override
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?rev=576054&r1=576053&r2=576054&view=diff
==============================================================================
--- 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 Sat Sep 15 23:57:53 2007
@@ -23,8 +23,6 @@
import java.net.SocketException;
import java.nio.channels.SelectionKey;
import java.nio.channels.SocketChannel;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
import org.apache.mina.common.AbstractIoSession;
import org.apache.mina.common.ByteBuffer;
@@ -63,8 +61,6 @@
private final SocketChannel ch;
- private final Queue<WriteRequest> writeRequestQueue;
-
private final IoHandler handler;
private SelectionKey key;
@@ -76,7 +72,6 @@
this.ioProcessor = ioProcessor;
this.filterChain = new SocketFilterChain(this);
this.ch = ch;
- this.writeRequestQueue = new ConcurrentLinkedQueue<WriteRequest>();
this.handler = service.getHandler();
this.config.setAll(service.getSessionConfig());
}
@@ -122,27 +117,6 @@
filterChain.fireFilterClose(this);
}
- Queue<WriteRequest> getWriteRequestQueue() {
- return writeRequestQueue;
- }
-
- public int getScheduledWriteMessages() {
- int size = 0;
-
- for (WriteRequest request : writeRequestQueue) {
- Object message = request.getMessage();
- if (message instanceof ByteBuffer) {
- if (((ByteBuffer) message).hasRemaining()) {
- size++;
- }
- } else {
- size++;
- }
- }
-
- return size;
- }
-
@Override
protected void write0(WriteRequest writeRequest) {
filterChain.fireFilterWrite(this, writeRequest);
@@ -188,7 +162,7 @@
}
}
- writeRequestQueue.add(writeRequest);
+ getWriteRequestQueue().add(writeRequest);
if (getTrafficMask().isWritable()) {
getIoProcessor().flush(this);
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?rev=576054&r1=576053&r2=576054&view=diff
==============================================================================
--- 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 Sat Sep 15 23:57:53 2007
@@ -19,17 +19,16 @@
*/
package org.apache.mina.transport.serial;
+import gnu.io.SerialPort;
+import gnu.io.SerialPortEvent;
+import gnu.io.SerialPortEventListener;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.SocketAddress;
-import java.util.LinkedList;
-import java.util.Queue;
import java.util.TooManyListenersException;
-import gnu.io.SerialPort;
-import gnu.io.SerialPortEvent;
-import gnu.io.SerialPortEventListener;
import org.apache.mina.common.AbstractIoSession;
import org.apache.mina.common.ByteBuffer;
import org.apache.mina.common.DefaultTransportMetadata;
@@ -64,8 +63,6 @@
private final SerialAddress address;
- private final Queue<WriteRequest> writeRequestQueue;
-
private InputStream inputStream;
private OutputStream outputStream;
@@ -83,7 +80,6 @@
this.service = service;
this.ioHandler = service.getHandler();
this.filterChain = new SerialFilterChain(this);
- this.writeRequestQueue = new LinkedList<WriteRequest>();
this.port = port;
this.address = address;
@@ -119,40 +115,6 @@
return address;
}
- Queue<WriteRequest> getWriteRequestQueue() {
- return writeRequestQueue;
- }
-
- public int getScheduledWriteMessages() {
- 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 long getScheduledWriteBytes() {
- int size = 0;
- synchronized (writeRequestQueue) {
- for (Object o : writeRequestQueue) {
- if (o instanceof ByteBuffer) {
- size += ((ByteBuffer) o).remaining();
- }
- }
- }
- return size;
- }
-
public IoService getService() {
return service;
}
@@ -205,20 +167,13 @@
private void flushWrites() {
for (; ;) {
- WriteRequest req;
-
- synchronized (writeRequestQueue) {
- req = writeRequestQueue.peek();
- }
-
+ WriteRequest req = getWriteRequestQueue().peek();
if (req == null)
break;
ByteBuffer buf = (ByteBuffer) req.getMessage();
if (buf.remaining() == 0) {
- synchronized (writeRequestQueue) {
- writeRequestQueue.poll();
- }
+ getWriteRequestQueue().poll();
this.increaseWrittenMessages();
buf.reset();