@@ -80,29 +80,28 @@ public abstract class StreamDefragger
8080
8181 private static class BufferImpl extends RetainableByteBufferImpl
8282 {
83- public BufferImpl ( ByteBuffer byteBuffer )
83+ public BufferImpl (ByteBuffer byteBuffer )
8484 {
85- super ( byteBuffer );
85+ super (byteBuffer );
8686 }
8787
8888 protected void finalRelease ()
8989 {
9090 /* Do nothing */
9191 }
9292
93- public static BufferImpl create ( int capacity , boolean isDirect )
93+ public static BufferImpl create (int capacity , boolean isDirect )
9494 {
9595 if (capacity < 1024 )
9696 capacity = 1024 ;
9797 final ByteBuffer byteBuffer =
98- isDirect ? ByteBuffer .allocateDirect ( capacity )
99- : ByteBuffer .allocate ( capacity );
100- return new BufferImpl ( byteBuffer );
98+ isDirect ? ByteBuffer .allocateDirect (capacity )
99+ : ByteBuffer .allocate (capacity );
100+ return new BufferImpl (byteBuffer );
101101 }
102102 }
103103
104- private static boolean copyData (
105- RetainableByteBuffer rdst , RetainableByteBuffer rsrc , int bytes )
104+ private static boolean copyData (RetainableByteBuffer rdst , RetainableByteBuffer rsrc , int bytes )
106105 {
107106 final ByteBuffer dst = rdst .getNioByteBuffer ();
108107 final ByteBuffer src = rsrc .getNioByteBuffer ();
@@ -111,26 +110,26 @@ private static boolean copyData(
111110 final int available = (limit - pos );
112111 if (available < bytes )
113112 {
114- dst .put ( src );
113+ dst .put (src );
115114 return false ;
116115 }
117116 else
118117 {
119- src .limit ( pos + bytes );
120- dst .put ( src );
121- src .limit ( limit );
118+ src .limit (pos + bytes );
119+ dst .put (src );
120+ src .limit (limit );
122121 return true ;
123122 }
124123 }
125124
126- public StreamDefragger ( int headerSize )
125+ public StreamDefragger (int headerSize )
127126 {
128127 m_headerSize = headerSize ;
129128 }
130129
131- public final RetainableByteBuffer getNext ( RetainableByteBuffer data )
130+ public final RetainableByteBuffer getNext (RetainableByteBuffer data )
132131 {
133- assert ( m_data == null );
132+ assert (m_data == null );
134133
135134 if ((m_buf != null ) && (m_buf .position () > 0 ))
136135 {
@@ -142,24 +141,26 @@ public final RetainableByteBuffer getNext( RetainableByteBuffer data )
142141 return null ;
143142
144143 m_buf .flip ();
145- m_packetLen = validateHeader ( m_buf .getNioByteBuffer () );
144+ m_packetLen = validateHeader (m_buf .getNioByteBuffer ());
146145 if (m_packetLen < 0 )
147146 return INVALID_HEADER ;
148147 assert (m_packetLen >= m_headerSize );
149148
150149 if (m_buf .capacity () < m_packetLen )
151150 {
152- final BufferImpl buf = BufferImpl .create ( m_packetLen , data .getNioByteBuffer ().isDirect () );
153- m_buf .position ( 0 );
154- m_buf .limit ( m_headerSize );
155- buf .put ( m_buf );
151+ final ByteBuffer dataByteBuffer = data .getNioByteBuffer ();
152+ final BufferImpl buf = BufferImpl .create (m_packetLen , dataByteBuffer .isDirect ());
153+ buf .order (dataByteBuffer .order ());
154+ m_buf .position (0 );
155+ m_buf .limit (m_headerSize );
156+ buf .put (m_buf );
156157 m_buf = buf ;
157158 }
158159 else
159- m_buf .limit ( m_buf .capacity () );
160+ m_buf .limit (m_buf .capacity ());
160161
161162 pos = m_headerSize ;
162- m_buf .position ( pos );
163+ m_buf .position (pos );
163164 }
164165
165166 final int cc = (m_packetLen - pos );
@@ -182,8 +183,8 @@ public final RetainableByteBuffer getNext( RetainableByteBuffer data )
182183
183184 public final RetainableByteBuffer getNext ()
184185 {
185- m_data .position ( m_pos );
186- m_data .limit ( m_limit );
186+ m_data .position (m_pos );
187+ m_data .limit (m_limit );
187188
188189 final int bytesRemaining = (m_limit - m_pos );
189190 if (bytesRemaining == 0 )
@@ -194,41 +195,46 @@ public final RetainableByteBuffer getNext()
194195 return null ;
195196 }
196197
198+ final ByteBuffer dataByteBuffer = m_data .getNioByteBuffer ();
197199 if (bytesRemaining < m_headerSize )
198200 {
199201 /* m_buf will always have at least m_headerSize capacity */
200202 if ((m_buf == null ) || !m_buf .releaseReuse ())
201- m_buf = BufferImpl .create ( m_headerSize , m_data .getNioByteBuffer ().isDirect () );
202- m_buf .put ( m_data );
203+ {
204+ m_buf = BufferImpl .create (m_headerSize , dataByteBuffer .isDirect ());
205+ m_buf .order (dataByteBuffer .order ());
206+ }
207+ m_buf .put (m_data );
203208 m_data = null ;
204209 return null ;
205210 }
206211
207- m_packetLen = validateHeader ( m_data . getNioByteBuffer () );
208- m_data .position ( m_pos );
212+ m_packetLen = validateHeader (dataByteBuffer );
213+ m_data .position (m_pos );
209214
210215 if (m_packetLen <= 0 )
211216 return INVALID_HEADER ;
212217
213218 if (bytesRemaining < m_packetLen )
214219 {
215220 if (m_buf == null )
216- m_buf = BufferImpl .create ( m_packetLen , m_data . getNioByteBuffer (). isDirect () );
221+ m_buf = BufferImpl .create (m_packetLen , dataByteBuffer . isDirect ());
217222 else if (m_buf .capacity () < m_packetLen )
218223 {
219224 m_buf .release ();
220- m_buf = BufferImpl .create ( m_packetLen , m_data . getNioByteBuffer (). isDirect () );
225+ m_buf = BufferImpl .create (m_packetLen , dataByteBuffer . isDirect ());
221226 }
222227 else if (!m_buf .releaseReuse ())
223- m_buf = BufferImpl .create ( m_packetLen , m_data . getNioByteBuffer (). isDirect () );
228+ m_buf = BufferImpl .create (m_packetLen , dataByteBuffer . isDirect ());
224229
225- m_buf .put ( m_data );
230+ m_buf .order (dataByteBuffer .order ());
231+ m_buf .put (m_data );
226232 m_data = null ;
227233 return null ;
228234 }
229235
230236 m_pos += m_packetLen ;
231- m_data .limit ( m_pos );
237+ m_data .limit (m_pos );
232238 return m_data ;
233239 }
234240
@@ -241,5 +247,5 @@ public void close()
241247 }
242248 }
243249
244- abstract protected int validateHeader ( ByteBuffer header );
250+ abstract protected int validateHeader (ByteBuffer header );
245251}
0 commit comments