aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Communications/Limit
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs10
-rw-r--r--OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs6
-rw-r--r--OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs38
-rw-r--r--OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs50
4 files changed, 52 insertions, 52 deletions
diff --git a/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
index 6ec21d9..1a9cc24 100644
--- a/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
+++ b/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
@@ -31,9 +31,9 @@ namespace OpenSim.Framework.Communications.Limit
31 /// Interface for strategies that can limit requests from the client. Currently only used in the 31 /// Interface for strategies that can limit requests from the client. Currently only used in the
32 /// texture modules to deal with repeated requests for certain textures. However, limiting strategies 32 /// texture modules to deal with repeated requests for certain textures. However, limiting strategies
33 /// could be used with other requests. 33 /// could be used with other requests.
34 /// </summary> 34 /// </summary>
35 public interface IRequestLimitStrategy<TId> 35 public interface IRequestLimitStrategy<TId>
36 { 36 {
37 /// <summary> 37 /// <summary>
38 /// Should the request be allowed? If the id is not monitored, then the request is always allowed. 38 /// Should the request be allowed? If the id is not monitored, then the request is always allowed.
39 /// Otherwise, the strategy criteria will be applied. 39 /// Otherwise, the strategy criteria will be applied.
@@ -41,21 +41,21 @@ namespace OpenSim.Framework.Communications.Limit
41 /// <param name="id"></param> 41 /// <param name="id"></param>
42 /// <returns></returns> 42 /// <returns></returns>
43 bool AllowRequest(TId id); 43 bool AllowRequest(TId id);
44 44
45 /// <summary> 45 /// <summary>
46 /// Has the request been refused just once? 46 /// Has the request been refused just once?
47 /// </summary> 47 /// </summary>
48 /// <returns>False if the request has not yet been refused, or if the request has been refused more 48 /// <returns>False if the request has not yet been refused, or if the request has been refused more
49 /// than once.</returns> 49 /// than once.</returns>
50 bool IsFirstRefusal(TId id); 50 bool IsFirstRefusal(TId id);
51 51
52 /// <summary> 52 /// <summary>
53 /// Start monitoring for future AllowRequest calls. If the id is already monitored, then monitoring 53 /// Start monitoring for future AllowRequest calls. If the id is already monitored, then monitoring
54 /// continues. 54 /// continues.
55 /// </summary> 55 /// </summary>
56 /// <param name="id"></param> 56 /// <param name="id"></param>
57 void MonitorRequests(TId id); 57 void MonitorRequests(TId id);
58 58
59 /// <summary> 59 /// <summary>
60 /// Is the id being monitored? 60 /// Is the id being monitored?
61 /// </summary> 61 /// </summary>
diff --git a/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
index 72d0586..932f780 100644
--- a/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
+++ b/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
@@ -26,15 +26,15 @@
26 */ 26 */
27 27
28namespace OpenSim.Framework.Communications.Limit 28namespace OpenSim.Framework.Communications.Limit
29{ 29{
30 /// <summary> 30 /// <summary>
31 /// Strategy which polices no limits 31 /// Strategy which polices no limits
32 /// </summary> 32 /// </summary>
33 public class NullLimitStrategy<TId> : IRequestLimitStrategy<TId> 33 public class NullLimitStrategy<TId> : IRequestLimitStrategy<TId>
34 { 34 {
35 public bool AllowRequest(TId id) { return true; } 35 public bool AllowRequest(TId id) { return true; }
36 public bool IsFirstRefusal(TId id) { return false; } 36 public bool IsFirstRefusal(TId id) { return false; }
37 public void MonitorRequests(TId id) { /* intentionally blank */ } 37 public void MonitorRequests(TId id) { /* intentionally blank */ }
38 public bool IsMonitoringRequests(TId id) { return false; } 38 public bool IsMonitoringRequests(TId id) { return false; }
39 } 39 }
40} 40}
diff --git a/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
index dfa05fa..bb72029 100644
--- a/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
+++ b/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
@@ -31,14 +31,14 @@ namespace OpenSim.Framework.Communications.Limit
31{ 31{
32 /// <summary> 32 /// <summary>
33 /// Limit requests by discarding them after they've been repeated a certain number of times. 33 /// Limit requests by discarding them after they've been repeated a certain number of times.
34 /// </summary> 34 /// </summary>
35 public class RepeatLimitStrategy<TId> : IRequestLimitStrategy<TId> 35 public class RepeatLimitStrategy<TId> : IRequestLimitStrategy<TId>
36 { 36 {
37 /// <summary> 37 /// <summary>
38 /// Record each asset request that we're notified about. 38 /// Record each asset request that we're notified about.
39 /// </summary> 39 /// </summary>
40 private readonly Dictionary<TId, int> requestCounts = new Dictionary<TId, int>(); 40 private readonly Dictionary<TId, int> requestCounts = new Dictionary<TId, int>();
41 41
42 /// <summary> 42 /// <summary>
43 /// The maximum number of requests that can be made before we drop subsequent requests. 43 /// The maximum number of requests that can be made before we drop subsequent requests.
44 /// </summary> 44 /// </summary>
@@ -47,7 +47,7 @@ namespace OpenSim.Framework.Communications.Limit
47 { 47 {
48 get { return m_maxRequests; } 48 get { return m_maxRequests; }
49 } 49 }
50 50
51 /// <summary></summary> 51 /// <summary></summary>
52 /// <param name="maxRequests">The maximum number of requests that may be served before all further 52 /// <param name="maxRequests">The maximum number of requests that may be served before all further
53 /// requests are dropped.</param> 53 /// requests are dropped.</param>
@@ -55,52 +55,52 @@ namespace OpenSim.Framework.Communications.Limit
55 { 55 {
56 m_maxRequests = maxRequests; 56 m_maxRequests = maxRequests;
57 } 57 }
58 58
59 /// <summary> 59 /// <summary>
60 /// <see cref="IRequestLimitStrategy"/> 60 /// <see cref="IRequestLimitStrategy"/>
61 /// </summary> 61 /// </summary>
62 public bool AllowRequest(TId id) 62 public bool AllowRequest(TId id)
63 { 63 {
64 if (requestCounts.ContainsKey(id)) 64 if (requestCounts.ContainsKey(id))
65 { 65 {
66 requestCounts[id] += 1; 66 requestCounts[id] += 1;
67 67
68 if (requestCounts[id] > m_maxRequests) 68 if (requestCounts[id] > m_maxRequests)
69 { 69 {
70 return false; 70 return false;
71 } 71 }
72 } 72 }
73 73
74 return true; 74 return true;
75 } 75 }
76 76
77 /// <summary> 77 /// <summary>
78 /// <see cref="IRequestLimitStrategy"/> 78 /// <see cref="IRequestLimitStrategy"/>
79 /// </summary> 79 /// </summary>
80 public bool IsFirstRefusal(TId id) 80 public bool IsFirstRefusal(TId id)
81 { 81 {
82 if (requestCounts.ContainsKey(id) && m_maxRequests + 1 == requestCounts[id]) 82 if (requestCounts.ContainsKey(id) && m_maxRequests + 1 == requestCounts[id])
83 { 83 {
84 return true; 84 return true;
85 } 85 }
86 86
87 return false; 87 return false;
88 } 88 }
89 89
90 /// <summary> 90 /// <summary>
91 /// <see cref="IRequestLimitStrategy"/> 91 /// <see cref="IRequestLimitStrategy"/>
92 /// </summary> 92 /// </summary>
93 public void MonitorRequests(TId id) 93 public void MonitorRequests(TId id)
94 { 94 {
95 if (!IsMonitoringRequests(id)) 95 if (!IsMonitoringRequests(id))
96 { 96 {
97 requestCounts.Add(id, 1); 97 requestCounts.Add(id, 1);
98 } 98 }
99 } 99 }
100 100
101 /// <summary> 101 /// <summary>
102 /// <see cref="IRequestLimitStrategy"/> 102 /// <see cref="IRequestLimitStrategy"/>
103 /// </summary> 103 /// </summary>
104 public bool IsMonitoringRequests(TId id) 104 public bool IsMonitoringRequests(TId id)
105 { 105 {
106 return requestCounts.ContainsKey(id); 106 return requestCounts.ContainsKey(id);
diff --git a/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
index 34b01ff..b5b925e 100644
--- a/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
+++ b/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
@@ -32,17 +32,17 @@ namespace OpenSim.Framework.Communications.Limit
32{ 32{
33 /// <summary> 33 /// <summary>
34 /// Limit requests by discarding repeat attempts that occur within a given time period 34 /// Limit requests by discarding repeat attempts that occur within a given time period
35 /// 35 ///
36 /// XXX Don't use this for limiting texture downloading, at least not until we better handle multiple requests 36 /// XXX Don't use this for limiting texture downloading, at least not until we better handle multiple requests
37 /// for the same texture at different resolutions. 37 /// for the same texture at different resolutions.
38 /// </summary> 38 /// </summary>
39 public class TimeLimitStrategy<TId> : IRequestLimitStrategy<TId> 39 public class TimeLimitStrategy<TId> : IRequestLimitStrategy<TId>
40 { 40 {
41 /// <summary> 41 /// <summary>
42 /// Record the time at which an asset request occurs. 42 /// Record the time at which an asset request occurs.
43 /// </summary> 43 /// </summary>
44 private readonly Dictionary<TId, Request> requests = new Dictionary<TId, Request>(); 44 private readonly Dictionary<TId, Request> requests = new Dictionary<TId, Request>();
45 45
46 /// <summary> 46 /// <summary>
47 /// The minimum time period between which requests for the same data will be serviced. 47 /// The minimum time period between which requests for the same data will be serviced.
48 /// </summary> 48 /// </summary>
@@ -53,37 +53,37 @@ namespace OpenSim.Framework.Communications.Limit
53 } 53 }
54 54
55 /// <summary></summary> 55 /// <summary></summary>
56 /// <param name="repeatPeriod"></param> 56 /// <param name="repeatPeriod"></param>
57 public TimeLimitStrategy(TimeSpan repeatPeriod) 57 public TimeLimitStrategy(TimeSpan repeatPeriod)
58 { 58 {
59 m_repeatPeriod = repeatPeriod; 59 m_repeatPeriod = repeatPeriod;
60 } 60 }
61 61
62 /// <summary> 62 /// <summary>
63 /// <see cref="IRequestLimitStrategy"/> 63 /// <see cref="IRequestLimitStrategy"/>
64 /// </summary> 64 /// </summary>
65 public bool AllowRequest(TId id) 65 public bool AllowRequest(TId id)
66 { 66 {
67 if (IsMonitoringRequests(id)) 67 if (IsMonitoringRequests(id))
68 { 68 {
69 DateTime now = DateTime.Now; 69 DateTime now = DateTime.Now;
70 TimeSpan elapsed = now - requests[id].Time; 70 TimeSpan elapsed = now - requests[id].Time;
71 71
72 if (elapsed < RepeatPeriod) 72 if (elapsed < RepeatPeriod)
73 { 73 {
74 requests[id].Refusals += 1; 74 requests[id].Refusals += 1;
75 return false; 75 return false;
76 } 76 }
77 77
78 requests[id].Time = now; 78 requests[id].Time = now;
79 } 79 }
80 80
81 return true; 81 return true;
82 } 82 }
83 83
84 /// <summary> 84 /// <summary>
85 /// <see cref="IRequestLimitStrategy"/> 85 /// <see cref="IRequestLimitStrategy"/>
86 /// </summary> 86 /// </summary>
87 public bool IsFirstRefusal(TId id) 87 public bool IsFirstRefusal(TId id)
88 { 88 {
89 if (IsMonitoringRequests(id)) 89 if (IsMonitoringRequests(id))
@@ -92,31 +92,31 @@ namespace OpenSim.Framework.Communications.Limit
92 { 92 {
93 return true; 93 return true;
94 } 94 }
95 } 95 }
96 96
97 return false; 97 return false;
98 } 98 }
99 99
100 /// <summary> 100 /// <summary>
101 /// <see cref="IRequestLimitStrategy"/> 101 /// <see cref="IRequestLimitStrategy"/>
102 /// </summary> 102 /// </summary>
103 public void MonitorRequests(TId id) 103 public void MonitorRequests(TId id)
104 { 104 {
105 if (!IsMonitoringRequests(id)) 105 if (!IsMonitoringRequests(id))
106 { 106 {
107 requests.Add(id, new Request(DateTime.Now)); 107 requests.Add(id, new Request(DateTime.Now));
108 } 108 }
109 } 109 }
110 110
111 /// <summary> 111 /// <summary>
112 /// <see cref="IRequestLimitStrategy"/> 112 /// <see cref="IRequestLimitStrategy"/>
113 /// </summary> 113 /// </summary>
114 public bool IsMonitoringRequests(TId id) 114 public bool IsMonitoringRequests(TId id)
115 { 115 {
116 return requests.ContainsKey(id); 116 return requests.ContainsKey(id);
117 } 117 }
118 } 118 }
119 119
120 /// <summary> 120 /// <summary>
121 /// Private request details. 121 /// Private request details.
122 /// </summary> 122 /// </summary>
@@ -126,12 +126,12 @@ namespace OpenSim.Framework.Communications.Limit
126 /// Time of last request 126 /// Time of last request
127 /// </summary> 127 /// </summary>
128 public DateTime Time; 128 public DateTime Time;
129 129
130 /// <summary> 130 /// <summary>
131 /// Number of refusals associated with this request 131 /// Number of refusals associated with this request
132 /// </summary> 132 /// </summary>
133 public int Refusals; 133 public int Refusals;
134 134
135 public Request(DateTime time) 135 public Request(DateTime time)
136 { 136 {
137 Time = time; 137 Time = time;