add new MapGetServiceConnector
parent
92ebc5292f
commit
1407837b66
|
@ -0,0 +1,79 @@
|
|||
using Nini.Config;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework.Servers.HttpServer;
|
||||
using OpenSim.Server.Handlers.Base;
|
||||
using OpenSim.Services.Connectors;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
|
||||
namespace OpenSim.Robust.MapImageClient
|
||||
{
|
||||
class NEWMapGetServerConnector : ServiceConnector
|
||||
{
|
||||
private string m_ConfigName = "MapImageService";
|
||||
|
||||
public NEWMapGetServerConnector(IConfigSource config, IHttpServer server, string configName) : base(config, server, configName)
|
||||
{
|
||||
IConfig serverConfig = config.Configs[m_ConfigName];
|
||||
if (serverConfig == null)
|
||||
throw new Exception(String.Format("No section {0} in config file", m_ConfigName));
|
||||
|
||||
string remoteServer = serverConfig.GetString("RemoteMapServer", String.Empty);
|
||||
|
||||
if (remoteServer == String.Empty)
|
||||
throw new Exception("No RemoteServer in config file");
|
||||
|
||||
server.AddStreamHandler(new NEWMapServerGetHandler(remoteServer));
|
||||
}
|
||||
}
|
||||
|
||||
class NEWMapServerGetHandler : BaseStreamHandler
|
||||
{
|
||||
public static ManualResetEvent ev = new ManualResetEvent(true);
|
||||
|
||||
private String m_remoteServer = null;
|
||||
|
||||
public NEWMapServerGetHandler(String remoteServer) : base("GET", "/map")
|
||||
{
|
||||
m_remoteServer = remoteServer;
|
||||
}
|
||||
|
||||
protected override byte[] ProcessRequest(string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
|
||||
{
|
||||
UUID scopeID = UUID.Zero;
|
||||
string format = string.Empty;
|
||||
|
||||
IniConfigSource configuration = new IniConfigSource();
|
||||
configuration.AddConfig("MapImageService");
|
||||
configuration.Configs["MapImageService"].Set("MapImageServerURI", m_remoteServer);
|
||||
|
||||
MapImageServicesConnector mapServiceModule = new MapImageServicesConnector();
|
||||
mapServiceModule.Initialise(configuration);
|
||||
|
||||
string[] bits = path.Trim('/').Split(new char[] { '/' });
|
||||
|
||||
if (bits.Length > 2)
|
||||
scopeID = UUID.Parse(bits[1]);
|
||||
|
||||
byte[] result = mapServiceModule.GetMapTile(path.Trim('/'), scopeID, out format);
|
||||
|
||||
if (result.Length > 0)
|
||||
{
|
||||
httpResponse.StatusCode = (int)HttpStatusCode.OK;
|
||||
if (format.Equals(".png"))
|
||||
httpResponse.ContentType = "image/png";
|
||||
else if (format.Equals(".jpg") || format.Equals(".jpeg"))
|
||||
httpResponse.ContentType = "image/jpeg";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
|
||||
httpResponse.ContentType = "text/plain";
|
||||
return new byte[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue