aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorlbsa712007-07-04 11:47:32 +0000
committerlbsa712007-07-04 11:47:32 +0000
commit9a51949cb4c833dcacf2a5803a8f2753273941c8 (patch)
tree698f58d78bc8bc20b3d82c7683723fe2c9eacca7 /OpenSim
parentGrid Servers: (diff)
downloadopensim-SC_OLD-9a51949cb4c833dcacf2a5803a8f2753273941c8.zip
opensim-SC_OLD-9a51949cb4c833dcacf2a5803a8f2753273941c8.tar.gz
opensim-SC_OLD-9a51949cb4c833dcacf2a5803a8f2753273941c8.tar.bz2
opensim-SC_OLD-9a51949cb4c833dcacf2a5803a8f2753273941c8.tar.xz
* Added StreamHandler support
* Implemented RestStreamHandler * Some caps functions now use it * Moved out RestMethodEntry from httpserver * The IStreamHandler interface now reports required method and Content-Type
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/Servers/BaseHttpServer.cs63
-rw-r--r--OpenSim/Framework/Servers/IStreamHandler.cs9
-rw-r--r--OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj49
-rw-r--r--OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build3
-rw-r--r--OpenSim/Framework/Servers/RestMethodEntry.cs27
-rw-r--r--OpenSim/Framework/Servers/RestStreamHandler.cs34
-rw-r--r--OpenSim/Region/Capabilities/Caps.cs47
7 files changed, 143 insertions, 89 deletions
diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs
index 8fa577c..9831108 100644
--- a/OpenSim/Framework/Servers/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/BaseHttpServer.cs
@@ -40,27 +40,6 @@ namespace OpenSim.Framework.Servers
40{ 40{
41 public class BaseHttpServer 41 public class BaseHttpServer
42 { 42 {
43 protected class RestMethodEntry
44 {
45 private string m_path;
46 public string Path
47 {
48 get { return m_path; }
49 }
50
51 private RestMethod m_restMethod;
52 public RestMethod RestMethod
53 {
54 get { return m_restMethod; }
55 }
56
57 public RestMethodEntry(string path, RestMethod restMethod)
58 {
59 m_path = path;
60 m_restMethod = restMethod;
61 }
62 }
63
64 protected Thread m_workerThread; 43 protected Thread m_workerThread;
65 protected HttpListener m_httpListener; 44 protected HttpListener m_httpListener;
66 protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>(); 45 protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>();
@@ -74,9 +53,10 @@ namespace OpenSim.Framework.Servers
74 m_port = port; 53 m_port = port;
75 } 54 }
76 55
77 private void AddStreamHandler(string path, IStreamHandler handler) 56 public void AddStreamHandler( string path, IStreamHandler handler)
78 { 57 {
79 m_streamHandlers.Add(path, handler); 58 string handlerKey = handler.HttpMethod + ":" + path;
59 m_streamHandlers.Add(handlerKey, handler);
80 } 60 }
81 61
82 public bool AddRestHandler(string method, string path, RestMethod handler) 62 public bool AddRestHandler(string method, string path, RestMethod handler)
@@ -179,18 +159,12 @@ namespace OpenSim.Framework.Servers
179 { 159 {
180 string responseString = String.Empty; 160 string responseString = String.Empty;
181 161
182 try 162 XmlRpcRequest request = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
183 {
184 XmlRpcRequest request = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
185 163
186 string methodName = request.MethodName; 164 string methodName = request.MethodName;
165
166 responseString = ProcessXMLRPCMethod(methodName, request);
187 167
188 responseString = ProcessXMLRPCMethod(methodName, request);
189 }
190 catch
191 {
192 //Console.WriteLine(e.ToString());
193 }
194 return responseString; 168 return responseString;
195 } 169 }
196 170
@@ -205,12 +179,19 @@ namespace OpenSim.Framework.Servers
205 response.SendChunked = false; 179 response.SendChunked = false;
206 180
207 string path = request.RawUrl; 181 string path = request.RawUrl;
182 string handlerKey = request.HttpMethod + ":" + path;
208 183
209 IStreamHandler streamHandler; 184 IStreamHandler streamHandler;
210 185
211 if(TryGetStreamHandler(path, out streamHandler)) 186 if (TryGetStreamHandler( handlerKey, out streamHandler))
212 { 187 {
213 streamHandler.Handle(path, request.InputStream, response.OutputStream ); 188 byte[] buffer = streamHandler.Handle(path, request.InputStream );
189 request.InputStream.Close();
190
191 response.ContentType = streamHandler.ContentType;
192 response.ContentLength64 = buffer.LongLength;
193 response.OutputStream.Write(buffer, 0, buffer.Length);
194 response.OutputStream.Close();
214 } 195 }
215 else 196 else
216 { 197 {
@@ -218,22 +199,22 @@ namespace OpenSim.Framework.Servers
218 } 199 }
219 } 200 }
220 201
221 private bool TryGetStreamHandler(string path, out IStreamHandler streamHandler ) 202 private bool TryGetStreamHandler(string handlerKey, out IStreamHandler streamHandler)
222 { 203 {
223 string bestMatch = null; 204 string bestMatch = null;
224 205
225 foreach (string pattern in m_streamHandlers.Keys) 206 foreach (string pattern in m_streamHandlers.Keys)
226 { 207 {
227 if (path.StartsWith(pattern)) 208 if (handlerKey.StartsWith(pattern))
228 { 209 {
229 if (String.IsNullOrEmpty( bestMatch ) || pattern.Length > bestMatch.Length) 210 if (String.IsNullOrEmpty(bestMatch) || pattern.Length > bestMatch.Length)
230 { 211 {
231 bestMatch = pattern; 212 bestMatch = pattern;
232 } 213 }
233 } 214 }
234 } 215 }
235 216
236 if( String.IsNullOrEmpty( bestMatch ) ) 217 if (String.IsNullOrEmpty(bestMatch))
237 { 218 {
238 streamHandler = null; 219 streamHandler = null;
239 return false; 220 return false;
diff --git a/OpenSim/Framework/Servers/IStreamHandler.cs b/OpenSim/Framework/Servers/IStreamHandler.cs
index 88ae641..bc76e9c 100644
--- a/OpenSim/Framework/Servers/IStreamHandler.cs
+++ b/OpenSim/Framework/Servers/IStreamHandler.cs
@@ -7,6 +7,13 @@ namespace OpenSim.Framework.Servers
7{ 7{
8 public interface IStreamHandler 8 public interface IStreamHandler
9 { 9 {
10 void Handle(string path, Stream request, Stream response); 10 // Handle request stream, return byte array
11 byte[] Handle(string path, Stream request );
12
13 // Return response content type
14 string ContentType { get; }
15
16 // Return required http method
17 string HttpMethod { get;}
11 } 18 }
12} 19}
diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj
index 956a9bc..555bd5d 100644
--- a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj
+++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.csproj
@@ -1,4 +1,4 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup> 2 <PropertyGroup>
3 <ProjectType>Local</ProjectType> 3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion> 4 <ProductVersion>8.0.50727</ProductVersion>
@@ -6,8 +6,7 @@
6 <ProjectGuid>{2CC71860-0000-0000-0000-000000000000}</ProjectGuid> 6 <ProjectGuid>{2CC71860-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon> 9 <ApplicationIcon></ApplicationIcon>
10 </ApplicationIcon>
11 <AssemblyKeyContainerName> 10 <AssemblyKeyContainerName>
12 </AssemblyKeyContainerName> 11 </AssemblyKeyContainerName>
13 <AssemblyName>OpenSim.Framework.Servers</AssemblyName> 12 <AssemblyName>OpenSim.Framework.Servers</AssemblyName>
@@ -16,11 +15,9 @@
16 <DefaultTargetSchema>IE50</DefaultTargetSchema> 15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
17 <DelaySign>false</DelaySign> 16 <DelaySign>false</DelaySign>
18 <OutputType>Library</OutputType> 17 <OutputType>Library</OutputType>
19 <AppDesignerFolder> 18 <AppDesignerFolder></AppDesignerFolder>
20 </AppDesignerFolder>
21 <RootNamespace>OpenSim.Framework.Servers</RootNamespace> 19 <RootNamespace>OpenSim.Framework.Servers</RootNamespace>
22 <StartupObject> 20 <StartupObject></StartupObject>
23 </StartupObject>
24 <FileUpgradeFlags> 21 <FileUpgradeFlags>
25 </FileUpgradeFlags> 22 </FileUpgradeFlags>
26 </PropertyGroup> 23 </PropertyGroup>
@@ -31,8 +28,7 @@
31 <ConfigurationOverrideFile> 28 <ConfigurationOverrideFile>
32 </ConfigurationOverrideFile> 29 </ConfigurationOverrideFile>
33 <DefineConstants>TRACE;DEBUG</DefineConstants> 30 <DefineConstants>TRACE;DEBUG</DefineConstants>
34 <DocumentationFile> 31 <DocumentationFile></DocumentationFile>
35 </DocumentationFile>
36 <DebugSymbols>True</DebugSymbols> 32 <DebugSymbols>True</DebugSymbols>
37 <FileAlignment>4096</FileAlignment> 33 <FileAlignment>4096</FileAlignment>
38 <Optimize>False</Optimize> 34 <Optimize>False</Optimize>
@@ -41,8 +37,7 @@
41 <RemoveIntegerChecks>False</RemoveIntegerChecks> 37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
42 <TreatWarningsAsErrors>False</TreatWarningsAsErrors> 38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
43 <WarningLevel>4</WarningLevel> 39 <WarningLevel>4</WarningLevel>
44 <NoWarn> 40 <NoWarn></NoWarn>
45 </NoWarn>
46 </PropertyGroup> 41 </PropertyGroup>
47 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
48 <AllowUnsafeBlocks>False</AllowUnsafeBlocks> 43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
@@ -51,8 +46,7 @@
51 <ConfigurationOverrideFile> 46 <ConfigurationOverrideFile>
52 </ConfigurationOverrideFile> 47 </ConfigurationOverrideFile>
53 <DefineConstants>TRACE</DefineConstants> 48 <DefineConstants>TRACE</DefineConstants>
54 <DocumentationFile> 49 <DocumentationFile></DocumentationFile>
55 </DocumentationFile>
56 <DebugSymbols>False</DebugSymbols> 50 <DebugSymbols>False</DebugSymbols>
57 <FileAlignment>4096</FileAlignment> 51 <FileAlignment>4096</FileAlignment>
58 <Optimize>True</Optimize> 52 <Optimize>True</Optimize>
@@ -61,24 +55,22 @@
61 <RemoveIntegerChecks>False</RemoveIntegerChecks> 55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
62 <TreatWarningsAsErrors>False</TreatWarningsAsErrors> 56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
63 <WarningLevel>4</WarningLevel> 57 <WarningLevel>4</WarningLevel>
64 <NoWarn> 58 <NoWarn></NoWarn>
65 </NoWarn>
66 </PropertyGroup> 59 </PropertyGroup>
67 <ItemGroup> 60 <ItemGroup>
68 <Reference Include="libsecondlife.dll"> 61 <Reference Include="libsecondlife.dll" >
69 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath> 62 <HintPath>..\..\..\bin\libsecondlife.dll</HintPath>
70 <Private>False</Private> 63 <Private>False</Private>
71 </Reference> 64 </Reference>
72 <Reference Include="System"> 65 <Reference Include="System" >
73 <HintPath>System.dll</HintPath> 66 <HintPath>System.dll</HintPath>
74 <Private>False</Private> 67 <Private>False</Private>
75 </Reference> 68 </Reference>
76 <Reference Include="System.Data" /> 69 <Reference Include="System.Xml" >
77 <Reference Include="System.Xml">
78 <HintPath>System.Xml.dll</HintPath> 70 <HintPath>System.Xml.dll</HintPath>
79 <Private>False</Private> 71 <Private>False</Private>
80 </Reference> 72 </Reference>
81 <Reference Include="XMLRPC.dll"> 73 <Reference Include="XMLRPC.dll" >
82 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath> 74 <HintPath>..\..\..\bin\XMLRPC.dll</HintPath>
83 <Private>False</Private> 75 <Private>False</Private>
84 </Reference> 76 </Reference>
@@ -88,13 +80,13 @@
88 <Name>OpenSim.Framework</Name> 80 <Name>OpenSim.Framework</Name>
89 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project> 81 <Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
90 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> 82 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
91 <Private>False</Private> 83 <Private>False</Private>
92 </ProjectReference> 84 </ProjectReference>
93 <ProjectReference Include="..\Console\OpenSim.Framework.Console.csproj"> 85 <ProjectReference Include="..\Console\OpenSim.Framework.Console.csproj">
94 <Name>OpenSim.Framework.Console</Name> 86 <Name>OpenSim.Framework.Console</Name>
95 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project> 87 <Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
96 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> 88 <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
97 <Private>False</Private> 89 <Private>False</Private>
98 </ProjectReference> 90 </ProjectReference>
99 </ItemGroup> 91 </ItemGroup>
100 <ItemGroup> 92 <ItemGroup>
@@ -107,14 +99,21 @@
107 <Compile Include="ILlsdMethodHandler.cs"> 99 <Compile Include="ILlsdMethodHandler.cs">
108 <SubType>Code</SubType> 100 <SubType>Code</SubType>
109 </Compile> 101 </Compile>
110 <Compile Include="IStreamHandler.cs" /> 102 <Compile Include="IStreamHandler.cs">
103 <SubType>Code</SubType>
104 </Compile>
111 <Compile Include="LlsdMethod.cs"> 105 <Compile Include="LlsdMethod.cs">
112 <SubType>Code</SubType> 106 <SubType>Code</SubType>
113 </Compile> 107 </Compile>
114 <Compile Include="RestMethod.cs"> 108 <Compile Include="RestMethod.cs">
115 <SubType>Code</SubType> 109 <SubType>Code</SubType>
116 </Compile> 110 </Compile>
117 <Compile Include="RestStreamHandler.cs" /> 111 <Compile Include="RestMethodEntry.cs">
112 <SubType>Code</SubType>
113 </Compile>
114 <Compile Include="RestStreamHandler.cs">
115 <SubType>Code</SubType>
116 </Compile>
118 <Compile Include="UDPServerBase.cs"> 117 <Compile Include="UDPServerBase.cs">
119 <SubType>Code</SubType> 118 <SubType>Code</SubType>
120 </Compile> 119 </Compile>
@@ -129,4 +128,4 @@
129 <PostBuildEvent> 128 <PostBuildEvent>
130 </PostBuildEvent> 129 </PostBuildEvent>
131 </PropertyGroup> 130 </PropertyGroup>
132</Project> \ No newline at end of file 131</Project>
diff --git a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build
index 22d98dc..a3d140f 100644
--- a/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build
+++ b/OpenSim/Framework/Servers/OpenSim.Framework.Servers.dll.build
@@ -14,8 +14,11 @@
14 <include name="BaseHttpServer.cs" /> 14 <include name="BaseHttpServer.cs" />
15 <include name="CheckSumServer.cs" /> 15 <include name="CheckSumServer.cs" />
16 <include name="ILlsdMethodHandler.cs" /> 16 <include name="ILlsdMethodHandler.cs" />
17 <include name="IStreamHandler.cs" />
17 <include name="LlsdMethod.cs" /> 18 <include name="LlsdMethod.cs" />
18 <include name="RestMethod.cs" /> 19 <include name="RestMethod.cs" />
20 <include name="RestMethodEntry.cs" />
21 <include name="RestStreamHandler.cs" />
19 <include name="UDPServerBase.cs" /> 22 <include name="UDPServerBase.cs" />
20 <include name="XmlRpcMethod.cs" /> 23 <include name="XmlRpcMethod.cs" />
21 </sources> 24 </sources>
diff --git a/OpenSim/Framework/Servers/RestMethodEntry.cs b/OpenSim/Framework/Servers/RestMethodEntry.cs
new file mode 100644
index 0000000..ab926e0
--- /dev/null
+++ b/OpenSim/Framework/Servers/RestMethodEntry.cs
@@ -0,0 +1,27 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace OpenSim.Framework.Servers
6{
7 public class RestMethodEntry
8 {
9 private string m_path;
10 public string Path
11 {
12 get { return m_path; }
13 }
14
15 private RestMethod m_restMethod;
16 public RestMethod RestMethod
17 {
18 get { return m_restMethod; }
19 }
20
21 public RestMethodEntry(string path, RestMethod restMethod)
22 {
23 m_path = path;
24 m_restMethod = restMethod;
25 }
26 }
27}
diff --git a/OpenSim/Framework/Servers/RestStreamHandler.cs b/OpenSim/Framework/Servers/RestStreamHandler.cs
index 145a184..64d6ea3 100644
--- a/OpenSim/Framework/Servers/RestStreamHandler.cs
+++ b/OpenSim/Framework/Servers/RestStreamHandler.cs
@@ -7,9 +7,39 @@ namespace OpenSim.Framework.Servers
7{ 7{
8 public class RestStreamHandler : IStreamHandler 8 public class RestStreamHandler : IStreamHandler
9 { 9 {
10 public void Handle( string path, Stream request, Stream response ) 10 RestMethod m_restMethod;
11
12 private string m_contentType;
13 public string ContentType
14 {
15 get { return m_contentType; }
16 }
17
18 private string m_httpMethod;
19 public string HttpMethod
20 {
21 get { return m_httpMethod; }
22 }
23
24
25 public byte[] Handle(string path, Stream request )
26 {
27 Encoding encoding = Encoding.UTF8;
28 StreamReader reader = new StreamReader(request, encoding);
29
30 string requestBody = reader.ReadToEnd();
31 reader.Close();
32
33 string responseString = m_restMethod(requestBody, path, m_httpMethod);
34
35 return Encoding.UTF8.GetBytes(responseString);
36 }
37
38 public RestStreamHandler(RestMethod restMethod, string httpMethod, string contentType)
11 { 39 {
12 40 m_restMethod = restMethod;
41 m_httpMethod = httpMethod;
42 m_contentType = contentType;
13 } 43 }
14 } 44 }
15} 45}
diff --git a/OpenSim/Region/Capabilities/Caps.cs b/OpenSim/Region/Capabilities/Caps.cs
index 4a283b2..0f6c471 100644
--- a/OpenSim/Region/Capabilities/Caps.cs
+++ b/OpenSim/Region/Capabilities/Caps.cs
@@ -41,13 +41,13 @@ namespace OpenSim.Region.Capabilities
41 41
42 public class Caps 42 public class Caps
43 { 43 {
44 private string httpListenerHostName; 44 private string m_httpListenerHostName;
45 private int httpListenPort; 45 private int m_httpListenPort;
46 private string capsObjectPath = "00001-"; 46 private string m_capsObjectPath = "00001-";
47 private string requestPath = "0000/"; 47 private string m_requestPath = "0000/";
48 private string mapLayerPath = "0001/"; 48 private string m_mapLayerPath = "0001/";
49 private string newInventory = "0002/"; 49 private string m_newInventory = "0002/";
50 private string requestTexture = "0003/"; 50 private string m_requestTexture = "0003/";
51 private string eventQueue = "0100/"; 51 private string eventQueue = "0100/";
52 private BaseHttpServer httpListener; 52 private BaseHttpServer httpListener;
53 private LLUUID agentID; 53 private LLUUID agentID;
@@ -58,10 +58,10 @@ namespace OpenSim.Region.Capabilities
58 public Caps(AssetCache assetCach, BaseHttpServer httpServer, string httpListen, int httpPort, string capsPath, LLUUID agent) 58 public Caps(AssetCache assetCach, BaseHttpServer httpServer, string httpListen, int httpPort, string capsPath, LLUUID agent)
59 { 59 {
60 assetCache = assetCach; 60 assetCache = assetCach;
61 capsObjectPath = capsPath; 61 m_capsObjectPath = capsPath;
62 httpListener = httpServer; 62 httpListener = httpServer;
63 httpListenerHostName = httpListen; 63 m_httpListenerHostName = httpListen;
64 httpListenPort = httpPort; 64 m_httpListenPort = httpPort;
65 agentID = agent; 65 agentID = agent;
66 } 66 }
67 67
@@ -71,13 +71,20 @@ namespace OpenSim.Region.Capabilities
71 public void RegisterHandlers() 71 public void RegisterHandlers()
72 { 72 {
73 Console.WriteLine("registering CAPS handlers"); 73 Console.WriteLine("registering CAPS handlers");
74 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + requestPath, CapsRequest); 74
75 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + mapLayerPath, MapLayer); 75 AddCapsHandler( httpListener, m_requestPath, CapsRequest);
76 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + newInventory, NewAgentInventory); 76 AddCapsHandler( httpListener, m_mapLayerPath, MapLayer);
77 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + eventQueue, ProcessEventQueue); 77 AddCapsHandler( httpListener, m_newInventory, NewAgentInventory);
78 httpListener.AddRestHandler("POST", "/CAPS/" + capsObjectPath + requestTexture, RequestTexture); 78 AddCapsHandler( httpListener, eventQueue, ProcessEventQueue);
79 AddCapsHandler( httpListener, m_requestTexture, RequestTexture);
79 } 80 }
80 81
82 private void AddCapsHandler( BaseHttpServer httpListener, string path, RestMethod restMethod )
83 {
84 string capsBase = "/CAPS/" + m_capsObjectPath;
85 httpListener.AddStreamHandler(capsBase + path, new RestStreamHandler(restMethod, "POST", "application/xml"));
86 }
87
81 /// <summary> 88 /// <summary>
82 /// 89 ///
83 /// </summary> 90 /// </summary>
@@ -100,10 +107,10 @@ namespace OpenSim.Region.Capabilities
100 protected LLSDCapsDetails GetCapabilities() 107 protected LLSDCapsDetails GetCapabilities()
101 { 108 {
102 LLSDCapsDetails caps = new LLSDCapsDetails(); 109 LLSDCapsDetails caps = new LLSDCapsDetails();
103 string capsBaseUrl = "http://" + httpListenerHostName + ":" + httpListenPort.ToString() + "/CAPS/" + capsObjectPath; 110 string capsBaseUrl = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + m_capsObjectPath;
104 111
105 caps.MapLayer = capsBaseUrl + mapLayerPath; 112 caps.MapLayer = capsBaseUrl + m_mapLayerPath;
106 caps.NewFileAgentInventory = capsBaseUrl + newInventory; 113 caps.NewFileAgentInventory = capsBaseUrl + m_newInventory;
107 114
108 return caps; 115 return caps;
109 } 116 }
@@ -204,10 +211,10 @@ namespace OpenSim.Region.Capabilities
204 string res = ""; 211 string res = "";
205 LLUUID newAsset = LLUUID.Random(); 212 LLUUID newAsset = LLUUID.Random();
206 LLUUID newInvItem = LLUUID.Random(); 213 LLUUID newInvItem = LLUUID.Random();
207 string uploaderPath = capsObjectPath + Util.RandomClass.Next(5000, 8000).ToString("0000"); 214 string uploaderPath = m_capsObjectPath + Util.RandomClass.Next(5000, 8000).ToString("0000");
208 AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener); 215 AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener);
209 httpListener.AddRestHandler("POST", "/CAPS/" + uploaderPath, uploader.uploaderCaps); 216 httpListener.AddRestHandler("POST", "/CAPS/" + uploaderPath, uploader.uploaderCaps);
210 string uploaderURL = "http://" + httpListenerHostName + ":" + httpListenPort.ToString() + "/CAPS/" + uploaderPath; 217 string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + uploaderPath;
211 //Console.WriteLine("uploader url is " + uploaderURL); 218 //Console.WriteLine("uploader url is " + uploaderURL);
212 res += "<llsd><map>"; 219 res += "<llsd><map>";
213 res += "<key>uploader</key><string>" + uploaderURL + "</string>"; 220 res += "<key>uploader</key><string>" + uploaderURL + "</string>";