Revision f3d080df trunk/Pithos.Core/NetworkGate.cs
b/trunk/Pithos.Core/NetworkGate.cs | ||
---|---|---|
1 |
// ----------------------------------------------------------------------- |
|
2 |
// <copyright file="NetworkGate.cs" company="GRNET"> |
|
3 |
// Copyright 2011 GRNET S.A. All rights reserved. |
|
4 |
// |
|
5 |
// Redistribution and use in source and binary forms, with or |
|
6 |
// without modification, are permitted provided that the following |
|
7 |
// conditions are met: |
|
8 |
// |
|
9 |
// 1. Redistributions of source code must retain the above |
|
10 |
// copyright notice, this list of conditions and the following |
|
11 |
// disclaimer. |
|
12 |
// |
|
13 |
// 2. Redistributions in binary form must reproduce the above |
|
14 |
// copyright notice, this list of conditions and the following |
|
15 |
// disclaimer in the documentation and/or other materials |
|
16 |
// provided with the distribution. |
|
17 |
// |
|
18 |
// THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS |
|
19 |
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
20 |
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
21 |
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR |
|
22 |
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
23 |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
24 |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
|
25 |
// USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
|
26 |
// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
27 |
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
|
28 |
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
29 |
// POSSIBILITY OF SUCH DAMAGE. |
|
30 |
// |
|
31 |
// The views and conclusions contained in the software and |
|
32 |
// documentation are those of the authors and should not be |
|
33 |
// interpreted as representing official policies, either expressed |
|
34 |
// or implied, of GRNET S.A. |
|
35 |
// </copyright> |
|
36 |
// ----------------------------------------------------------------------- |
|
37 |
|
|
1 | 38 |
using System; |
2 | 39 |
using System.Collections.Concurrent; |
3 | 40 |
using System.Collections.Generic; |
... | ... | |
10 | 47 |
{ |
11 | 48 |
None, |
12 | 49 |
Uploading, |
13 |
Downloading |
|
50 |
Downloading, |
|
51 |
Deleting, |
|
52 |
Renaming |
|
14 | 53 |
} |
15 | 54 |
|
16 | 55 |
//The NetworkGate prevents starting download/uploads for files that are already in the process of downloading, |
... | ... | |
39 | 78 |
Contract.EndContractBlock(); |
40 | 79 |
|
41 | 80 |
NetworkOperation operation; |
42 |
if (NetworkState.TryGetValue(path.ToLower(), out operation)) |
|
81 |
var lower = path.ToLower(); |
|
82 |
if (NetworkState.TryGetValue(lower, out operation)) |
|
43 | 83 |
return operation; |
44 | 84 |
return NetworkOperation.None; |
45 | 85 |
} |
... | ... | |
74 | 114 |
throw new ArgumentException("path must be a rooted path", "path"); |
75 | 115 |
Contract.EndContractBlock(); |
76 | 116 |
|
77 |
var state = GetNetworkState(path); |
|
117 |
var lower = path.ToLower(); |
|
118 |
var state = GetNetworkState(lower); |
|
78 | 119 |
//If no operation is in progress, return a NetworkGate |
79 | 120 |
return (state == NetworkOperation.None) |
80 |
? new NetworkGate(path, operation)
|
|
121 |
? new NetworkGate(lower, operation)
|
|
81 | 122 |
//otherwise return a gate with Fail flagged |
82 |
: new NetworkGate(path, NetworkOperation.None);
|
|
123 |
: new NetworkGate(lower, NetworkOperation.None);
|
|
83 | 124 |
} |
84 | 125 |
|
85 | 126 |
|
Also available in: Unified diff