diff --git a/ui/RequestHistory.m b/ui/RequestHistory.m index 33acd2c..7de6ee0 100644 --- a/ui/RequestHistory.m +++ b/ui/RequestHistory.m @@ -1,4 +1,5 @@ #import "RequestHistory.h" +#import "RequestHistoryItem.h" @interface RequestHistory () @property (strong) NSMutableArray *items; @@ -20,19 +21,21 @@ - (id) tableView:(NSTableView *)view objectValueForTableColumn:(NSTableColumn *)column row:(NSInteger) row { NSLog(@"[RequestHistory] objectValueForTableColumn: %@ row: %zd", column, row); - NSValue *val = [[self items] objectAtIndex:row]; - if (!val) { + RequestHistoryItem *item = [[self items] objectAtIndex:row]; + if (!item) { return nil; } - RequestMeta meta; - [val getValue:&meta]; if ([[column identifier] isEqualToString:@"id"]) { - return [NSNumber numberWithInt:meta.seq]; + return [NSNumber numberWithInt:[item seq]]; } else if ([[column identifier] isEqualToString:@"status"]) { - return @"???"; + if ([item status] == 0) { + return @"???"; + } else { + return [NSNumber numberWithInt:[item status]]; + } } else if ([[column identifier] isEqualToString:@"path"]) { - return [NSString stringWithUTF8String:meta.path]; + return [item path]; } else { return @"fuck"; } @@ -40,11 +43,13 @@ - (void) addRequestItem:(RequestMeta *)meta { NSLog(@"[RequestHistory] add request item"); - [[self items] addObject:[NSValue valueWithBytes:meta objCType:@encode(RequestMeta)]]; + [[self items] addObject:[RequestHistoryItem itemWithRequestMeta:meta]]; } - (void) addResponseItem:(ResponseMeta *)meta { NSLog(@"[RequestHistory] add response item"); + id item = [[self items] objectAtIndex:meta->seq-1]; + [item updateWithResponseMeta:meta]; } @end diff --git a/ui/RequestHistoryItem.h b/ui/RequestHistoryItem.h new file mode 100644 index 0000000..ce7fae6 --- /dev/null +++ b/ui/RequestHistoryItem.h @@ -0,0 +1,15 @@ +#import +#import "ui_darwin.h" + +@interface RequestHistoryItem : NSObject + +@property (readonly) int seq; +@property (readonly, strong) NSString *path; +@property (readonly) int status; +@property (readonly) int bytes; + ++ (instancetype) itemWithRequestMeta:(RequestMeta *)meta; +- (instancetype) initWithRequestMeta:(RequestMeta *)meta; +- (void) updateWithResponseMeta:(ResponseMeta *)meta; + +@end diff --git a/ui/RequestHistoryItem.m b/ui/RequestHistoryItem.m new file mode 100644 index 0000000..15b1a61 --- /dev/null +++ b/ui/RequestHistoryItem.m @@ -0,0 +1,26 @@ +#import "RequestHistoryItem.h" + +@implementation RequestHistoryItem + ++ (instancetype) itemWithRequestMeta:(RequestMeta *)meta { + return [[self alloc] initWithRequestMeta:meta]; +} + +- (instancetype) initWithRequestMeta:(RequestMeta *)meta { + self = [super init]; + if (self) { + _seq = meta->seq; + _path = [NSString stringWithUTF8String:meta->path]; + } + return self; +} + +- (void) updateWithResponseMeta:(ResponseMeta *)meta { + if (meta->seq != self.seq) { + return; + } + _status = meta->status; + _bytes = meta->bytes; +} + +@end