root / pithos-macos / PithosActivityFacility.m @ 3740ba57
History | View | Annotate | Download (12.8 kB)
1 | 470e6f81 | Miltiadis Vasilakis | // |
---|---|---|---|
2 | 470e6f81 | Miltiadis Vasilakis | // PithosActivityFacility.m |
3 | 470e6f81 | Miltiadis Vasilakis | // pithos-macos |
4 | 470e6f81 | Miltiadis Vasilakis | // |
5 | d8426ffb | Miltiadis Vasilakis | // Copyright 2011-2012 GRNET S.A. All rights reserved. |
6 | 470e6f81 | Miltiadis Vasilakis | // |
7 | 470e6f81 | Miltiadis Vasilakis | // Redistribution and use in source and binary forms, with or |
8 | 470e6f81 | Miltiadis Vasilakis | // without modification, are permitted provided that the following |
9 | 470e6f81 | Miltiadis Vasilakis | // conditions are met: |
10 | 470e6f81 | Miltiadis Vasilakis | // |
11 | 470e6f81 | Miltiadis Vasilakis | // 1. Redistributions of source code must retain the above |
12 | 470e6f81 | Miltiadis Vasilakis | // copyright notice, this list of conditions and the following |
13 | 470e6f81 | Miltiadis Vasilakis | // disclaimer. |
14 | 470e6f81 | Miltiadis Vasilakis | // |
15 | 470e6f81 | Miltiadis Vasilakis | // 2. Redistributions in binary form must reproduce the above |
16 | 470e6f81 | Miltiadis Vasilakis | // copyright notice, this list of conditions and the following |
17 | 470e6f81 | Miltiadis Vasilakis | // disclaimer in the documentation and/or other materials |
18 | 470e6f81 | Miltiadis Vasilakis | // provided with the distribution. |
19 | 470e6f81 | Miltiadis Vasilakis | // |
20 | 470e6f81 | Miltiadis Vasilakis | // THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS |
21 | 470e6f81 | Miltiadis Vasilakis | // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
22 | 470e6f81 | Miltiadis Vasilakis | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
23 | 470e6f81 | Miltiadis Vasilakis | // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR |
24 | 470e6f81 | Miltiadis Vasilakis | // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
25 | 470e6f81 | Miltiadis Vasilakis | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
26 | 470e6f81 | Miltiadis Vasilakis | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
27 | 470e6f81 | Miltiadis Vasilakis | // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
28 | 470e6f81 | Miltiadis Vasilakis | // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
29 | 470e6f81 | Miltiadis Vasilakis | // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
30 | 470e6f81 | Miltiadis Vasilakis | // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
31 | 470e6f81 | Miltiadis Vasilakis | // POSSIBILITY OF SUCH DAMAGE. |
32 | 470e6f81 | Miltiadis Vasilakis | // |
33 | 470e6f81 | Miltiadis Vasilakis | // The views and conclusions contained in the software and |
34 | 470e6f81 | Miltiadis Vasilakis | // documentation are those of the authors and should not be |
35 | 470e6f81 | Miltiadis Vasilakis | // interpreted as representing official policies, either expressed |
36 | 470e6f81 | Miltiadis Vasilakis | // or implied, of GRNET S.A. |
37 | 470e6f81 | Miltiadis Vasilakis | |
38 | 470e6f81 | Miltiadis Vasilakis | #import "PithosActivityFacility.h" |
39 | d8426ffb | Miltiadis Vasilakis | #import "PithosAccount.h" |
40 | 544b6f52 | Miltiadis Vasilakis | #import "pithos_macosAppDelegate.h" |
41 | 470e6f81 | Miltiadis Vasilakis | |
42 | 470e6f81 | Miltiadis Vasilakis | static PithosActivityFacility *defaultPithosActivityFacility = nil; |
43 | 470e6f81 | Miltiadis Vasilakis | |
44 | 470e6f81 | Miltiadis Vasilakis | @implementation PithosActivityFacility |
45 | 470e6f81 | Miltiadis Vasilakis | @synthesize delegate; |
46 | 470e6f81 | Miltiadis Vasilakis | |
47 | 470e6f81 | Miltiadis Vasilakis | #pragma mark - |
48 | 470e6f81 | Miltiadis Vasilakis | #pragma mark - Singleton |
49 | 470e6f81 | Miltiadis Vasilakis | |
50 | 470e6f81 | Miltiadis Vasilakis | + (id)defaultPithosActivityFacility { |
51 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
52 | 470e6f81 | Miltiadis Vasilakis | if (!defaultPithosActivityFacility) |
53 | 470e6f81 | Miltiadis Vasilakis | [[self alloc] init]; // Assignment not done here |
54 | 470e6f81 | Miltiadis Vasilakis | } |
55 | 470e6f81 | Miltiadis Vasilakis | return defaultPithosActivityFacility; |
56 | 470e6f81 | Miltiadis Vasilakis | } |
57 | 470e6f81 | Miltiadis Vasilakis | |
58 | 470e6f81 | Miltiadis Vasilakis | + (id)allocWithZone:(NSZone *)zone { |
59 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
60 | 470e6f81 | Miltiadis Vasilakis | if (!defaultPithosActivityFacility) { |
61 | 470e6f81 | Miltiadis Vasilakis | defaultPithosActivityFacility = [super allocWithZone:zone]; |
62 | 470e6f81 | Miltiadis Vasilakis | return defaultPithosActivityFacility; |
63 | 470e6f81 | Miltiadis Vasilakis | } |
64 | 470e6f81 | Miltiadis Vasilakis | } |
65 | 470e6f81 | Miltiadis Vasilakis | return nil; |
66 | 470e6f81 | Miltiadis Vasilakis | } |
67 | 470e6f81 | Miltiadis Vasilakis | |
68 | 470e6f81 | Miltiadis Vasilakis | - (id)copyWithZone:(NSZone *)zone { |
69 | 470e6f81 | Miltiadis Vasilakis | return self; |
70 | 470e6f81 | Miltiadis Vasilakis | } |
71 | 470e6f81 | Miltiadis Vasilakis | |
72 | 470e6f81 | Miltiadis Vasilakis | - (id)retain { |
73 | 470e6f81 | Miltiadis Vasilakis | return self; |
74 | 470e6f81 | Miltiadis Vasilakis | } |
75 | 470e6f81 | Miltiadis Vasilakis | |
76 | 470e6f81 | Miltiadis Vasilakis | - (NSUInteger)retainCount { |
77 | 470e6f81 | Miltiadis Vasilakis | return UINT_MAX; // Can not be released |
78 | 470e6f81 | Miltiadis Vasilakis | } |
79 | 470e6f81 | Miltiadis Vasilakis | |
80 | 470e6f81 | Miltiadis Vasilakis | - (void)release { |
81 | 470e6f81 | Miltiadis Vasilakis | // Do nothing |
82 | 470e6f81 | Miltiadis Vasilakis | } |
83 | 470e6f81 | Miltiadis Vasilakis | |
84 | 470e6f81 | Miltiadis Vasilakis | - (id)autorelease { |
85 | 470e6f81 | Miltiadis Vasilakis | return self; |
86 | 470e6f81 | Miltiadis Vasilakis | } |
87 | 470e6f81 | Miltiadis Vasilakis | |
88 | 470e6f81 | Miltiadis Vasilakis | #pragma mark - |
89 | 470e6f81 | Miltiadis Vasilakis | #pragma mark Object Lifecycle |
90 | 470e6f81 | Miltiadis Vasilakis | |
91 | 470e6f81 | Miltiadis Vasilakis | - (id)init { |
92 | 470e6f81 | Miltiadis Vasilakis | if ((self = [super init])) { |
93 | 470e6f81 | Miltiadis Vasilakis | [self reset]; |
94 | 470e6f81 | Miltiadis Vasilakis | } |
95 | 470e6f81 | Miltiadis Vasilakis | return self; |
96 | 470e6f81 | Miltiadis Vasilakis | } |
97 | 470e6f81 | Miltiadis Vasilakis | |
98 | 470e6f81 | Miltiadis Vasilakis | - (void)dealloc { |
99 | 470e6f81 | Miltiadis Vasilakis | [timer invalidate]; |
100 | 470e6f81 | Miltiadis Vasilakis | [timer release]; |
101 | 470e6f81 | Miltiadis Vasilakis | [runningActivities release]; |
102 | 470e6f81 | Miltiadis Vasilakis | [endingActivities release]; |
103 | 470e6f81 | Miltiadis Vasilakis | [super dealloc]; |
104 | 470e6f81 | Miltiadis Vasilakis | } |
105 | 470e6f81 | Miltiadis Vasilakis | |
106 | 470e6f81 | Miltiadis Vasilakis | - (void)reset { |
107 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
108 | 470e6f81 | Miltiadis Vasilakis | [timer invalidate]; |
109 | 470e6f81 | Miltiadis Vasilakis | [timer release]; |
110 | 470e6f81 | Miltiadis Vasilakis | |
111 | 470e6f81 | Miltiadis Vasilakis | [runningActivities release]; |
112 | 470e6f81 | Miltiadis Vasilakis | runningActivities = [[NSMutableArray alloc] init]; |
113 | 470e6f81 | Miltiadis Vasilakis | [endingActivities release]; |
114 | 470e6f81 | Miltiadis Vasilakis | endingActivities = [[NSMutableArray alloc] init]; |
115 | 470e6f81 | Miltiadis Vasilakis | totalUploadBytes = 0; |
116 | 470e6f81 | Miltiadis Vasilakis | currentUploadBytes = 0; |
117 | 470e6f81 | Miltiadis Vasilakis | totalDownloadBytes = 0; |
118 | 470e6f81 | Miltiadis Vasilakis | currentDownloadBytes = 0; |
119 | 470e6f81 | Miltiadis Vasilakis | |
120 | 470e6f81 | Miltiadis Vasilakis | pickedRunning = NO; |
121 | 470e6f81 | Miltiadis Vasilakis | |
122 | 544b6f52 | Miltiadis Vasilakis | timer = [[NSTimer scheduledTimerWithTimeInterval:[(pithos_macosAppDelegate *)[[NSApplication sharedApplication] delegate] activityFacilityTimeInterval] |
123 | 544b6f52 | Miltiadis Vasilakis | target:self |
124 | 544b6f52 | Miltiadis Vasilakis | selector:@selector(update:) |
125 | 544b6f52 | Miltiadis Vasilakis | userInfo:nil |
126 | 544b6f52 | Miltiadis Vasilakis | repeats:YES] retain]; |
127 | 470e6f81 | Miltiadis Vasilakis | } |
128 | 470e6f81 | Miltiadis Vasilakis | } |
129 | 470e6f81 | Miltiadis Vasilakis | |
130 | 470e6f81 | Miltiadis Vasilakis | - (NSString *)description { |
131 | 470e6f81 | Miltiadis Vasilakis | return [NSString stringWithFormat:@"running activities: %lu, ending activities: %lu, totalUploadBytes: %lu, currentUploadBytes: %lu, totalDownloadBytes: %lu, currentDownloadBytes: %lu", |
132 | 470e6f81 | Miltiadis Vasilakis | [runningActivities count], [endingActivities count], totalUploadBytes, currentUploadBytes, totalDownloadBytes, currentDownloadBytes]; |
133 | 470e6f81 | Miltiadis Vasilakis | } |
134 | 470e6f81 | Miltiadis Vasilakis | |
135 | 470e6f81 | Miltiadis Vasilakis | #pragma mark - |
136 | 470e6f81 | Miltiadis Vasilakis | #pragma mark Timer |
137 | 470e6f81 | Miltiadis Vasilakis | |
138 | 470e6f81 | Miltiadis Vasilakis | - (void)update:(NSTimer *)aTimer { |
139 | 470e6f81 | Miltiadis Vasilakis | NSMutableDictionary *info = [NSMutableDictionary dictionary]; |
140 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
141 | 470e6f81 | Miltiadis Vasilakis | PithosActivity *activity = nil; |
142 | 470e6f81 | Miltiadis Vasilakis | NSUInteger endingActivitiesCount = [endingActivities count]; |
143 | 470e6f81 | Miltiadis Vasilakis | NSUInteger runningActivitiesCount = [runningActivities count]; |
144 | 470e6f81 | Miltiadis Vasilakis | if ((pickedRunning || !runningActivitiesCount) && endingActivitiesCount) { |
145 | 470e6f81 | Miltiadis Vasilakis | NSUInteger index; |
146 | 470e6f81 | Miltiadis Vasilakis | for (index = 0 ; index < endingActivitiesCount; index++) { |
147 | 470e6f81 | Miltiadis Vasilakis | activity = [endingActivities objectAtIndex:index]; |
148 | 470e6f81 | Miltiadis Vasilakis | switch (activity.type) { |
149 | 470e6f81 | Miltiadis Vasilakis | case PithosActivityUpload: |
150 | 470e6f81 | Miltiadis Vasilakis | totalUploadBytes -= activity.totalBytes; |
151 | 470e6f81 | Miltiadis Vasilakis | currentUploadBytes -= activity.currentBytes; |
152 | 470e6f81 | Miltiadis Vasilakis | break; |
153 | 470e6f81 | Miltiadis Vasilakis | case PithosActivityDownload: |
154 | 470e6f81 | Miltiadis Vasilakis | totalDownloadBytes -= activity.totalBytes; |
155 | 470e6f81 | Miltiadis Vasilakis | currentDownloadBytes -= activity.currentBytes; |
156 | 470e6f81 | Miltiadis Vasilakis | break; |
157 | 470e6f81 | Miltiadis Vasilakis | default: |
158 | 470e6f81 | Miltiadis Vasilakis | break; |
159 | 470e6f81 | Miltiadis Vasilakis | } |
160 | 470e6f81 | Miltiadis Vasilakis | if (activity.message) |
161 | 470e6f81 | Miltiadis Vasilakis | break; |
162 | 470e6f81 | Miltiadis Vasilakis | } |
163 | 54037f6f | Miltiadis Vasilakis | [activity retain]; |
164 | 470e6f81 | Miltiadis Vasilakis | [endingActivities removeObjectsInRange:NSMakeRange(0, (index + 1))]; |
165 | 470e6f81 | Miltiadis Vasilakis | pickedRunning = NO; |
166 | 470e6f81 | Miltiadis Vasilakis | } else if (runningActivitiesCount) { |
167 | 470e6f81 | Miltiadis Vasilakis | NSUInteger count; |
168 | 470e6f81 | Miltiadis Vasilakis | for (count = 0 ; count < runningActivitiesCount; count++) { |
169 | 54037f6f | Miltiadis Vasilakis | activity = [[runningActivities objectAtIndex:0] retain]; |
170 | 470e6f81 | Miltiadis Vasilakis | [runningActivities removeObjectAtIndex:0]; |
171 | 470e6f81 | Miltiadis Vasilakis | [runningActivities addObject:activity]; |
172 | 54037f6f | Miltiadis Vasilakis | if (activity.message) { |
173 | 470e6f81 | Miltiadis Vasilakis | break; |
174 | 54037f6f | Miltiadis Vasilakis | } else { |
175 | 54037f6f | Miltiadis Vasilakis | [activity release]; |
176 | 54037f6f | Miltiadis Vasilakis | activity = nil; |
177 | 54037f6f | Miltiadis Vasilakis | } |
178 | 470e6f81 | Miltiadis Vasilakis | } |
179 | 470e6f81 | Miltiadis Vasilakis | pickedRunning = YES; |
180 | 470e6f81 | Miltiadis Vasilakis | } |
181 | d8426ffb | Miltiadis Vasilakis | if (activity && activity.message) { |
182 | d8426ffb | Miltiadis Vasilakis | if (activity.pithosAccount) |
183 | d8426ffb | Miltiadis Vasilakis | [info setObject:[NSString stringWithFormat:@"[%@] %@", activity.pithosAccount.name, activity.message] forKey:@"message"]; |
184 | d8426ffb | Miltiadis Vasilakis | else |
185 | d8426ffb | Miltiadis Vasilakis | [info setObject:activity.message forKey:@"message"]; |
186 | d8426ffb | Miltiadis Vasilakis | } |
187 | 470e6f81 | Miltiadis Vasilakis | [info setObject:[NSNumber numberWithUnsignedInteger:[runningActivities count]] forKey:@"runningActivitiesCount"]; |
188 | 470e6f81 | Miltiadis Vasilakis | [info setObject:[NSNumber numberWithUnsignedInteger:[endingActivities count]] forKey:@"endingActivitiesCount"]; |
189 | 470e6f81 | Miltiadis Vasilakis | [info setObject:[NSNumber numberWithUnsignedInteger:totalUploadBytes] forKey:@"totalUploadBytes"]; |
190 | 470e6f81 | Miltiadis Vasilakis | [info setObject:[NSNumber numberWithUnsignedInteger:currentUploadBytes] forKey:@"currentUploadBytes"]; |
191 | 470e6f81 | Miltiadis Vasilakis | [info setObject:[NSNumber numberWithUnsignedInteger:totalDownloadBytes] forKey:@"totalDownloadBytes"]; |
192 | 470e6f81 | Miltiadis Vasilakis | [info setObject:[NSNumber numberWithUnsignedInteger:currentDownloadBytes] forKey:@"currentDownloadBytes"]; |
193 | 470e6f81 | Miltiadis Vasilakis | [activity release]; |
194 | 470e6f81 | Miltiadis Vasilakis | } |
195 | 470e6f81 | Miltiadis Vasilakis | if (delegate) { |
196 | 470e6f81 | Miltiadis Vasilakis | [delegate activityUpdate:info]; |
197 | 470e6f81 | Miltiadis Vasilakis | } |
198 | 470e6f81 | Miltiadis Vasilakis | } |
199 | 470e6f81 | Miltiadis Vasilakis | |
200 | 470e6f81 | Miltiadis Vasilakis | #pragma mark - |
201 | 470e6f81 | Miltiadis Vasilakis | #pragma mark Activity Actions |
202 | 470e6f81 | Miltiadis Vasilakis | |
203 | 470e6f81 | Miltiadis Vasilakis | - (PithosActivity *)startActivityWithType:(PithosActivityType)type |
204 | 470e6f81 | Miltiadis Vasilakis | message:(NSString *)message |
205 | 470e6f81 | Miltiadis Vasilakis | totalBytes:(NSUInteger)totalBytes |
206 | d8426ffb | Miltiadis Vasilakis | currentBytes:(NSUInteger)currentBytes |
207 | d8426ffb | Miltiadis Vasilakis | pithosAccount:(PithosAccount *)pithosAccount { |
208 | d8426ffb | Miltiadis Vasilakis | PithosActivity *activity = [[[PithosActivity alloc] initWithType:type pithosAccount:pithosAccount] autorelease]; |
209 | 470e6f81 | Miltiadis Vasilakis | activity.message = message; |
210 | 470e6f81 | Miltiadis Vasilakis | activity.totalBytes = totalBytes; |
211 | 470e6f81 | Miltiadis Vasilakis | activity.currentBytes = currentBytes; |
212 | 470e6f81 | Miltiadis Vasilakis | NSLog(@"PithosActivityFacility startedActivity %@", activity); |
213 | 470e6f81 | Miltiadis Vasilakis | |
214 | 470e6f81 | Miltiadis Vasilakis | switch (type) { |
215 | 470e6f81 | Miltiadis Vasilakis | case PithosActivityUpload: |
216 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
217 | 470e6f81 | Miltiadis Vasilakis | totalUploadBytes += totalBytes; |
218 | 470e6f81 | Miltiadis Vasilakis | currentUploadBytes += currentBytes; |
219 | 470e6f81 | Miltiadis Vasilakis | } |
220 | 470e6f81 | Miltiadis Vasilakis | break; |
221 | 470e6f81 | Miltiadis Vasilakis | case PithosActivityDownload: |
222 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
223 | 470e6f81 | Miltiadis Vasilakis | totalDownloadBytes += totalBytes; |
224 | 470e6f81 | Miltiadis Vasilakis | currentDownloadBytes += currentBytes; |
225 | 470e6f81 | Miltiadis Vasilakis | } |
226 | 470e6f81 | Miltiadis Vasilakis | break; |
227 | 470e6f81 | Miltiadis Vasilakis | default: |
228 | 470e6f81 | Miltiadis Vasilakis | break; |
229 | 470e6f81 | Miltiadis Vasilakis | } |
230 | 470e6f81 | Miltiadis Vasilakis | |
231 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
232 | 470e6f81 | Miltiadis Vasilakis | [runningActivities addObject:activity]; |
233 | 470e6f81 | Miltiadis Vasilakis | } |
234 | 470e6f81 | Miltiadis Vasilakis | NSLog(@"PithosActivityFacility %@", self); |
235 | 470e6f81 | Miltiadis Vasilakis | |
236 | 470e6f81 | Miltiadis Vasilakis | return activity; |
237 | 470e6f81 | Miltiadis Vasilakis | } |
238 | 470e6f81 | Miltiadis Vasilakis | |
239 | 1b1e6fa1 | Miltiadis Vasilakis | - (PithosActivity *)startActivityWithType:(PithosActivityType)type |
240 | d8426ffb | Miltiadis Vasilakis | message:(NSString *)message |
241 | d8426ffb | Miltiadis Vasilakis | totalBytes:(NSUInteger)totalBytes |
242 | d8426ffb | Miltiadis Vasilakis | currentBytes:(NSUInteger)currentBytes { |
243 | d8426ffb | Miltiadis Vasilakis | return [self startActivityWithType:type message:message totalBytes:totalBytes currentBytes:currentBytes pithosAccount:nil]; |
244 | d8426ffb | Miltiadis Vasilakis | } |
245 | d8426ffb | Miltiadis Vasilakis | |
246 | d8426ffb | Miltiadis Vasilakis | - (PithosActivity *)startActivityWithType:(PithosActivityType)type |
247 | d8426ffb | Miltiadis Vasilakis | message:(NSString *)message |
248 | d8426ffb | Miltiadis Vasilakis | pithosAccount:(PithosAccount *)pithosAccount { |
249 | d8426ffb | Miltiadis Vasilakis | return [self startActivityWithType:type message:message totalBytes:0 currentBytes:0 pithosAccount:pithosAccount]; |
250 | d8426ffb | Miltiadis Vasilakis | } |
251 | d8426ffb | Miltiadis Vasilakis | |
252 | d8426ffb | Miltiadis Vasilakis | - (PithosActivity *)startActivityWithType:(PithosActivityType)type |
253 | 1b1e6fa1 | Miltiadis Vasilakis | message:(NSString *)message { |
254 | d8426ffb | Miltiadis Vasilakis | return [self startActivityWithType:type message:message pithosAccount:nil]; |
255 | 1b1e6fa1 | Miltiadis Vasilakis | } |
256 | 1b1e6fa1 | Miltiadis Vasilakis | |
257 | d8426ffb | Miltiadis Vasilakis | - (PithosActivity *)startAndEndActivityWithType:(PithosActivityType)type |
258 | d8426ffb | Miltiadis Vasilakis | message:(NSString *)message |
259 | d8426ffb | Miltiadis Vasilakis | pithosAccount:(PithosAccount *)pithosAccount { |
260 | d8426ffb | Miltiadis Vasilakis | PithosActivity *activity = [[[PithosActivity alloc] initWithType:type pithosAccount:pithosAccount] autorelease]; |
261 | 0224a49f | Miltiadis Vasilakis | activity.message = message; |
262 | 0224a49f | Miltiadis Vasilakis | activity.totalBytes = 0; |
263 | 0224a49f | Miltiadis Vasilakis | activity.currentBytes = 0; |
264 | 0224a49f | Miltiadis Vasilakis | @synchronized(self) { |
265 | 0224a49f | Miltiadis Vasilakis | [endingActivities addObject:activity]; |
266 | 0224a49f | Miltiadis Vasilakis | } |
267 | 0224a49f | Miltiadis Vasilakis | NSLog(@"PithosActivityFacility startedAndEndedActivity %@", activity); |
268 | 0224a49f | Miltiadis Vasilakis | |
269 | 0224a49f | Miltiadis Vasilakis | return activity; |
270 | 0224a49f | Miltiadis Vasilakis | } |
271 | 0224a49f | Miltiadis Vasilakis | |
272 | d8426ffb | Miltiadis Vasilakis | - (PithosActivity *)startAndEndActivityWithType:(PithosActivityType)type message:(NSString *)message { |
273 | d8426ffb | Miltiadis Vasilakis | return [self startAndEndActivityWithType:type message:message pithosAccount:nil]; |
274 | d8426ffb | Miltiadis Vasilakis | } |
275 | d8426ffb | Miltiadis Vasilakis | |
276 | 470e6f81 | Miltiadis Vasilakis | - (void)updateActivity:(PithosActivity *)activity |
277 | 470e6f81 | Miltiadis Vasilakis | withMessage:(NSString *)message |
278 | 470e6f81 | Miltiadis Vasilakis | totalBytes:(NSUInteger)totalBytes |
279 | 470e6f81 | Miltiadis Vasilakis | currentBytes:(NSUInteger)currentBytes { |
280 | 1b1e6fa1 | Miltiadis Vasilakis | if (!activity) |
281 | 1b1e6fa1 | Miltiadis Vasilakis | return; |
282 | 470e6f81 | Miltiadis Vasilakis | NSLog(@"PithosActivityFacility updatedActivity %@", activity); |
283 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
284 | 470e6f81 | Miltiadis Vasilakis | activity.message = message; |
285 | 470e6f81 | Miltiadis Vasilakis | switch (activity.type) { |
286 | 470e6f81 | Miltiadis Vasilakis | case PithosActivityUpload: |
287 | 470e6f81 | Miltiadis Vasilakis | totalUploadBytes += totalBytes - activity.totalBytes; |
288 | 470e6f81 | Miltiadis Vasilakis | activity.totalBytes = totalBytes; |
289 | 470e6f81 | Miltiadis Vasilakis | currentUploadBytes += currentBytes - activity.currentBytes; |
290 | 470e6f81 | Miltiadis Vasilakis | activity.currentBytes = currentBytes; |
291 | 470e6f81 | Miltiadis Vasilakis | break; |
292 | 470e6f81 | Miltiadis Vasilakis | case PithosActivityDownload: |
293 | 470e6f81 | Miltiadis Vasilakis | totalDownloadBytes += totalBytes - activity.totalBytes; |
294 | 470e6f81 | Miltiadis Vasilakis | activity.totalBytes = totalBytes; |
295 | 470e6f81 | Miltiadis Vasilakis | currentDownloadBytes += currentBytes - activity.currentBytes; |
296 | 470e6f81 | Miltiadis Vasilakis | activity.currentBytes = currentBytes; |
297 | 470e6f81 | Miltiadis Vasilakis | break; |
298 | 470e6f81 | Miltiadis Vasilakis | default: |
299 | 470e6f81 | Miltiadis Vasilakis | break; |
300 | 470e6f81 | Miltiadis Vasilakis | } |
301 | 470e6f81 | Miltiadis Vasilakis | } |
302 | 470e6f81 | Miltiadis Vasilakis | NSLog(@"PithosActivityFacility %@", self); |
303 | 470e6f81 | Miltiadis Vasilakis | } |
304 | 470e6f81 | Miltiadis Vasilakis | |
305 | 1b1e6fa1 | Miltiadis Vasilakis | - (void)updateActivity:(PithosActivity *)activity |
306 | 1b1e6fa1 | Miltiadis Vasilakis | withMessage:(NSString *)message { |
307 | 1b1e6fa1 | Miltiadis Vasilakis | [self updateActivity:activity withMessage:message totalBytes:activity.totalBytes currentBytes:activity.currentBytes]; |
308 | 1b1e6fa1 | Miltiadis Vasilakis | } |
309 | 1b1e6fa1 | Miltiadis Vasilakis | |
310 | 470e6f81 | Miltiadis Vasilakis | - (void)endActivity:(PithosActivity *)activity |
311 | 470e6f81 | Miltiadis Vasilakis | withMessage:(NSString *)message |
312 | 470e6f81 | Miltiadis Vasilakis | totalBytes:(NSUInteger)totalBytes |
313 | 470e6f81 | Miltiadis Vasilakis | currentBytes:(NSUInteger)currentBytes { |
314 | 1b1e6fa1 | Miltiadis Vasilakis | if (!activity) |
315 | 1b1e6fa1 | Miltiadis Vasilakis | return; |
316 | 470e6f81 | Miltiadis Vasilakis | @synchronized(self) { |
317 | 470e6f81 | Miltiadis Vasilakis | [runningActivities removeObject:activity]; |
318 | 470e6f81 | Miltiadis Vasilakis | activity.message = message; |
319 | 470e6f81 | Miltiadis Vasilakis | switch (activity.type) { |
320 | 470e6f81 | Miltiadis Vasilakis | case PithosActivityUpload: |
321 | 470e6f81 | Miltiadis Vasilakis | totalUploadBytes += totalBytes - activity.totalBytes; |
322 | 470e6f81 | Miltiadis Vasilakis | activity.totalBytes = totalBytes; |
323 | 470e6f81 | Miltiadis Vasilakis | currentUploadBytes += currentBytes - activity.currentBytes; |
324 | 470e6f81 | Miltiadis Vasilakis | activity.currentBytes = currentBytes; |
325 | 470e6f81 | Miltiadis Vasilakis | break; |
326 | 470e6f81 | Miltiadis Vasilakis | case PithosActivityDownload: |
327 | 470e6f81 | Miltiadis Vasilakis | totalDownloadBytes += totalBytes - activity.totalBytes; |
328 | 470e6f81 | Miltiadis Vasilakis | activity.totalBytes = totalBytes; |
329 | 470e6f81 | Miltiadis Vasilakis | currentDownloadBytes += currentBytes - activity.currentBytes; |
330 | 470e6f81 | Miltiadis Vasilakis | activity.currentBytes = currentBytes; |
331 | 470e6f81 | Miltiadis Vasilakis | break; |
332 | 470e6f81 | Miltiadis Vasilakis | default: |
333 | 470e6f81 | Miltiadis Vasilakis | break; |
334 | 470e6f81 | Miltiadis Vasilakis | } |
335 | 470e6f81 | Miltiadis Vasilakis | [endingActivities addObject:activity]; |
336 | 470e6f81 | Miltiadis Vasilakis | } |
337 | 470e6f81 | Miltiadis Vasilakis | NSLog(@"PithosActivityFacility endedActivity %@", activity); |
338 | 470e6f81 | Miltiadis Vasilakis | NSLog(@"PithosActivityFacility %@", self); |
339 | 470e6f81 | Miltiadis Vasilakis | } |
340 | 470e6f81 | Miltiadis Vasilakis | |
341 | 1b1e6fa1 | Miltiadis Vasilakis | - (void)endActivity:(PithosActivity *)activity |
342 | 1b1e6fa1 | Miltiadis Vasilakis | withMessage:(NSString *)message { |
343 | 1b1e6fa1 | Miltiadis Vasilakis | [self endActivity:activity withMessage:message totalBytes:activity.totalBytes currentBytes:activity.currentBytes]; |
344 | 1b1e6fa1 | Miltiadis Vasilakis | } |
345 | 1b1e6fa1 | Miltiadis Vasilakis | |
346 | 470e6f81 | Miltiadis Vasilakis | @end |