ASIDataCompressor.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //
  2. // ASIDataCompressor.h
  3. // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest
  4. //
  5. // Created by Ben Copsey on 17/08/2010.
  6. // Copyright 2010 All-Seeing Interactive. All rights reserved.
  7. //
  8. // This is a helper class used by ASIHTTPRequest to handle deflating (compressing) data in memory and on disk
  9. // You may also find it helpful if you need to deflate data and files yourself - see the class methods below
  10. // Most of the zlib stuff is based on the sample code by Mark Adler available at http://zlib.net
  11. #import <Foundation/Foundation.h>
  12. #import <zlib.h>
  13. @interface ASIDataCompressor : NSObject {
  14. BOOL streamReady;
  15. z_stream zStream;
  16. }
  17. // Convenience constructor will call setupStream for you
  18. + (id)compressor;
  19. // Compress the passed chunk of data
  20. // Passing YES for shouldFinish will finalize the deflated data - you must pass YES when you are on the last chunk of data
  21. - (NSData *)compressBytes:(Bytef *)bytes length:(NSUInteger)length error:(NSError **)err shouldFinish:(BOOL)shouldFinish;
  22. // Convenience method - pass it some data, and you'll get deflated data back
  23. + (NSData *)compressData:(NSData*)uncompressedData error:(NSError **)err;
  24. // Convenience method - pass it a file containing the data to compress in sourcePath, and it will write deflated data to destinationPath
  25. + (BOOL)compressDataFromFile:(NSString *)sourcePath toFile:(NSString *)destinationPath error:(NSError **)err;
  26. // Sets up zlib to handle the inflating. You only need to call this yourself if you aren't using the convenience constructor 'compressor'
  27. - (NSError *)setupStream;
  28. // Tells zlib to clean up. You need to call this if you need to cancel deflating part way through
  29. // If deflating finishes or fails, this method will be called automatically
  30. - (NSError *)closeStream;
  31. @property (atomic, assign, readonly) BOOL streamReady;
  32. @end