29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#define GIBIBYTE (1024 * 1024 * 1024)
#define MEBIBYTE (1024 * 1024)
#define KIBIBYTE (1024)
#define UPDATE_INTERVAL 0.1
@implementation ProgressBar
- (instancetype)initWithLength: (intmax_t)length
resumedFrom: (intmax_t)resumedFrom
{
self = [super init];
@try {
void *pool = objc_autoreleasePoolPush();
_length = length;
|
|
|
|
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#define GIBIBYTE (1024 * 1024 * 1024)
#define MEBIBYTE (1024 * 1024)
#define KIBIBYTE (1024)
#define UPDATE_INTERVAL 0.1
@implementation ProgressBar
- (instancetype)initWithLength: (unsigned long long)length
resumedFrom: (unsigned long long)resumedFrom
{
self = [super init];
@try {
void *pool = objc_autoreleasePoolPush();
_length = length;
|
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
[_lastReceivedDate release];
[_drawTimer release];
[_BPSTimer release];
[super dealloc];
}
- (void)setReceived: (intmax_t)received
{
_received = received;
}
- (void)_drawProgress
{
float bars, percent;
|
|
|
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
[_lastReceivedDate release];
[_drawTimer release];
[_BPSTimer release];
[super dealloc];
}
- (void)setReceived: (unsigned long long)received
{
_received = received;
}
- (void)_drawProgress
{
float bars, percent;
|
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
[of_stdout writeString: OF_LOCALIZED(@"progress_kib",
@"%[num] KiB",
@"num", num)];
} else {
OFString *num = [OFString stringWithFormat:
@"%jd", _resumedFrom + _received];
[of_stdout writeString: OF_LOCALIZED(@"progress_bytes",
[@"["
@" ["
@" {'num == 1': '1 byte '},"
@" {'': '%[num] bytes'}"
@" ]"
@"]" JSONValue],
@"num", num)];
}
[of_stdout writeString: @" "];
if (_stopped)
_BPS = (float)_received /
|
|
|
|
|
|
|
|
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
[of_stdout writeString: OF_LOCALIZED(@"progress_kib",
@"%[num] KiB",
@"num", num)];
} else {
OFString *num = [OFString stringWithFormat:
@"%jd", _resumedFrom + _received];
[of_stdout writeString: OF_LOCALIZED(@"progress_bytes",
@"["
@" ["
@" {'num == 1': '1 byte '},"
@" {'': '%[num] bytes'}"
@" ]"
@"]".objectByParsingJSON,
@"num", num)];
}
[of_stdout writeString: @" "];
if (_stopped)
_BPS = (float)_received /
|
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
|
[self _drawProgress];
else
[self _drawReceived];
}
- (void)calculateBPSAndETA
{
_BPS = (float)(_received - _lastReceived) /
-(float)_lastReceivedDate.timeIntervalSinceNow;
_ETA = (double)(_length - _received) / _BPS;
_lastReceived = _received;
[_lastReceivedDate release];
_lastReceivedDate = [[OFDate alloc] init];
}
|
>
|
>
>
>
>
>
>
>
>
>
|
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
|
[self _drawProgress];
else
[self _drawReceived];
}
- (void)calculateBPSAndETA
{
_BPSWindow[_BPSWindowIndex++ % BPS_WINDOW_SIZE] =
(float)(_received - _lastReceived) /
-(float)_lastReceivedDate.timeIntervalSinceNow;
if (_BPSWindowLength < BPS_WINDOW_SIZE)
_BPSWindowLength++;
_BPS = 0;
for (size_t i = 0; i < _BPSWindowLength; i++)
_BPS += _BPSWindow[i];
_BPS /= _BPSWindowLength;
_ETA = (double)(_length - _received) / _BPS;
_lastReceived = _received;
[_lastReceivedDate release];
_lastReceivedDate = [[OFDate alloc] init];
}
|