1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
#import "Progress.h"
@implementation CSHandle (Progress)
-(double)estimatedProgress
{
off_t size=[self fileSize];
if(size==CSHandleMaxLength) return 0;
return (double)[self offsetInFile]/(double)size;
}
@end
@implementation CSStreamHandle (progress)
-(double)estimatedProgress
{
if(streamlength==CSHandleMaxLength)
{
if(input) return [input->parent estimatedProgress]; // TODO: better estimation
else return 0;
}
else return (double)streampos/(double)streamlength;
}
@end
@implementation CSZlibHandle (Progress)
-(double)estimatedProgress { return [parent estimatedProgress]; } // TODO: better estimation using buffer?
@end
@implementation CSBzip2Handle (progress)
-(double)estimatedProgress { return [parent estimatedProgress]; } // TODO: better estimation using buffer?
@end
// TODO: more handles like LZMA?
|