Skip to content

Commit 683cbbe

Browse files
committed
Configure same byte order for intermediate buffer in StreamDefragger.
1 parent f8254e0 commit 683cbbe

File tree

7 files changed

+51
-45
lines changed

7 files changed

+51
-45
lines changed

src/main/java/org/jsl/collider/StreamDefragger.java

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

tests/src/org/jsl/tests/echo_latency/Server.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ private class TestAcceptor extends Acceptor
103103
{
104104
public TestAcceptor()
105105
{
106-
super( new InetSocketAddress(0) );
106+
super(0);
107107
//inputQueueBlockSize = 700;
108108
}
109109

tests/src/org/jsl/tests/echo_throughput/Server.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* JS-Collider framework tests.
3-
* Copyright (C) 2013 Sergey Zubarev
3+
* Copyright (C) 2022 Sergey Zubarev
44
* info@js-labs.org
55
*
66
* This program is free software: you can redistribute it and/or modify
@@ -133,7 +133,7 @@ private class TestAcceptor extends Acceptor
133133
{
134134
public TestAcceptor( int socketBufferSize )
135135
{
136-
super( new InetSocketAddress(0) );
136+
super(0);
137137
socketRecvBufSize = socketBufferSize;
138138
socketSendBufSize = socketBufferSize;
139139
}

tests/src/org/jsl/tests/msg_size_eq_block_size/Server.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* JS-Collider framework tests.
3-
* Copyright (C) 2018 Sergey Zubarev
3+
* Copyright (C) 2022 Sergey Zubarev
44
* info@js-labs.org
55
*
66
* This program is free software: you can redistribute it and/or modify
@@ -87,7 +87,7 @@ private class TestAcceptor extends Acceptor
8787
{
8888
TestAcceptor()
8989
{
90-
super(new InetSocketAddress(0));
90+
super(0);
9191
}
9292

9393
public void onAcceptorStarted(Collider collider, int localPort)

tests/src/org/jsl/tests/send_throughput/Server.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* JS-Collider framework tests.
3-
* Copyright (C) 2013 Sergey Zubarev
3+
* Copyright (C) 2022 Sergey Zubarev
44
* info@js-labs.org
55
*
66
* This program is free software: you can redistribute it and/or modify
@@ -132,7 +132,7 @@ private class TestAcceptor extends Acceptor
132132

133133
public TestAcceptor(int port, int socketBufferSize, Client client)
134134
{
135-
super(new InetSocketAddress(port));
135+
super(port);
136136
this.tcpNoDelay = true;
137137
this.socketSendBufSize = socketBufferSize;
138138
this.m_client = client;

tests/src/org/jsl/tests/session_latency/Server.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* JS-Collider framework tests.
3-
* Copyright (C) 2013 Sergey Zubarev
3+
* Copyright (C) 2022 Sergey Zubarev
44
* info@js-labs.org
55
*
66
* This program is free software: you can redistribute it and/or modify
@@ -114,7 +114,7 @@ private class TestAcceptor extends Acceptor
114114
{
115115
public TestAcceptor()
116116
{
117-
super( new InetSocketAddress(0) );
117+
super(0);
118118
tcpNoDelay = true;
119119
}
120120

tests/src/org/jsl/tests/session_throughput/Server.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* JS-Collider framework tests.
3-
* Copyright (C) 2013 Sergey Zubarev
3+
* Copyright (C) 2022 Sergey Zubarev
44
* info@js-labs.org
55
*
66
* This program is free software: you can redistribute it and/or modify
@@ -128,7 +128,7 @@ private class TestAcceptor extends Acceptor
128128
{
129129
public TestAcceptor()
130130
{
131-
super( new InetSocketAddress(0) );
131+
super(0);
132132
tcpNoDelay = true;
133133
socketRecvBufSize = m_socketBufferSize;
134134
socketSendBufSize = m_socketBufferSize;

0 commit comments

Comments
 (0)