mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-23 09:04:13 +00:00
NSURLSession: use mutable data for transfer state body
This commit is contained in:
parent
c0a6227013
commit
153482ea94
2 changed files with 11 additions and 42 deletions
|
@ -7,6 +7,7 @@
|
|||
@class GSURLSessionTaskBodySource;
|
||||
@class NSArray;
|
||||
@class NSData;
|
||||
@class NSMutableData;
|
||||
@class NSFileHandle;
|
||||
@class NSHTTPURLResponse;
|
||||
@class NSURL;
|
||||
|
@ -57,7 +58,7 @@ typedef NS_ENUM(NSUInteger, GSDataDrainType) {
|
|||
@interface GSDataDrain: NSObject
|
||||
{
|
||||
GSDataDrainType _type;
|
||||
NSData *_data;
|
||||
NSMutableData *_data;
|
||||
NSURL *_fileURL;
|
||||
NSFileHandle *_fileHandle;
|
||||
}
|
||||
|
@ -65,14 +66,11 @@ typedef NS_ENUM(NSUInteger, GSDataDrainType) {
|
|||
- (GSDataDrainType) type;
|
||||
- (void) setType: (GSDataDrainType)type;
|
||||
|
||||
- (NSData*) data;
|
||||
- (void) setData: (NSData*)data;
|
||||
- (NSMutableData*) data;
|
||||
|
||||
- (NSURL*) fileURL;
|
||||
- (void) setFileURL: (NSURL*)url;
|
||||
|
||||
- (NSFileHandle*) fileHandle;
|
||||
- (void) setFileHandle: (NSFileHandle*)handle;
|
||||
|
||||
@end
|
||||
|
||||
|
|
|
@ -268,14 +268,14 @@
|
|||
_type = type;
|
||||
}
|
||||
|
||||
- (NSData*) data
|
||||
- (NSMutableData*) data
|
||||
{
|
||||
return _data;
|
||||
}
|
||||
if (!_data)
|
||||
{
|
||||
_data = [[NSMutableData alloc] init];
|
||||
}
|
||||
|
||||
- (void) setData: (NSData*)data
|
||||
{
|
||||
ASSIGN(_data, data);
|
||||
return _data;
|
||||
}
|
||||
|
||||
- (NSURL*) fileURL
|
||||
|
@ -298,11 +298,6 @@
|
|||
return _fileURL;
|
||||
}
|
||||
|
||||
- (void) setFileURL: (NSURL*)url
|
||||
{
|
||||
ASSIGN(_fileURL, url);
|
||||
}
|
||||
|
||||
- (NSFileHandle*) fileHandle
|
||||
{
|
||||
/* Create temporary file and open a fileHandle for writing. */
|
||||
|
@ -319,11 +314,6 @@
|
|||
return _fileHandle;
|
||||
}
|
||||
|
||||
- (void) setFileHandle: (NSFileHandle*)handle
|
||||
{
|
||||
ASSIGN(_fileHandle, handle);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation GSTransferState
|
||||
|
@ -389,27 +379,8 @@
|
|||
switch ([_bodyDataDrain type])
|
||||
{
|
||||
case GSDataDrainInMemory:
|
||||
{
|
||||
NSMutableData *data;
|
||||
GSDataDrain *dataDrain;
|
||||
GSTransferState *ts;
|
||||
|
||||
data = [_bodyDataDrain data] ?
|
||||
AUTORELEASE([[_bodyDataDrain data] mutableCopy])
|
||||
: [NSMutableData data];
|
||||
|
||||
[data appendData: bodyData];
|
||||
dataDrain = AUTORELEASE([[GSDataDrain alloc] init]);
|
||||
[dataDrain setType: GSDataDrainInMemory];
|
||||
[dataDrain setData: data];
|
||||
|
||||
ts = [[GSTransferState alloc] initWithURL: _url
|
||||
parsedResponseHeader: _parsedResponseHeader
|
||||
response: _response
|
||||
bodySource: _requestBodySource
|
||||
bodyDataDrain: dataDrain];
|
||||
return AUTORELEASE(ts);
|
||||
}
|
||||
[[_bodyDataDrain data] appendData: bodyData];
|
||||
return self;
|
||||
case GSDataDrainTypeToFile:
|
||||
{
|
||||
NSFileHandle *fileHandle;
|
||||
|
|
Loading…
Reference in a new issue