aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs')
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs38
1 files changed, 22 insertions, 16 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index 0840a9d..ea30b9a 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -31,6 +31,7 @@ using System.Threading;
31using System.Reflection; 31using System.Reflection;
32using log4net; 32using log4net;
33using HttpServer; 33using HttpServer;
34using OpenSim.Framework;
34 35
35namespace OpenSim.Framework.Servers.HttpServer 36namespace OpenSim.Framework.Servers.HttpServer
36{ 37{
@@ -54,21 +55,25 @@ namespace OpenSim.Framework.Servers.HttpServer
54 m_PollServiceWorkerThreads = new PollServiceWorkerThread[m_WorkerThreadCount]; 55 m_PollServiceWorkerThreads = new PollServiceWorkerThread[m_WorkerThreadCount];
55 56
56 //startup worker threads 57 //startup worker threads
57 for (uint i=0;i<m_WorkerThreadCount;i++) 58 for (uint i = 0; i < m_WorkerThreadCount; i++)
58 { 59 {
59 m_PollServiceWorkerThreads[i] = new PollServiceWorkerThread(m_server, pTimeout); 60 m_PollServiceWorkerThreads[i] = new PollServiceWorkerThread(m_server, pTimeout);
60 m_PollServiceWorkerThreads[i].ReQueue += ReQueueEvent; 61 m_PollServiceWorkerThreads[i].ReQueue += ReQueueEvent;
61 62
62 m_workerThreads[i] = new Thread(m_PollServiceWorkerThreads[i].ThreadStart); 63// m_workerThreads[i]
63 m_workerThreads[i].Name = String.Format("PollServiceWorkerThread{0}",i); 64// = Watchdog.StartThread(
64 //Can't add to thread Tracker here Referencing OpenSim.Framework creates circular reference 65// m_PollServiceWorkerThreads[i].ThreadStart,
65 m_workerThreads[i].Start(); 66// String.Format("PollServiceWorkerThread{0}", i),
67// ThreadPriority.Normal,
68// false);
66 } 69 }
67 70
68 //start watcher threads 71 m_watcherThread
69 m_watcherThread = new Thread(ThreadStart); 72 = Watchdog.StartThread(
70 m_watcherThread.Name = "PollServiceWatcherThread"; 73 this.ThreadStart,
71 m_watcherThread.Start(); 74 "PollServiceWatcherThread",
75 ThreadPriority.Normal,
76 false);
72 } 77 }
73 78
74 internal void ReQueueEvent(PollServiceHttpRequest req) 79 internal void ReQueueEvent(PollServiceHttpRequest req)
@@ -83,10 +88,11 @@ namespace OpenSim.Framework.Servers.HttpServer
83 m_requests.Enqueue(req); 88 m_requests.Enqueue(req);
84 } 89 }
85 90
86 public void ThreadStart(object o) 91 public void ThreadStart()
87 { 92 {
88 while (m_running) 93 while (m_running)
89 { 94 {
95 Watchdog.UpdateThread();
90 ProcessQueuedRequests(); 96 ProcessQueuedRequests();
91 Thread.Sleep(1000); 97 Thread.Sleep(1000);
92 } 98 }
@@ -107,7 +113,7 @@ namespace OpenSim.Framework.Servers.HttpServer
107 for (int tc = 0; tc < m_WorkerThreadCount && m_requests.Count > 0; tc++) 113 for (int tc = 0; tc < m_WorkerThreadCount && m_requests.Count > 0; tc++)
108 { 114 {
109 //Loop over number of requests each thread handles. 115 //Loop over number of requests each thread handles.
110 for (int i=0;i<reqperthread && m_requests.Count > 0;i++) 116 for (int i = 0; i < reqperthread && m_requests.Count > 0; i++)
111 { 117 {
112 try 118 try
113 { 119 {
@@ -125,14 +131,14 @@ namespace OpenSim.Framework.Servers.HttpServer
125 131
126 } 132 }
127 133
128
129
130 ~PollServiceRequestManager() 134 ~PollServiceRequestManager()
131 { 135 {
132 foreach (object o in m_requests) 136 foreach (object o in m_requests)
133 { 137 {
134 PollServiceHttpRequest req = (PollServiceHttpRequest) o; 138 PollServiceHttpRequest req = (PollServiceHttpRequest) o;
135 m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id), new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext)); 139 m_server.DoHTTPGruntWork(
140 req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id),
141 new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext));
136 } 142 }
137 143
138 m_requests.Clear(); 144 m_requests.Clear();
@@ -144,4 +150,4 @@ namespace OpenSim.Framework.Servers.HttpServer
144 m_running = false; 150 m_running = false;
145 } 151 }
146 } 152 }
147} 153} \ No newline at end of file