Statistics
| Branch: | Tag: | Revision:

root / pithos-macos / PithosActivityFacility.m @ 544b6f52

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