Skip to content

Commit

Permalink
Merge pull request #273 from ably/fix-ping-callback
Browse files Browse the repository at this point in the history
Use ErrorInfo instead of internal ARTStatus in ping callback.
  • Loading branch information
ricardopereira committed Mar 4, 2016
2 parents 0017aab + 2d32d3c commit 9cb5b9d
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 14 deletions.
2 changes: 1 addition & 1 deletion Source/ARTConnection.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ ART_ASSUME_NONNULL_BEGIN

- (void)connect;
- (void)close;
- (void)ping:(void (^)(ARTStatus *))cb;
- (void)ping:(void (^)(ARTErrorInfo *__art_nullable))cb;

ART_EMBED_INTERFACE_EVENT_EMITTER(ARTRealtimeConnectionState, ARTConnectionStateChange *)

Expand Down
9 changes: 5 additions & 4 deletions Source/ARTRealtime.m
Original file line number Diff line number Diff line change
Expand Up @@ -357,11 +357,12 @@ - (void)onHeartbeat {
if(self.pingCb) {
[self cancelPingTimer];
if(self.connection.state != ARTRealtimeConnected) {
[self.logger warn:@"ARTRealtime received a ping when in state %@", [ARTRealtime ARTRealtimeStateToStr:self.connection.state]];
self.pingCb([ARTStatus state:ARTStateError]);
NSString *msg = [NSString stringWithFormat:@"ARTRealtime received a ping when in state %@", [ARTRealtime ARTRealtimeStateToStr:self.connection.state]];
[self.logger warn:@"%@", msg];
self.pingCb([ARTErrorInfo createWithCode:0 message:msg]);
}
else {
self.pingCb([ARTStatus state:ARTStateOk]);
self.pingCb(nil);
}
self.pingCb = nil;
}
Expand Down Expand Up @@ -493,7 +494,7 @@ - (void)onCloseTimerFired {

- (void)onPingTimerFired {
if(self.pingCb) {
self.pingCb([ARTStatus state:ARTStateConnectionFailed]);
self.pingCb([ARTErrorInfo createWithCode:0 status:ARTStateConnectionFailed message:@"connection failed"]);
self.pingCb = nil;
}
}
Expand Down
6 changes: 1 addition & 5 deletions Source/ARTTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,7 @@ NSString *generateNonce();

// MARK: Callbacks definitions

typedef void (^ARTRealtimeChannelStateCb)(ARTRealtimeChannelState, ARTStatus *);

typedef void (^ARTRealtimeChannelPresenceCb)(ARTPresenceMessage *);

typedef void (^ARTRealtimePingCb)(ARTStatus *);
typedef void (^ARTRealtimePingCb)(ARTErrorInfo *__art_nullable);

typedef void (^ARTStatusCallback)(ARTStatus *status);

Expand Down
8 changes: 4 additions & 4 deletions Tests/ARTRealtimeConnectTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ - (void)testConnectPing {
[realtime.connection on:^(ARTConnectionStateChange *stateChange) {
ARTRealtimeConnectionState state = stateChange.current;
if (state == ARTRealtimeConnected) {
[realtime.connection ping:^(ARTStatus *status) {
XCTAssertEqual(ARTStateOk, status.state);
[realtime.connection ping:^(ARTErrorInfo *error) {
XCTAssertNil(error);
[expectation fulfill];
}];
}
Expand Down Expand Up @@ -289,12 +289,12 @@ - (void)testConnectPingError {
}
if(state == ARTRealtimeClosed) {
hasClosed = true;
XCTAssertThrows([realtime.connection ping:^(ARTStatus *s) {}]);
XCTAssertThrows([realtime.connection ping:^(ARTErrorInfo *e) {}]);
[realtime onError:[ARTTestUtil newErrorProtocolMessage]];
}
if(state == ARTRealtimeFailed) {
XCTAssertTrue(hasClosed);
XCTAssertThrows([realtime.connection ping:^(ARTStatus *s) {}]);
XCTAssertThrows([realtime.connection ping:^(ARTErrorInfo *e) {}]);
[exp fulfill];
[realtime.connection off:listener];
}
Expand Down

0 comments on commit 9cb5b9d

Please sign in to comment.