diff options
Diffstat (limited to 'src/client/ios/Breakpad.mm')
-rw-r--r-- | src/client/ios/Breakpad.mm | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/src/client/ios/Breakpad.mm b/src/client/ios/Breakpad.mm index c99ee4fd..2d8ba61e 100644 --- a/src/client/ios/Breakpad.mm +++ b/src/client/ios/Breakpad.mm @@ -164,7 +164,8 @@ class Breakpad { NSDate *DateOfMostRecentCrashReport(); void UploadNextReport(NSDictionary *server_parameters); void UploadReportWithConfiguration(NSDictionary *configuration, - NSDictionary *server_parameters); + NSDictionary *server_parameters, + BreakpadUploadCompletionCallback callback); void UploadData(NSData *data, NSString *name, NSDictionary *server_parameters); void HandleNetworkResponse(NSDictionary *configuration, @@ -502,8 +503,10 @@ void Breakpad::HandleNetworkResponse(NSDictionary *configuration, } //============================================================================= -void Breakpad::UploadReportWithConfiguration(NSDictionary *configuration, - NSDictionary *server_parameters) { +void Breakpad::UploadReportWithConfiguration( + NSDictionary *configuration, + NSDictionary *server_parameters, + BreakpadUploadCompletionCallback callback) { Uploader *uploader = [[[Uploader alloc] initWithConfig:configuration] autorelease]; if (!uploader) @@ -512,6 +515,13 @@ void Breakpad::UploadReportWithConfiguration(NSDictionary *configuration, [uploader addServerParameter:[server_parameters objectForKey:key] forKey:key]; } + if (callback) { + [uploader setUploadCompletionBlock:^(NSString *report_id, NSError *error) { + dispatch_async(dispatch_get_main_queue(), ^{ + callback(report_id, error); + }); + }]; + } [uploader report]; } @@ -519,7 +529,8 @@ void Breakpad::UploadReportWithConfiguration(NSDictionary *configuration, void Breakpad::UploadNextReport(NSDictionary *server_parameters) { NSDictionary *configuration = NextCrashReportConfiguration(); if (configuration) { - return UploadReportWithConfiguration(configuration, server_parameters); + return UploadReportWithConfiguration(configuration, server_parameters, + nullptr); } } @@ -850,7 +861,7 @@ int BreakpadGetCrashReportCount(BreakpadRef ref) { //============================================================================= void BreakpadUploadNextReport(BreakpadRef ref) { - BreakpadUploadNextReportWithParameters(ref, nil); + BreakpadUploadNextReportWithParameters(ref, nil, nullptr); } //============================================================================= @@ -882,22 +893,25 @@ NSDate *BreakpadGetDateOfMostRecentCrashReport(BreakpadRef ref) { void BreakpadUploadReportWithParametersAndConfiguration( BreakpadRef ref, NSDictionary *server_parameters, - NSDictionary *configuration) { + NSDictionary *configuration, + BreakpadUploadCompletionCallback callback) { try { Breakpad *breakpad = (Breakpad *)ref; if (!breakpad || !configuration) return; - breakpad->UploadReportWithConfiguration(configuration, server_parameters); + breakpad->UploadReportWithConfiguration(configuration, server_parameters, + callback); } catch(...) { // don't let exceptions leave this C API fprintf(stderr, "BreakpadUploadReportWithParametersAndConfiguration() : error\n"); } - } //============================================================================= -void BreakpadUploadNextReportWithParameters(BreakpadRef ref, - NSDictionary *server_parameters) { +void BreakpadUploadNextReportWithParameters( + BreakpadRef ref, + NSDictionary *server_parameters, + BreakpadUploadCompletionCallback callback) { try { Breakpad *breakpad = (Breakpad *)ref; if (!breakpad) @@ -905,9 +919,8 @@ void BreakpadUploadNextReportWithParameters(BreakpadRef ref, NSDictionary *configuration = breakpad->NextCrashReportConfiguration(); if (!configuration) return; - return BreakpadUploadReportWithParametersAndConfiguration(ref, - server_parameters, - configuration); + return BreakpadUploadReportWithParametersAndConfiguration( + ref, server_parameters, configuration, callback); } catch(...) { // don't let exceptions leave this C API fprintf(stderr, "BreakpadUploadNextReportWithParameters() : error\n"); } |