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();