Skip to content

Commit c24daa8

Browse files
Fixed behavior when server requested close
Change-Id: I4b6feb1bc0cae8ffd273d20dc7f23844a82783a7
1 parent 1efae6f commit c24daa8

12 files changed

+64
-38
lines changed

websockets-rxjava/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ signing {
4646
}
4747
group = "com.appunite"
4848
archivesBaseName = "websockets-rxjava"
49-
version = "3.0.0"
49+
version = "3.0.1"
5050

5151
if (!project.hasProperty("ossrhUsername")) {
5252
project.ext.setProperty("ossrhUsername", null)

websockets-rxjava/src/main/java/com/appunite/websocket/rx/RxWebSockets.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.appunite.websocket.rx.messages.RxEventConnected;
2323
import com.appunite.websocket.rx.messages.RxEventDisconnected;
2424
import com.appunite.websocket.rx.messages.RxEventPong;
25-
import com.appunite.websocket.rx.messages.RxEventServerRequestedClose;
2625
import com.appunite.websocket.rx.messages.RxEventStringMessage;
2726
import com.squareup.okhttp.OkHttpClient;
2827
import com.squareup.okhttp.Request;
@@ -110,6 +109,10 @@ WebSocket webSocketOrNull() {
110109

111110
@Override
112111
public void onFailure(IOException e, Response response) {
112+
returnException(e);
113+
}
114+
115+
private void returnException(IOException e) {
113116
subscriber.onNext(new RxEventDisconnected(e));
114117
subscriber.onError(e);
115118
synchronized (lock) {
@@ -146,14 +149,7 @@ public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws
146149

147150
@Override
148151
public void onClose(int code, String reason) {
149-
final WebSocket sender = webSocketOrNull();
150-
if (sender != null) {
151-
subscriber.onNext(new RxEventServerRequestedClose(sender, code, reason));
152-
}
153-
synchronized (lock) {
154-
webSocketItem = null;
155-
requestClose = false;
156-
}
152+
returnException(new ServerRequestedCloseException(code, reason));
157153
}
158154

159155
};

websockets-rxjava/src/main/java/com/appunite/websocket/rx/messages/RxEventServerRequestedClose.java renamed to websockets-rxjava/src/main/java/com/appunite/websocket/rx/ServerRequestedCloseException.java

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,43 @@
1414
* limitations under the License
1515
*/
1616

17-
package com.appunite.websocket.rx.messages;
17+
package com.appunite.websocket.rx;
1818

19-
import com.squareup.okhttp.ws.WebSocket;
19+
import java.io.IOException;
2020

2121
import javax.annotation.Nonnull;
2222

2323
/**
24-
* Event indicating that server requested close connection
24+
* Exception indicating that server requested close connection
2525
*/
26-
public class RxEventServerRequestedClose extends RxEventConn {
26+
public class ServerRequestedCloseException extends IOException {
2727

2828
private final int code;
2929
@Nonnull
3030
private final String reason;
3131

32-
public RxEventServerRequestedClose(@Nonnull WebSocket sender,
33-
int code,
34-
@Nonnull String reason) {
35-
super(sender);
32+
public ServerRequestedCloseException(int code,
33+
@Nonnull String reason) {
34+
super("Server requested connection to close, code=" + code + ", reason= " + reason);
3635
this.code = code;
3736
this.reason = reason;
3837
}
3938

40-
@Override
41-
public String toString() {
42-
return "RxEventServerRequestedClose{" +
43-
"code=" + code +
44-
", reason='" + reason + '\'' +
45-
'}';
39+
/**
40+
* Code why close requested
41+
* @return code why close requested
42+
*/
43+
public int code() {
44+
return code;
4645
}
46+
47+
/**
48+
* Reason why close requested
49+
* @return reason why close requested or empty string
50+
*/
51+
@Nonnull
52+
public String reason() {
53+
return reason;
54+
}
55+
4756
}

websockets-rxjava/src/main/java/com/appunite/websocket/rx/messages/RxEvent.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@
2323
* @see RxEventDisconnected
2424
* @see RxEventBinaryMessage
2525
* @see RxEventStringMessage
26-
* @see RxEventPing
2726
* @see RxEventPong
28-
* @see RxEventServerRequestedClose
29-
* @see RxEventUnknownMessage
3027
*/
3128
public abstract class RxEvent {
3229

websockets-rxjava/src/main/java/com/appunite/websocket/rx/messages/RxEventBinaryMessageAbs.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@
2424
* Abstract class for binary messages returned by server
2525
*
2626
* @see RxEventBinaryMessage
27-
* @see RxEventPing
2827
* @see RxEventPong
29-
* @see RxEventUnknownMessage
30-
* @see RxEventServerRequestedClose
3128
*/
3229
public abstract class RxEventBinaryMessageAbs extends RxEventConn {
3330

websockets-rxjava/src/main/java/com/appunite/websocket/rx/messages/RxEventDisconnected.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.appunite.websocket.rx.messages;
1818

19+
import java.io.IOException;
20+
1921
import javax.annotation.Nonnull;
2022

2123
/**
@@ -27,20 +29,21 @@
2729
public class RxEventDisconnected extends RxEvent {
2830

2931
@Nonnull
30-
private Exception exception;
32+
private IOException exception;
3133

32-
public RxEventDisconnected(@Nonnull Exception exception) {
34+
public RxEventDisconnected(@Nonnull IOException exception) {
3335
super();
3436
this.exception = exception;
3537
}
3638

3739
/**
3840
* Exception that caused disconnection.
41+
* If server requested disconnection it will be {@link com.appunite.websocket.rx.ServerRequestedCloseException}
3942
*
4043
* @return exception that caused disconnection
4144
*/
4245
@Nonnull
43-
public Exception exception() {
46+
public IOException exception() {
4447
return exception;
4548
}
4649

websockets-rxjava/src/main/java/com/appunite/websocket/rx/object/RxObjectWebSockets.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ public void onNext(RxEvent rxEvent) {
9393
} else if (rxEvent instanceof RxEventBinaryMessage) {
9494
final RxEventBinaryMessage binaryMessage = (RxEventBinaryMessage) rxEvent;
9595
subscriber.onNext(parseMessage(binaryMessage));
96+
} else {
97+
throw new RuntimeException("Unknown message type");
9698
}
9799
}
98100

websockets-rxjava/src/main/java/com/appunite/websocket/rx/object/messages/RxObjectEventDisconnected.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,23 @@
1919
import com.appunite.websocket.rx.object.ObjectWebSocketSender;
2020
import com.appunite.websocket.rx.messages.RxEventDisconnected;
2121

22+
import java.io.IOException;
23+
2224
import javax.annotation.Nonnull;
2325

2426
/**
2527
* Event indicate that client was disconnected to the server
2628
*
2729
* since then all execution on previosly returned {@link ObjectWebSocketSender} will cause throwing
28-
* {@link com.appunite.websocket.NotConnectedException}
30+
* {@link java.io.IOException}
2931
*
3032
* See: {@link RxEventDisconnected}
3133
*/
3234
public class RxObjectEventDisconnected extends RxObjectEvent {
3335
@Nonnull
34-
private final Exception exception;
36+
private final IOException exception;
3537

36-
public RxObjectEventDisconnected(@Nonnull Exception exception) {
38+
public RxObjectEventDisconnected(@Nonnull IOException exception) {
3739
super();
3840
this.exception = exception;
3941
}
@@ -42,7 +44,7 @@ public RxObjectEventDisconnected(@Nonnull Exception exception) {
4244
* See: {@link RxEventDisconnected#exception()}
4345
*/
4446
@Nonnull
45-
public Exception exception() {
47+
public IOException exception() {
4648
return exception;
4749
}
4850

websockets-rxjava/src/main/java/com/appunite/websocket/rx/object/messages/RxObjectEventMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import rx.functions.Func1;
2727

2828
/**
29-
* Event indicating that json was returned by server and was parsed
29+
* Event indicating that data returned by server was parsed
3030
*
3131
* If {@link ObjectParseException} occur than {@link RxObjectEventWrongMessageFormat} event
3232
* will be served

websockets-rxjava/src/main/java/com/appunite/websocket/rx/object/messages/RxObjectEventWrongBinaryMessageFormat.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,19 @@
1717
package com.appunite.websocket.rx.object.messages;
1818

1919
import com.appunite.websocket.rx.object.ObjectParseException;
20+
import com.appunite.websocket.rx.object.ObjectSerializer;
2021
import com.appunite.websocket.rx.object.ObjectWebSocketSender;
2122

2223
import java.util.Arrays;
2324

2425
import javax.annotation.Nonnull;
2526

27+
/**
28+
* Event indicating that binary data returned by server was not correctly parsed
29+
*
30+
* This means {@link ObjectParseException} was returned via
31+
* {@link ObjectSerializer#deserializeBinary(Object)}
32+
*/
2633
public class RxObjectEventWrongBinaryMessageFormat extends RxObjectEventWrongMessageFormat {
2734
@Nonnull
2835
private final byte[] message;

0 commit comments

Comments
 (0)