directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From trus...@apache.org
Subject svn commit: rev 65595 - in incubator/directory/seda/trunk/src/java/org/apache/seda: event output
Date Sun, 14 Nov 2004 14:31:58 GMT
Author: trustin
Date: Sun Nov 14 06:31:57 2004
New Revision: 65595

Modified:
   incubator/directory/seda/trunk/src/java/org/apache/seda/event/GatheringOutputEvent.java
   incubator/directory/seda/trunk/src/java/org/apache/seda/output/UDPOutputManager.java
Log:
Fixed: UDPOutputManager.write(ClientKey, ByteBuffer[]) doesn't flip the merged ByteBuffer
nor send any data out.
Added: GatheringOutputEvent.getBuffer() for possible later use

Modified: incubator/directory/seda/trunk/src/java/org/apache/seda/event/GatheringOutputEvent.java
==============================================================================
--- incubator/directory/seda/trunk/src/java/org/apache/seda/event/GatheringOutputEvent.java
(original)
+++ incubator/directory/seda/trunk/src/java/org/apache/seda/event/GatheringOutputEvent.java
Sun Nov 14 06:31:57 2004
@@ -14,7 +14,6 @@
  *   limitations under the License.
  *
  */
-
 package org.apache.seda.event;
 
 import java.nio.ByteBuffer;
@@ -42,7 +41,8 @@
      * @param clientKey the key of the client
      * @param buffers the buffer array containing the chunk to output
      */
-    public GatheringOutputEvent(Object source, ClientKey clientKey, ByteBuffer[] buffers)
+    public GatheringOutputEvent(Object source, ClientKey clientKey,
+                                ByteBuffer[] buffers)
     {
         super(source, clientKey);
         this.buffers = buffers;
@@ -56,5 +56,30 @@
     public ByteBuffer[] getBuffers()
     {
         return buffers;
+    }
+
+    /**
+     * Merges all buffers this event contains to a newly allocated
+     * {@link ByteBuffer} and returns it.
+     */
+    public ByteBuffer getBuffer()
+    {
+        int size = 0;
+
+        for (int i = buffers.length - 1; i >= 0; i--)
+        {
+            size += buffers[i].remaining();
+        }
+
+        ByteBuffer mergedBuf = ByteBuffer.allocate(size);
+
+        for (int i = 0; i < buffers.length; i++)
+        {
+            mergedBuf.put(buffers[i]);
+        }
+
+        mergedBuf.flip();
+
+        return mergedBuf;
     }
 }

Modified: incubator/directory/seda/trunk/src/java/org/apache/seda/output/UDPOutputManager.java
==============================================================================
--- incubator/directory/seda/trunk/src/java/org/apache/seda/output/UDPOutputManager.java	(original)
+++ incubator/directory/seda/trunk/src/java/org/apache/seda/output/UDPOutputManager.java	Sun
Nov 14 06:31:57 2004
@@ -146,6 +146,8 @@
         {
             mergedBuf.put(buffers[i]);
         }
+        
+        mergedBuf.flip();
 
         udpKey.getSocket().getChannel().send(mergedBuf, key.getRemoteAddress());
         monitor.writeOccurred(this, key);

Mime
View raw message