浏览代码

Move setting request mechanism into a separate recorder method.

We need to untangle the mechanism from recordRequestWillBeSent… because we don’t have the full mechanism info (delegate class name) at that time for NSURLSession based requests.
Ryan Olson 11 年之前
父节点
当前提交
f7d23bc8a2

+ 5 - 2
Classes/Network/FLEXNetworkRecorder.h

@@ -42,8 +42,7 @@ extern NSString *const kFLEXNetworkRecorderTransactionsClearedNotification;
 // Recording network activity
 // Recording network activity
 
 
 /// Call when app is about to send HTTP request.
 /// Call when app is about to send HTTP request.
-/// This method must be called for each recorded reqeust. Prior to this call, no information will be recorded for the request.
-- (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse requestMechanism:(NSString *)mechanism;
+- (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse;
 
 
 /// Call when HTTP response is available.
 /// Call when HTTP response is available.
 - (void)recordResponseReceivedWithRequestId:(NSString *)requestId request:(NSURLRequest *)request response:(NSURLResponse *)response;
 - (void)recordResponseReceivedWithRequestId:(NSString *)requestId request:(NSURLRequest *)request response:(NSURLResponse *)response;
@@ -57,4 +56,8 @@ extern NSString *const kFLEXNetworkRecorderTransactionsClearedNotification;
 /// Call when HTTP request has failed to load.
 /// Call when HTTP request has failed to load.
 - (void)recordLoadingFailedWithRequestId:(NSString *)requestId request:(NSURLRequest *)request error:(NSError *)error;
 - (void)recordLoadingFailedWithRequestId:(NSString *)requestId request:(NSURLRequest *)request error:(NSError *)error;
 
 
+/// Call to set the request mechanism anytime after recordRequestWillBeSent... has been called.
+/// This string can be set to anything useful about the API used to make the request.
+- (void)recordMechanism:(NSString *)mechanism forRequestId:(NSString *)requestId;
+
 @end
 @end

+ 11 - 2
Classes/Network/FLEXNetworkRecorder.m

@@ -101,7 +101,7 @@ NSString *const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey = @"com.flex.r
 
 
 #pragma mark - Network Events
 #pragma mark - Network Events
 
 
-- (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse requestMechanism:(NSString *)mechanism
+- (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
 {
 {
     if (redirectResponse) {
     if (redirectResponse) {
         [self recordResponseReceivedWithRequestId:requestId request:request response:redirectResponse];
         [self recordResponseReceivedWithRequestId:requestId request:request response:redirectResponse];
@@ -111,7 +111,6 @@ NSString *const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey = @"com.flex.r
     dispatch_async(self.queue, ^{
     dispatch_async(self.queue, ^{
         FLEXNetworkTransaction *transaction = [self addOrRetrieveTransactionForRequestId:requestId request:request];
         FLEXNetworkTransaction *transaction = [self addOrRetrieveTransactionForRequestId:requestId request:request];
         transaction.transactionState = FLEXNetworkTransactionStateAwaitingResponse;
         transaction.transactionState = FLEXNetworkTransactionStateAwaitingResponse;
-        transaction.requestMechanism = mechanism;
 
 
         [self postNewTransactionNotificationWithTransaction:transaction];
         [self postNewTransactionNotificationWithTransaction:transaction];
     });
     });
@@ -204,6 +203,16 @@ NSString *const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey = @"com.flex.r
     });
     });
 }
 }
 
 
+- (void)recordMechanism:(NSString *)mechanism forRequestId:(NSString *)requestId
+{
+    dispatch_async(self.queue, ^{
+        FLEXNetworkTransaction *transaction = [self addOrRetrieveTransactionForRequestId:requestId request:nil];
+        transaction.requestMechanism = mechanism;
+
+        [self postUpdateNotificationForTransaction:transaction];
+    });
+}
+
 /// Should only be called on the serial queue used in this class
 /// Should only be called on the serial queue used in this class
 - (FLEXNetworkTransaction *)addOrRetrieveTransactionForRequestId:(NSString *)requestId request:(NSURLRequest *)request
 - (FLEXNetworkTransaction *)addOrRetrieveTransactionForRequestId:(NSString *)requestId request:(NSURLRequest *)request
 {
 {

+ 11 - 6
Classes/Network/PonyDebugger/FLEXNetworkObserver.m

@@ -786,7 +786,9 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
     [self performBlock:^{
     [self performBlock:^{
         [self setRequest:request forConnection:connection];
         [self setRequest:request forConnection:connection];
         NSString *requestId = [self requestIDForConnection:connection];
         NSString *requestId = [self requestIDForConnection:connection];
-        [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:requestId request:request redirectResponse:response requestMechanism:[NSString stringWithFormat:@"NSURLConnection (delegate: %@)", [delegate class]]];
+        [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:requestId request:request redirectResponse:response];
+        NSString *mechanism = [NSString stringWithFormat:@"NSURLConnection (delegate: %@)", [delegate class]];
+        [[FLEXNetworkRecorder defaultRecorder] recordMechanism:mechanism forRequestId:requestId];
     }];
     }];
 }
 }
 
 
@@ -799,7 +801,7 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
         if (!request) {
         if (!request) {
             request = connection.currentRequest;
             request = connection.currentRequest;
             [self setRequest:request forConnection:connection];
             [self setRequest:request forConnection:connection];
-            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForConnection:connection] request:request redirectResponse:nil requestMechanism:[NSString stringWithFormat:@"NSURLConnection (delegate: %@)", [delegate class]]];
+            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForConnection:connection] request:request redirectResponse:nil];
         }
         }
 
 
         NSMutableData *dataAccumulator = nil;
         NSMutableData *dataAccumulator = nil;
@@ -863,7 +865,7 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
 {
 {
     [self performBlock:^{
     [self performBlock:^{
         [self setRequest:request forTask:task];
         [self setRequest:request forTask:task];
-        [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForTask:task] request:request redirectResponse:response requestMechanism:[NSString stringWithFormat:@"NSURLSessionTask (delegate: %@)", [delegate class]]];
+        [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForTask:task] request:request redirectResponse:response];
     }];
     }];
 }
 }
 
 
@@ -876,7 +878,7 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
             request = dataTask.currentRequest;
             request = dataTask.currentRequest;
             [self setRequest:request forTask:dataTask];
             [self setRequest:request forTask:dataTask];
 
 
-            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForTask:dataTask] request:request redirectResponse:nil requestMechanism:[NSString stringWithFormat:@"NSURLSessionDataTask (delegate: %@)", [delegate class]]];
+            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:[self requestIDForTask:dataTask] request:request redirectResponse:nil];
         }
         }
 
 
         NSMutableData *dataAccumulator = nil;
         NSMutableData *dataAccumulator = nil;
@@ -889,6 +891,8 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
         [self setAccumulatedData:dataAccumulator forTask:dataTask];
         [self setAccumulatedData:dataAccumulator forTask:dataTask];
 
 
         NSString *requestID = [self requestIDForTask:dataTask];
         NSString *requestID = [self requestIDForTask:dataTask];
+        NSString *requestMechanism = [NSString stringWithFormat:@"NSURLSessionDataTask (delegate: %@)", [delegate class]];
+        [[FLEXNetworkRecorder defaultRecorder] recordMechanism:requestMechanism forRequestId:requestID];
         [[FLEXNetworkRecorder defaultRecorder] recordResponseReceivedWithRequestId:requestID request:dataTask.currentRequest response:response];
         [[FLEXNetworkRecorder defaultRecorder] recordResponseReceivedWithRequestId:requestID request:dataTask.currentRequest response:response];
     }];
     }];
 }
 }
@@ -946,7 +950,7 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
             [self setRequest:request forTask:downloadTask];
             [self setRequest:request forTask:downloadTask];
             NSString *requestID = [self requestIDForTask:downloadTask];
             NSString *requestID = [self requestIDForTask:downloadTask];
 
 
-            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:requestID request:request redirectResponse:nil requestMechanism:[NSString stringWithFormat:@"NSURLSessionDownloadTask (delegate: %@)", [delegate class]]];
+            [[FLEXNetworkRecorder defaultRecorder] recordRequestWillBeSentWithRequestId:requestID request:request redirectResponse:nil];
 
 
             NSMutableData *dataAccumulator = nil;
             NSMutableData *dataAccumulator = nil;
             dataAccumulator = [[NSMutableData alloc] initWithCapacity:(NSUInteger) totalBytesExpectedToWrite];
             dataAccumulator = [[NSMutableData alloc] initWithCapacity:(NSUInteger) totalBytesExpectedToWrite];
@@ -956,7 +960,8 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
         }
         }
 
 
         NSString *requestID = [self requestIDForTask:downloadTask];
         NSString *requestID = [self requestIDForTask:downloadTask];
-
+        NSString *requestMechanism = [NSString stringWithFormat:@"NSURLSessionDownloadTask (delegate: %@)", [delegate class]];
+        [[FLEXNetworkRecorder defaultRecorder] recordMechanism:requestMechanism forRequestId:requestID];
         [[FLEXNetworkRecorder defaultRecorder] recordDataReceivedWithRequestId:requestID request:downloadTask.currentRequest dataLength:bytesWritten];
         [[FLEXNetworkRecorder defaultRecorder] recordDataReceivedWithRequestId:requestID request:downloadTask.currentRequest dataLength:bytesWritten];
     }];
     }];
 }
 }