Просмотр исходного кода

Add API to the network recorder to clear recorder activity

Post a notification when finished so UI that shows the network activity can update.
Ryan Olson лет назад: 11
Родитель
Сommit
cbfc49bd0c
2 измененных файлов с 17 добавлено и 0 удалено
  1. 4 0
      Classes/Network/FLEXNetworkRecorder.h
  2. 13 0
      Classes/Network/FLEXNetworkRecorder.m

+ 4 - 0
Classes/Network/FLEXNetworkRecorder.h

@@ -12,6 +12,7 @@
 extern NSString *const kFLEXNetworkRecorderNewTransactionNotification;
 extern NSString *const kFLEXNetworkRecorderTransactionUpdatedNotification;
 extern NSString *const kFLEXNetworkRecorderUserInfoTransactionKey;
+extern NSString *const kFLEXNetworkRecorderTransactionsClearedNotification;
 
 @class FLEXNetworkTransaction;
 
@@ -34,6 +35,9 @@ extern NSString *const kFLEXNetworkRecorderUserInfoTransactionKey;
 /// The full response data IFF it hasn't been purged due to memory pressure.
 - (NSData *)cachedResponseBodyForTransaction:(FLEXNetworkTransaction *)transaction;
 
+/// Dumps all network transactions and cached response bodies.
+- (void)clearRecordedActivity;
+
 
 // Recording network activity
 

+ 13 - 0
Classes/Network/FLEXNetworkRecorder.m

@@ -14,6 +14,7 @@
 NSString *const kFLEXNetworkRecorderNewTransactionNotification = @"kFLEXNetworkRecorderNewTransactionNotification";
 NSString *const kFLEXNetworkRecorderTransactionUpdatedNotification = @"kFLEXNetworkRecorderTransactionUpdatedNotification";
 NSString *const kFLEXNetworkRecorderUserInfoTransactionKey = @"transaction";
+NSString *const kFLEXNetworkRecorderTransactionsClearedNotification = @"kFLEXNetworkRecorderTransactionsClearedNotification";
 
 NSString *const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey = @"com.flex.responseCacheLimit";
 
@@ -84,6 +85,18 @@ NSString *const kFLEXNetworkRecorderResponseCacheLimitDefaultsKey = @"com.flex.r
     return [self.responseCache objectForKey:transaction.requestId];
 }
 
+- (void)clearRecordedActivity
+{
+    dispatch_barrier_async(self.queue, ^{
+        [self.responseCache removeAllObjects];
+        [self.orderedTransactions removeAllObjects];
+        [self.networkTransactionsForRequestIdentifiers removeAllObjects];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [[NSNotificationCenter defaultCenter] postNotificationName:kFLEXNetworkRecorderTransactionsClearedNotification object:self];
+        });
+    });
+}
+
 #pragma mark - Network Events
 
 - (void)recordRequestWillBeSentWithRequestId:(NSString *)requestId request:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse requestMechanism:(NSString *)mechanism