Skip to content

Commit be39a52

Browse files
committed
Updated WebSocket to toggle waiting for pending writes.
1 parent 8ba18eb commit be39a52

File tree

5 files changed

+22
-14
lines changed

5 files changed

+22
-14
lines changed

build.gradle

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
group 'com.softwareverde'
2-
version '2.2.5'
2+
version '2.2.6'
33

44
apply plugin: 'java'
55
apply plugin: 'java-library'
66

77
java {
8-
sourceCompatibility = JavaVersion.VERSION_1_8
9-
targetCompatibility = JavaVersion.VERSION_1_8
8+
sourceCompatibility = JavaVersion.VERSION_11
9+
targetCompatibility = JavaVersion.VERSION_11
1010
}
1111

1212
repositories {
@@ -15,9 +15,9 @@ repositories {
1515
}
1616

1717
dependencies {
18-
api group: 'com.github.softwareverde', name: 'json', version: 'v2.0.0'
19-
implementation group: 'com.github.softwareverde', name: 'java-logging', version: 'v2.2.0'
20-
implementation group: 'com.github.softwareverde', name: 'java-util', version: 'v2.7.3'
18+
api group: 'com.github.softwareverde', name: 'json', version: 'v2.0.2'
19+
implementation group: 'com.github.softwareverde', name: 'java-logging', version: 'v2.3.0'
20+
implementation group: 'com.github.softwareverde', name: 'java-util', version: 'v2.9.2'
2121
implementation group: 'com.github.softwareverde', name: 'java-cryptography', version: 'v3.2.1'
2222

2323
testImplementation group: 'junit', name: 'junit', version: '4.12'

src/main/java/com/softwareverde/http/websocket/SocketStreams.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import java.util.concurrent.atomic.AtomicBoolean;
1212
import java.util.concurrent.atomic.AtomicInteger;
1313

14-
class SocketStreams implements EndPoint {
14+
public class SocketStreams implements EndPoint {
1515
protected final AtomicBoolean _isShutdown = new AtomicBoolean(false);
1616
protected final ByteBuffer _packetBuffer = new ByteBuffer();
1717

src/main/java/com/softwareverde/http/websocket/WebSocket.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public interface ConnectionClosedCallback {
3636
protected final Integer _maxPacketByteCount;
3737
protected final ConnectionLayer _connectionLayer;
3838

39-
protected final WebSocketReader _webSocketReader;
40-
protected final WebSocketWriter _webSocketWriter;
39+
protected WebSocketReader _webSocketReader;
40+
protected WebSocketWriter _webSocketWriter;
4141

4242
protected final Runnable _pingRunnable = new Runnable() {
4343
@Override

src/main/java/com/softwareverde/http/websocket/WebSocketReader.java

+12-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.io.InputStream;
99
import java.net.SocketTimeoutException;
1010

11-
class WebSocketReader {
11+
public class WebSocketReader {
1212
public interface MessageReceivedCallback {
1313
void onTextMessage(String message);
1414
void onBinaryMessage(byte[] message);
@@ -24,6 +24,8 @@ public interface MessageReceivedCallback {
2424

2525
protected final Thread _readThread;
2626

27+
protected volatile boolean _waitForNoPendingWrites = false;
28+
2729
public WebSocketReader(final WebSocket.Mode mode, final SocketStreams endPoint, final WebSocketBuffers webSocketBuffers, final MessageReceivedCallback messageReceivedCallback) {
2830
_messageReceivedCallback = messageReceivedCallback;
2931

@@ -80,9 +82,11 @@ public void run() {
8082
}
8183

8284
while (true) {
83-
do {
84-
Thread.sleep(100); // Prioritize writes since reading will block writes...
85-
} while ( (endPoint.getQueuedWriteByteCount() > 0) && (inputStream.available() < 1) );
85+
if (_waitForNoPendingWrites) {
86+
do {
87+
Thread.sleep(100); // Prioritize writes since reading will block writes...
88+
} while ((endPoint.getQueuedWriteByteCount() > 0) && (inputStream.available() < 1));
89+
}
8690

8791
final int readByteCount;
8892
if (endPoint.isInputShutdown()) { break; }
@@ -108,6 +112,10 @@ public void run() {
108112
});
109113
}
110114

115+
public void waitUntilWritesAreCompleted(final boolean value) {
116+
_waitForNoPendingWrites = value;
117+
}
118+
111119
public void start() {
112120
if (! _readThread.isAlive()) {
113121
_readThread.start();

src/main/java/com/softwareverde/http/websocket/WebSocketWriter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.io.IOException;
1010
import java.security.SecureRandom;
1111

12-
class WebSocketWriter {
12+
public class WebSocketWriter {
1313
protected final SocketStreams _endPoint;
1414
protected final WebSocketGeneratorRFC6455 _webSocketGeneratorRFC6455;
1515

0 commit comments

Comments
 (0)