HTTPResponse.m
上传用户:kc0325
上传日期:2020-06-20
资源大小:204k
文件大小:2k
源码类别:

iPhone

开发平台:

Objective-C

  1. #import "HTTPResponse.h"
  2. @implementation HTTPFileResponse
  3. - (id)initWithFilePath:(NSString *)filePathParam
  4. {
  5. if(self = [super init])
  6. {
  7. filePath = [filePathParam copy];
  8. fileHandle = [[NSFileHandle fileHandleForReadingAtPath:filePath] retain];
  9. }
  10. return self;
  11. }
  12. - (void)dealloc
  13. {
  14. [filePath release];
  15. [fileHandle closeFile];
  16. [fileHandle release];
  17. [super dealloc];
  18. }
  19. - (UInt64)contentLength
  20. {
  21. NSDictionary *fileAttributes = [[NSFileManager defaultManager] fileAttributesAtPath:filePath traverseLink:NO];
  22. NSNumber *fileSize = [fileAttributes objectForKey:NSFileSize];
  23. return (UInt64)[fileSize unsignedLongLongValue];
  24. }
  25. - (UInt64)offset
  26. {
  27. return (UInt64)[fileHandle offsetInFile];
  28. }
  29. - (void)setOffset:(UInt64)offset
  30. {
  31. [fileHandle seekToFileOffset:offset];
  32. }
  33. - (NSData *)readDataOfLength:(unsigned int)length
  34. {
  35. return [fileHandle readDataOfLength:length];
  36. }
  37. - (NSString *)filePath
  38. {
  39. return filePath;
  40. }
  41. @end
  42. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  43. #pragma mark -
  44. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  45. @implementation HTTPDataResponse
  46. - (id)initWithData:(NSData *)dataParam
  47. {
  48. if(self = [super init])
  49. {
  50. offset = 0;
  51. data = [dataParam retain];
  52. }
  53. return self;
  54. }
  55. - (void)dealloc
  56. {
  57. [data release];
  58. [super dealloc];
  59. }
  60. - (UInt64)contentLength
  61. {
  62. return (UInt64)[data length];
  63. }
  64. - (UInt64)offset
  65. {
  66. return offset;
  67. }
  68. - (void)setOffset:(UInt64)offsetParam
  69. {
  70. offset = offsetParam;
  71. }
  72. - (NSData *)readDataOfLength:(unsigned int)lengthParameter
  73. {
  74. unsigned int remaining = [data length] - offset;
  75. unsigned int length = lengthParameter < remaining ? lengthParameter : remaining;
  76. void *bytes = (void *)([data bytes] + offset);
  77. offset += length;
  78. return [NSData dataWithBytesNoCopy:bytes length:length freeWhenDone:NO];
  79. }
  80. @end