From directory-cvs-return-3844-apmail-incubator-directory-cvs-archive=incubator.apache.org@incubator.apache.org Tue Mar 08 04:14:46 2005 Return-Path: Delivered-To: apmail-incubator-directory-cvs-archive@www.apache.org Received: (qmail 90468 invoked from network); 8 Mar 2005 04:14:46 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 8 Mar 2005 04:14:46 -0000 Received: (qmail 35170 invoked by uid 500); 8 Mar 2005 04:14:45 -0000 Delivered-To: apmail-incubator-directory-cvs-archive@incubator.apache.org Received: (qmail 35132 invoked by uid 500); 8 Mar 2005 04:14:45 -0000 Mailing-List: contact directory-cvs-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: directory-dev@incubator.apache.org Delivered-To: mailing list directory-cvs@incubator.apache.org Received: (qmail 35119 invoked by uid 99); 8 Mar 2005 04:14:44 -0000 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from minotaur.apache.org (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Mon, 07 Mar 2005 20:14:44 -0800 Received: (qmail 90392 invoked by uid 65534); 8 Mar 2005 04:14:43 -0000 Message-ID: <20050308041443.90390.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Mailer: svnmailer-1.0.0-dev Date: Tue, 08 Mar 2005 04:14:42 -0000 Subject: svn commit: r156494 - in incubator/directory/network/mina/trunk/src/java/org/apache/mina: protocol/ProtocolEncoderOutput.java protocol/io/IoAdapter.java util/Queue.java To: directory-cvs@incubator.apache.org From: trustin@apache.org X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Author: trustin Date: Mon Mar 7 20:14:41 2005 New Revision: 156494 URL: http://svn.apache.org/viewcvs?view=3Drev&rev=3D156494 Log: Added ProtocolEncoderOutput.mergeAll() to let users control how MINA genera= tes network packets. This will help to resolve DIR-108. Modified: incubator/directory/network/mina/trunk/src/java/org/apache/mina/protoco= l/ProtocolEncoderOutput.java incubator/directory/network/mina/trunk/src/java/org/apache/mina/protoco= l/io/IoAdapter.java incubator/directory/network/mina/trunk/src/java/org/apache/mina/util/Qu= eue.java Modified: incubator/directory/network/mina/trunk/src/java/org/apache/mina/p= rotocol/ProtocolEncoderOutput.java URL: http://svn.apache.org/viewcvs/incubator/directory/network/mina/trunk/s= rc/java/org/apache/mina/protocol/ProtocolEncoderOutput.java?view=3Ddiff&r1= =3D156493&r2=3D156494 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- incubator/directory/network/mina/trunk/src/java/org/apache/mina/protoco= l/ProtocolEncoderOutput.java (original) +++ incubator/directory/network/mina/trunk/src/java/org/apache/mina/protoco= l/ProtocolEncoderOutput.java Mon Mar 7 20:14:41 2005 @@ -38,4 +38,12 @@ * @param buf the buffer which contains encoded data */ void write( ByteBuffer buf ); + =20 + /** + * Merges all buffers you wrote via {@link #write(ByteBuffer)} into + * one {@link ByteBuffer} and replaces the old fragmented ones with it= . + * This method is useful when you want to control the way MINA generat= es + * network packets. + */ + void mergeAll(); } Modified: incubator/directory/network/mina/trunk/src/java/org/apache/mina/p= rotocol/io/IoAdapter.java URL: http://svn.apache.org/viewcvs/incubator/directory/network/mina/trunk/s= rc/java/org/apache/mina/protocol/io/IoAdapter.java?view=3Ddiff&r1=3D156493&= r2=3D156494 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- incubator/directory/network/mina/trunk/src/java/org/apache/mina/protoco= l/io/IoAdapter.java (original) +++ incubator/directory/network/mina/trunk/src/java/org/apache/mina/protoco= l/io/IoAdapter.java Mon Mar 7 20:14:41 2005 @@ -423,6 +423,38 @@ { queue.push( buf ); } + =20 + public void mergeAll() + { + int sum =3D 0; + final int size =3D queue.size(); + =20 + // Get the size of merged BB + for( int i =3D size - 1; i >=3D 0; i -- ) + { + sum +=3D ( ( ByteBuffer ) queue.get( i ) ).remaining(); + } + =20 + // Allocate a new BB that will contain all fragments + ByteBuffer newBuf =3D ByteBuffer.allocate( sum ); + =20 + // and merge all. + for( ;; ) + { + ByteBuffer buf =3D ( ByteBuffer ) queue.pop(); + if( buf =3D=3D null ) + { + break; + } + + newBuf.put( buf ); + ByteBuffer.release( buf ); + } + =20 + // Push the new buffer finally. + newBuf.flip(); + queue.push(newBuf); + } } =20 private static class ProtocolDecoderOutputImpl implements Modified: incubator/directory/network/mina/trunk/src/java/org/apache/mina/u= til/Queue.java URL: http://svn.apache.org/viewcvs/incubator/directory/network/mina/trunk/s= rc/java/org/apache/mina/util/Queue.java?view=3Ddiff&r1=3D156493&r2=3D156494 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- incubator/directory/network/mina/trunk/src/java/org/apache/mina/util/Qu= eue.java (original) +++ incubator/directory/network/mina/trunk/src/java/org/apache/mina/util/Qu= eue.java Mon Mar 7 20:14:41 2005 @@ -144,6 +144,11 @@ =20 return items[ ( last + items.length - 1 ) & mask ]; } + =20 + public Object get( int idx ) + { + return items[ ( first + idx ) & mask ]; + } =20 /** * Returns true if the queue is empty.