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

Post notifications when new network requests are recorded and when requests are updated.

This will allow any UI which is displaying the requests to update appropriately.
Ryan Olson лет назад: 11
Родитель
Сommit
fad33ddf7a
2 измененных файлов с 26 добавлено и 0 удалено
  1. 5 0
      Classes/Network/FLEXNetworkRecorder.h
  2. 21 0
      Classes/Network/FLEXNetworkRecorder.m

+ 5 - 0
Classes/Network/FLEXNetworkRecorder.h

@@ -8,6 +8,11 @@
 
 
 #import <Foundation/Foundation.h>
 #import <Foundation/Foundation.h>
 
 
+// Notifications posted when the record is updated
+extern NSString *const kFLEXNetworkRecorderNewTransactionNotification;
+extern NSString *const kFLEXNetworkRecorderTransactionUpdatedNotification;
+extern NSString *const kFLEXNetworkRecorderUserInfoTransactionKey;
+
 @class FLEXNetworkTransaction;
 @class FLEXNetworkTransaction;
 
 
 @interface FLEXNetworkRecorder : NSObject
 @interface FLEXNetworkRecorder : NSObject

+ 21 - 0
Classes/Network/FLEXNetworkRecorder.m

@@ -9,6 +9,10 @@
 #import "FLEXNetworkRecorder.h"
 #import "FLEXNetworkRecorder.h"
 #import "FLEXNetworkTransaction.h"
 #import "FLEXNetworkTransaction.h"
 
 
+NSString *const kFLEXNetworkRecorderNewTransactionNotification = @"kFLEXNetworkRecorderNewTransactionNotification";
+NSString *const kFLEXNetworkRecorderTransactionUpdatedNotification = @"kFLEXNetworkRecorderTransactionUpdatedNotification";
+NSString *const kFLEXNetworkRecorderUserInfoTransactionKey = @"transaction";
+
 @interface FLEXNetworkRecorder ()
 @interface FLEXNetworkRecorder ()
 
 
 @property (nonatomic, strong) NSCache *responseCache;
 @property (nonatomic, strong) NSCache *responseCache;
@@ -66,6 +70,9 @@
 
 
     [self.orderedTransactions addObject:transaction];
     [self.orderedTransactions addObject:transaction];
     [self.networkTransactionsForRequestIdentifiers setObject:transaction forKey:requestId];
     [self.networkTransactionsForRequestIdentifiers setObject:transaction forKey:requestId];
+
+    NSDictionary *userInfo = @{ kFLEXNetworkRecorderUserInfoTransactionKey : transaction };
+    [[NSNotificationCenter defaultCenter] postNotificationName:kFLEXNetworkRecorderNewTransactionNotification object:self userInfo:userInfo];
 }
 }
 
 
 - (void)recordResponseReceivedWithRequestId:(NSString *)requestId response:(NSURLResponse *)response
 - (void)recordResponseReceivedWithRequestId:(NSString *)requestId response:(NSURLResponse *)response
@@ -74,12 +81,16 @@
     transaction.response = response;
     transaction.response = response;
     transaction.transactionState = FLEXNetworkTransactionStateReceivingData;
     transaction.transactionState = FLEXNetworkTransactionStateReceivingData;
     transaction.latency = -[transaction.startTime timeIntervalSinceNow];
     transaction.latency = -[transaction.startTime timeIntervalSinceNow];
+
+    [self postUpdateNotificationForTransaction:transaction];
 }
 }
 
 
 - (void)recordDataReceivedWithRequestId:(NSString *)requestId dataLength:(int64_t)dataLength
 - (void)recordDataReceivedWithRequestId:(NSString *)requestId dataLength:(int64_t)dataLength
 {
 {
     FLEXNetworkTransaction *transaction = [self.networkTransactionsForRequestIdentifiers objectForKey:requestId];
     FLEXNetworkTransaction *transaction = [self.networkTransactionsForRequestIdentifiers objectForKey:requestId];
     transaction.receivedDataLength += dataLength;
     transaction.receivedDataLength += dataLength;
+
+    [self postUpdateNotificationForTransaction:transaction];
 }
 }
 
 
 - (void)recordLoadingFinishedWithRequestId:(NSString *)requestId responseBody:(NSData *)responseBody
 - (void)recordLoadingFinishedWithRequestId:(NSString *)requestId responseBody:(NSData *)responseBody
@@ -89,6 +100,8 @@
     transaction.duration = -[transaction.startTime timeIntervalSinceNow];
     transaction.duration = -[transaction.startTime timeIntervalSinceNow];
 
 
     [self.responseCache setObject:responseBody forKey:requestId cost:[responseBody length]];
     [self.responseCache setObject:responseBody forKey:requestId cost:[responseBody length]];
+
+    [self postUpdateNotificationForTransaction:transaction];
 }
 }
 
 
 - (void)recordLoadingFailedWithRequestId:(NSString *)requestId error:(NSError *)error
 - (void)recordLoadingFailedWithRequestId:(NSString *)requestId error:(NSError *)error
@@ -97,6 +110,14 @@
     transaction.transactionState = FLEXNetworkTransactionStateFailed;
     transaction.transactionState = FLEXNetworkTransactionStateFailed;
     transaction.duration = [transaction.startTime timeIntervalSinceNow];
     transaction.duration = [transaction.startTime timeIntervalSinceNow];
     transaction.error = error;
     transaction.error = error;
+
+    [self postUpdateNotificationForTransaction:transaction];
+}
+
+- (void)postUpdateNotificationForTransaction:(FLEXNetworkTransaction *)transaction
+{
+    NSDictionary *userInfo = @{ kFLEXNetworkRecorderUserInfoTransactionKey : transaction };
+    [[NSNotificationCenter defaultCenter] postNotificationName:kFLEXNetworkRecorderTransactionUpdatedNotification object:self userInfo:userInfo];
 }
 }
 
 
 @end
 @end