|
|
@ -132,8 +132,12 @@ |
|
|
|
grpc_metadata_array_init(&_headers); |
|
|
|
grpc_metadata_array_init(&_headers); |
|
|
|
_op.data.recv_initial_metadata = &_headers; |
|
|
|
_op.data.recv_initial_metadata = &_headers; |
|
|
|
if (handler) { |
|
|
|
if (handler) { |
|
|
|
|
|
|
|
// Prevent reference cycle with handler |
|
|
|
|
|
|
|
__weak typeof(self) weakSelf = self; |
|
|
|
_handler = ^{ |
|
|
|
_handler = ^{ |
|
|
|
NSDictionary *metadata = [NSDictionary grpc_dictionaryFromMetadataArray:_headers]; |
|
|
|
__strong typeof(self) strongSelf = weakSelf; |
|
|
|
|
|
|
|
NSDictionary *metadata = [NSDictionary |
|
|
|
|
|
|
|
grpc_dictionaryFromMetadataArray:strongSelf->_headers]; |
|
|
|
handler(metadata); |
|
|
|
handler(metadata); |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
@ -160,8 +164,11 @@ |
|
|
|
_op.op = GRPC_OP_RECV_MESSAGE; |
|
|
|
_op.op = GRPC_OP_RECV_MESSAGE; |
|
|
|
_op.data.recv_message = &_receivedMessage; |
|
|
|
_op.data.recv_message = &_receivedMessage; |
|
|
|
if (handler) { |
|
|
|
if (handler) { |
|
|
|
|
|
|
|
// Prevent reference cycle with handler |
|
|
|
|
|
|
|
__weak typeof(self) weakSelf = self; |
|
|
|
_handler = ^{ |
|
|
|
_handler = ^{ |
|
|
|
handler(_receivedMessage); |
|
|
|
__strong typeof(self) strongSelf = weakSelf; |
|
|
|
|
|
|
|
handler(strongSelf->_receivedMessage); |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -190,9 +197,14 @@ |
|
|
|
grpc_metadata_array_init(&_trailers); |
|
|
|
grpc_metadata_array_init(&_trailers); |
|
|
|
_op.data.recv_status_on_client.trailing_metadata = &_trailers; |
|
|
|
_op.data.recv_status_on_client.trailing_metadata = &_trailers; |
|
|
|
if (handler) { |
|
|
|
if (handler) { |
|
|
|
|
|
|
|
// Prevent reference cycle with handler |
|
|
|
|
|
|
|
__weak typeof(self) weakSelf = self; |
|
|
|
_handler = ^{ |
|
|
|
_handler = ^{ |
|
|
|
NSError *error = [NSError grpc_errorFromStatusCode:_statusCode details:_details]; |
|
|
|
__strong typeof(self) strongSelf = weakSelf; |
|
|
|
NSDictionary *trailers = [NSDictionary grpc_dictionaryFromMetadataArray:_trailers]; |
|
|
|
NSError *error = [NSError grpc_errorFromStatusCode:strongSelf->_statusCode |
|
|
|
|
|
|
|
details:strongSelf->_details]; |
|
|
|
|
|
|
|
NSDictionary *trailers = [NSDictionary |
|
|
|
|
|
|
|
grpc_dictionaryFromMetadataArray:strongSelf->_trailers]; |
|
|
|
handler(error, trailers); |
|
|
|
handler(error, trailers); |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|