parent
cf2d1b5c10
commit
8a9d168928
|
@ -59,6 +59,8 @@ using System.IO;
|
|||
using System.Text;
|
||||
using HttpServer;
|
||||
using OpenMetaverse;
|
||||
using System.Reflection;
|
||||
using log4net;
|
||||
|
||||
namespace OpenSim.Framework.Servers.HttpServer
|
||||
{
|
||||
|
@ -66,6 +68,10 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
|
||||
public class PollServiceWorkerThread
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
public event ReQueuePollServiceItem ReQueue;
|
||||
|
||||
private readonly BaseHttpServer m_server;
|
||||
|
@ -92,31 +98,36 @@ namespace OpenSim.Framework.Servers.HttpServer
|
|||
while (m_running)
|
||||
{
|
||||
PollServiceHttpRequest req = m_request.Dequeue();
|
||||
if (req.PollServiceArgs.HasEvents(req.PollServiceArgs.Id))
|
||||
try
|
||||
{
|
||||
StreamReader str = new StreamReader(req.Request.Body);
|
||||
|
||||
Hashtable responsedata = req.PollServiceArgs.GetEvents(req.PollServiceArgs.Id, str.ReadToEnd());
|
||||
m_server.DoHTTPGruntWork(responsedata,
|
||||
new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request),req.HttpContext));
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((Environment.TickCount - req.RequestTime) > m_timeout)
|
||||
if (req.PollServiceArgs.HasEvents(req.PollServiceArgs.Id))
|
||||
{
|
||||
m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(),
|
||||
StreamReader str = new StreamReader(req.Request.Body);
|
||||
|
||||
Hashtable responsedata = req.PollServiceArgs.GetEvents(req.PollServiceArgs.Id, str.ReadToEnd());
|
||||
m_server.DoHTTPGruntWork(responsedata,
|
||||
new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request),req.HttpContext));
|
||||
}
|
||||
else
|
||||
{
|
||||
ReQueuePollServiceItem reQueueItem = ReQueue;
|
||||
if (reQueueItem != null)
|
||||
reQueueItem(req);
|
||||
if ((Environment.TickCount - req.RequestTime) > m_timeout)
|
||||
{
|
||||
m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(),
|
||||
new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request),req.HttpContext));
|
||||
}
|
||||
else
|
||||
{
|
||||
ReQueuePollServiceItem reQueueItem = ReQueue;
|
||||
if (reQueueItem != null)
|
||||
reQueueItem(req);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.ErrorFormat("Exception in poll service thread: " + e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
internal void Enqueue(PollServiceHttpRequest pPollServiceHttpRequest)
|
||||
|
|
Loading…
Reference in New Issue