diff options
author | UbitUmarov | 2018-01-21 20:22:28 +0000 |
---|---|---|
committer | UbitUmarov | 2018-01-21 20:22:28 +0000 |
commit | ccdaebaed6c6932d57c030adc51347d6b9e73ac7 (patch) | |
tree | 99733cbaade16c05f6c697c313c5eabebf9d896c /OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs | |
parent | no need to set MuteListsService twice (diff) | |
download | opensim-SC-ccdaebaed6c6932d57c030adc51347d6b9e73ac7.zip opensim-SC-ccdaebaed6c6932d57c030adc51347d6b9e73ac7.tar.gz opensim-SC-ccdaebaed6c6932d57c030adc51347d6b9e73ac7.tar.bz2 opensim-SC-ccdaebaed6c6932d57c030adc51347d6b9e73ac7.tar.xz |
give concurrentqueue another chance
Diffstat (limited to 'OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs')
-rw-r--r-- | OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs index cbdd781..bbfab64 100644 --- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs +++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs | |||
@@ -30,13 +30,10 @@ using System.Collections; | |||
30 | using System.Threading; | 30 | using System.Threading; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using log4net; | 32 | using log4net; |
33 | using HttpServer; | ||
34 | using OpenSim.Framework; | ||
35 | using OpenSim.Framework.Monitoring; | 33 | using OpenSim.Framework.Monitoring; |
36 | using Amib.Threading; | 34 | using Amib.Threading; |
37 | using System.IO; | ||
38 | using System.Text; | ||
39 | using System.Collections.Generic; | 35 | using System.Collections.Generic; |
36 | using System.Collections.Concurrent; | ||
40 | 37 | ||
41 | namespace OpenSim.Framework.Servers.HttpServer | 38 | namespace OpenSim.Framework.Servers.HttpServer |
42 | { | 39 | { |
@@ -48,7 +45,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
48 | 45 | ||
49 | private Dictionary<PollServiceHttpRequest, Queue<PollServiceHttpRequest>> m_bycontext; | 46 | private Dictionary<PollServiceHttpRequest, Queue<PollServiceHttpRequest>> m_bycontext; |
50 | private BlockingQueue<PollServiceHttpRequest> m_requests = new BlockingQueue<PollServiceHttpRequest>(); | 47 | private BlockingQueue<PollServiceHttpRequest> m_requests = new BlockingQueue<PollServiceHttpRequest>(); |
51 | private static Queue<PollServiceHttpRequest> m_retryRequests = new Queue<PollServiceHttpRequest>(); | 48 | private static ConcurrentQueue<PollServiceHttpRequest> m_retryRequests = new ConcurrentQueue<PollServiceHttpRequest>(); |
52 | 49 | ||
53 | private uint m_WorkerThreadCount = 0; | 50 | private uint m_WorkerThreadCount = 0; |
54 | private Thread[] m_workerThreads; | 51 | private Thread[] m_workerThreads; |
@@ -112,10 +109,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
112 | private void ReQueueEvent(PollServiceHttpRequest req) | 109 | private void ReQueueEvent(PollServiceHttpRequest req) |
113 | { | 110 | { |
114 | if (m_running) | 111 | if (m_running) |
115 | { | 112 | m_retryRequests.Enqueue(req); |
116 | lock (m_retryRequests) | ||
117 | m_retryRequests.Enqueue(req); | ||
118 | } | ||
119 | } | 113 | } |
120 | 114 | ||
121 | public void Enqueue(PollServiceHttpRequest req) | 115 | public void Enqueue(PollServiceHttpRequest req) |
@@ -177,16 +171,13 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
177 | 171 | ||
178 | private void CheckRetries() | 172 | private void CheckRetries() |
179 | { | 173 | { |
174 | PollServiceHttpRequest preq; | ||
180 | while (m_running) | 175 | while (m_running) |
181 | |||
182 | { | 176 | { |
183 | Thread.Sleep(100); // let the world move .. back to faster rate | 177 | Thread.Sleep(100); |
184 | Watchdog.UpdateThread(); | 178 | Watchdog.UpdateThread(); |
185 | lock (m_retryRequests) | 179 | while (m_running && m_retryRequests.TryDequeue(out preq)) |
186 | { | 180 | m_requests.Enqueue(preq); |
187 | while (m_retryRequests.Count > 0 && m_running) | ||
188 | m_requests.Enqueue(m_retryRequests.Dequeue()); | ||
189 | } | ||
190 | } | 181 | } |
191 | } | 182 | } |
192 | 183 | ||
@@ -209,10 +200,9 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
209 | 200 | ||
210 | try | 201 | try |
211 | { | 202 | { |
212 | foreach (PollServiceHttpRequest req in m_retryRequests) | 203 | PollServiceHttpRequest req; |
213 | { | 204 | while(m_retryRequests.TryDequeue(out req)) |
214 | req.DoHTTPstop(m_server); | 205 | req.DoHTTPstop(m_server); |
215 | } | ||
216 | } | 206 | } |
217 | catch | 207 | catch |
218 | { | 208 | { |
@@ -220,8 +210,6 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
220 | 210 | ||
221 | PollServiceHttpRequest wreq; | 211 | PollServiceHttpRequest wreq; |
222 | 212 | ||
223 | m_retryRequests.Clear(); | ||
224 | |||
225 | while (m_requests.Count() > 0) | 213 | while (m_requests.Count() > 0) |
226 | { | 214 | { |
227 | try | 215 | try |