Simplified startBatch, resolved comments

pull/1363/head
murgatroid99 10 years ago
parent 33655f970b
commit 2101a48e1f
  1. 4
      src/objective-c/GRPCClient/private/GRPCCompletionQueue.h
  2. 2
      src/objective-c/GRPCClient/private/GRPCCompletionQueue.m
  3. 2
      src/objective-c/GRPCClient/private/GRPCWrappedCall.h
  4. 76
      src/objective-c/GRPCClient/private/GRPCWrappedCall.m

@ -34,8 +34,6 @@
#import <Foundation/Foundation.h>
#include <grpc/grpc.h>
struct grpc_completion_queue;
typedef void(^GRPCQueueCompletionHandler)(grpc_op_error error);
// This class lets one more easily use grpc_completion_queue. To use it, pass
@ -48,7 +46,7 @@ typedef void(^GRPCQueueCompletionHandler)(grpc_op_error error);
// Release the GRPCCompletionQueue object only after you are not going to pass
// any more blocks to the grpc_call that's using it.
@interface GRPCCompletionQueue : NSObject
@property(nonatomic, readonly) struct grpc_completion_queue *unmanagedQueue;
@property(nonatomic, readonly) grpc_completion_queue *unmanagedQueue;
+ (instancetype)completionQueue;
@end

@ -46,7 +46,7 @@
- (instancetype)init {
if ((self = [super init])) {
_unmanagedQueue = grpc_completion_queue_create();
// This is for the following block to capture the pointer by value (instead
// of retaining self and doing self->_unmanagedQueue). This is essential
// because the block doesn't end until after grpc_completion_queue_shutdown

@ -41,7 +41,7 @@ typedef void(^GRPCCompletionHandler)(NSDictionary *);
- (void)getOp:(grpc_op *)op;
- (void(^)(void))opProcessor;
- (void)finish;
@end

@ -66,12 +66,10 @@
op->data.send_initial_metadata.metadata = _send_metadata;
}
- (void (^)(void))opProcessor {
return ^{
if (_handler) {
_handler();
}
};
- (void)finish {
if (_handler) {
_handler();
}
}
- (void)dealloc {
@ -91,7 +89,7 @@
- (instancetype)initWithMessage:(NSData *)message handler:(void (^)(void))handler {
if (!message) {
[NSException raise:NSInvalidArgumentException format:@"message cannot be null"];
[NSException raise:NSInvalidArgumentException format:@"message cannot be nil"];
}
if (self = [super init]) {
_byte_buffer = [message grpc_byteBuffer];
@ -105,12 +103,10 @@
op->data.send_message = _byte_buffer;
}
- (void (^)(void))opProcessor {
return ^{
if (_handler) {
_handler();
}
};
- (void)finish {
if (_handler) {
_handler();
}
}
- (void)dealloc {
@ -138,12 +134,10 @@
op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
}
- (void (^)(void))opProcessor {
return ^{
if (_handler) {
_handler();
}
};
- (void)finish {
if (_handler) {
_handler();
}
}
@end
@ -170,15 +164,13 @@
op->data.recv_initial_metadata = &_recv_initial_metadata;
}
- (void (^)(void))opProcessor {
return ^{
NSDictionary *metadata = [NSDictionary
grpc_dictionaryFromMetadata:_recv_initial_metadata.metadata
count:_recv_initial_metadata.count];
if (_handler) {
_handler(metadata);
}
};
- (void)finish {
NSDictionary *metadata = [NSDictionary
grpc_dictionaryFromMetadata:_recv_initial_metadata.metadata
count:_recv_initial_metadata.count];
if (_handler) {
_handler(metadata);
}
}
- (void)dealloc {
@ -208,12 +200,10 @@
op->data.recv_message = &_recv_message;
}
- (void (^)(void))opProcessor {
return ^{
if (_handler) {
_handler(_recv_message);
}
};
- (void)finish {
if (_handler) {
_handler(_recv_message);
}
}
@end
@ -246,13 +236,11 @@
op->data.recv_status_on_client.trailing_metadata = &_status.metadata;
}
- (void (^)(void))opProcessor {
return ^{
if (_handler) {
NSError *error = [NSError grpc_errorFromStatus:&_status];
_handler(error);
}
};
- (void)opProcessor {
if (_handler) {
NSError *error = [NSError grpc_errorFromStatus:&_status];
_handler(error);
}
}
- (void)dealloc {
@ -302,13 +290,11 @@
}
- (void)startBatchWithOperations:(NSArray *)operations errorHandler:(void (^)())errorHandler {
NSMutableArray *opProcessors = [NSMutableArray array];
size_t nops = operations.count;
grpc_op *ops_array = gpr_malloc(nops * sizeof(grpc_op));
size_t i = 0;
for (id op in operations) {
[op getOp:&ops_array[i++]];
[opProcessors addObject:[op opProcessor]];
}
grpc_call_error error = grpc_call_start_batch(_call, ops_array, nops,
(__bridge_retained void *)(^(grpc_op_error error){
@ -319,8 +305,8 @@
return;
}
}
for (void(^processor)(void) in opProcessors) {
processor();
for (id<GRPCOp> operation in operations) {
[operation finish];
}
}));

Loading…
Cancel
Save