Wrap parsing error appropriately before propagating.

pull/3237/head
Jorge Canizales 10 years ago
parent ebfd11909c
commit f5d519464f
  1. 16
      src/objective-c/ProtoRPC/ProtoRPC.m

@ -37,6 +37,20 @@
#import <RxLibrary/GRXWriteable.h>
#import <RxLibrary/GRXWriter+Transformations.h>
static NSError *ErrorForBadProto(id proto, Class expectedClass, NSError *parsingError) {
NSDictionary *info = @{
NSLocalizedDescriptionKey: @"Unable to parse response from the server",
NSLocalizedRecoverySuggestionErrorKey: @"Retry with exponential backoff",
NSUnderlyingErrorKey: parsingError,
@"Expected class": expectedClass,
@"Received value": proto,
};
// TODO(jcanizales): Use kGRPCErrorDomain and GRPCErrorCodeInternal when they're public.
return [NSError errorWithDomain:@"io.grpc"
code:13
userInfo:info];
}
@implementation ProtoRPC {
id<GRXWriteable> _responseWriteable;
}
@ -82,7 +96,7 @@
if (parsed) {
[responsesWriteable writeValue:parsed];
} else {
[weakSelf finishWithError:error];
[weakSelf finishWithError:ErrorForBadProto(value, responseClass, error)];
}
} completionHandler:^(NSError *errorOrNil) {
[responsesWriteable writesFinishedWithError:errorOrNil];

Loading…
Cancel
Save