aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
authorlbsa712009-04-13 20:04:18 +0000
committerlbsa712009-04-13 20:04:18 +0000
commit29355de6ee01b1f44f32ea45b9c06f636ae9a241 (patch)
tree677fb0c71117a6feaa5891f5c7ceacdd8d2069a6 /OpenSim/Framework
parent* Remove null reference exception in the J2KDecoderModule's J2K repair routin... (diff)
downloadopensim-SC_OLD-29355de6ee01b1f44f32ea45b9c06f636ae9a241.zip
opensim-SC_OLD-29355de6ee01b1f44f32ea45b9c06f636ae9a241.tar.gz
opensim-SC_OLD-29355de6ee01b1f44f32ea45b9c06f636ae9a241.tar.bz2
opensim-SC_OLD-29355de6ee01b1f44f32ea45b9c06f636ae9a241.tar.xz
* Some more experimental work on distributed assets. Nothing hotwired yet.
* Introduced preprocess step in FetchAsset (Might revert this later) * Some minor CCC * Added actual implementation of GetUserProfile( uri ) and the corresponding handler to OGS1. * Introduced non-functioning GetUserUri( userProfile) awaiting user server wireup (this might move elsewhere)
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Communications/Cache/AssetCache.cs10
-rw-r--r--OpenSim/Framework/Communications/IUserService.cs2
-rw-r--r--OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs5
-rw-r--r--OpenSim/Framework/Communications/UserManagerBase.cs8
-rw-r--r--OpenSim/Framework/Servers/GetAssetStreamHandler.cs67
5 files changed, 73 insertions, 19 deletions
diff --git a/OpenSim/Framework/Communications/Cache/AssetCache.cs b/OpenSim/Framework/Communications/Cache/AssetCache.cs
index cbb2a5a..4d2db17 100644
--- a/OpenSim/Framework/Communications/Cache/AssetCache.cs
+++ b/OpenSim/Framework/Communications/Cache/AssetCache.cs
@@ -336,7 +336,7 @@ namespace OpenSim.Framework.Communications.Cache
336 { 336 {
337 AssetInfo assetInf = new AssetInfo(asset); 337 AssetInfo assetInf = new AssetInfo(asset);
338 338
339 ProcessReceivedAsset(IsTexture, assetInf); 339 ProcessReceivedAsset(IsTexture, assetInf, null);
340 340
341 if (!m_memcache.Contains(assetInf.FullID)) 341 if (!m_memcache.Contains(assetInf.FullID))
342 { 342 {
@@ -391,11 +391,11 @@ namespace OpenSim.Framework.Communications.Cache
391 } 391 }
392 } 392 }
393 393
394 protected void ProcessReceivedAsset(bool IsTexture, AssetInfo assetInf) 394 protected void ProcessReceivedAsset(bool IsTexture, AssetInfo assetInf, IUserService userService)
395 { 395 {
396 if(!IsTexture && assetInf.ContainsReferences && false ) 396 if(!IsTexture && assetInf.ContainsReferences && false )
397 { 397 {
398 assetInf.Data = ProcessAssetData(assetInf.Data); 398 assetInf.Data = ProcessAssetData(assetInf.Data, userService );
399 } 399 }
400 } 400 }
401 401
@@ -554,11 +554,11 @@ namespace OpenSim.Framework.Communications.Cache
554 } 554 }
555 } 555 }
556 556
557 public byte[] ProcessAssetData(byte[] assetData) 557 public byte[] ProcessAssetData(byte[] assetData, IUserService userService)
558 { 558 {
559 string data = Encoding.ASCII.GetString(assetData); 559 string data = Encoding.ASCII.GetString(assetData);
560 560
561 data = ProcessAssetDataString(data, null); 561 data = ProcessAssetDataString(data, userService );
562 562
563 return Encoding.ASCII.GetBytes( data ); 563 return Encoding.ASCII.GetBytes( data );
564 } 564 }
diff --git a/OpenSim/Framework/Communications/IUserService.cs b/OpenSim/Framework/Communications/IUserService.cs
index 38c360a..3c09b40 100644
--- a/OpenSim/Framework/Communications/IUserService.cs
+++ b/OpenSim/Framework/Communications/IUserService.cs
@@ -50,6 +50,8 @@ namespace OpenSim.Framework.Communications
50 50
51 UserProfileData GetUserProfile(Uri uri); 51 UserProfileData GetUserProfile(Uri uri);
52 52
53 Uri GetUserUri(UserProfileData userProfile);
54
53 UserAgentData GetAgentByUUID(UUID userId); 55 UserAgentData GetAgentByUUID(UUID userId);
54 56
55 void ClearUserAgent(UUID avatarID); 57 void ClearUserAgent(UUID avatarID);
diff --git a/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs b/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
index 3779f55..9d9810b 100644
--- a/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
+++ b/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
@@ -108,6 +108,11 @@ namespace OpenSim.Framework.Communications.Tests
108 return userProfile; 108 return userProfile;
109 } 109 }
110 110
111 public Uri GetUserUri(UserProfileData userProfile)
112 {
113 throw new NotImplementedException();
114 }
115
111 public UserAgentData GetAgentByUUID(UUID userId) 116 public UserAgentData GetAgentByUUID(UUID userId)
112 { 117 {
113 throw new NotImplementedException(); 118 throw new NotImplementedException();
diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs
index b7280d3..155f5cd 100644
--- a/OpenSim/Framework/Communications/UserManagerBase.cs
+++ b/OpenSim/Framework/Communications/UserManagerBase.cs
@@ -124,7 +124,7 @@ namespace OpenSim.Framework.Communications
124 124
125 public UserProfileData GetUserProfile(Uri uri) 125 public UserProfileData GetUserProfile(Uri uri)
126 { 126 {
127 throw new System.NotImplementedException(); 127 throw new NotImplementedException();
128 } 128 }
129 129
130 public UserAgentData GetAgentByUUID(UUID userId) 130 public UserAgentData GetAgentByUUID(UUID userId)
@@ -142,6 +142,11 @@ namespace OpenSim.Framework.Communications
142 return null; 142 return null;
143 } 143 }
144 144
145 public Uri GetUserUri(UserProfileData userProfile)
146 {
147 throw new NotImplementedException();
148 }
149
145 // see IUserService 150 // see IUserService
146 public virtual UserProfileData GetUserProfile(UUID uuid) 151 public virtual UserProfileData GetUserProfile(UUID uuid)
147 { 152 {
@@ -835,6 +840,5 @@ namespace OpenSim.Framework.Communications
835 } 840 }
836 841
837 #endregion 842 #endregion
838
839 } 843 }
840} 844}
diff --git a/OpenSim/Framework/Servers/GetAssetStreamHandler.cs b/OpenSim/Framework/Servers/GetAssetStreamHandler.cs
index 91d1a28..ffd7ef4 100644
--- a/OpenSim/Framework/Servers/GetAssetStreamHandler.cs
+++ b/OpenSim/Framework/Servers/GetAssetStreamHandler.cs
@@ -29,6 +29,7 @@ using System;
29using System.IO; 29using System.IO;
30using System.Reflection; 30using System.Reflection;
31using System.Text; 31using System.Text;
32using System.Text.RegularExpressions;
32using System.Xml; 33using System.Xml;
33using System.Xml.Serialization; 34using System.Xml.Serialization;
34using log4net; 35using log4net;
@@ -64,9 +65,9 @@ namespace OpenSim.Framework.Servers
64 OSHttpRequest httpRequest, OSHttpResponse httpResponse) 65 OSHttpRequest httpRequest, OSHttpResponse httpResponse)
65 { 66 {
66 string param = GetParam(path); 67 string param = GetParam(path);
67 byte[] result = new byte[] {}; 68 byte[] result = new byte[] { };
68 69
69 string[] p = param.Split(new char[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries); 70 string[] p = param.Split(new char[] { '/', '?', '&' }, StringSplitOptions.RemoveEmptyEntries);
70 71
71 if (p.Length > 0) 72 if (p.Length > 0)
72 { 73 {
@@ -85,7 +86,12 @@ namespace OpenSim.Framework.Servers
85 AssetBase asset = m_assetProvider.FetchAsset(assetID); 86 AssetBase asset = m_assetProvider.FetchAsset(assetID);
86 if (asset != null) 87 if (asset != null)
87 { 88 {
88 XmlSerializer xs = new XmlSerializer(typeof (AssetBase)); 89 if (asset.ContainsReferences && false)
90 {
91 asset.Data = ProcessOutgoingAssetData(asset.Data);
92 }
93
94 XmlSerializer xs = new XmlSerializer(typeof(AssetBase));
89 MemoryStream ms = new MemoryStream(); 95 MemoryStream ms = new MemoryStream();
90 XmlTextWriter xw = new XmlTextWriter(ms, Encoding.UTF8); 96 XmlTextWriter xw = new XmlTextWriter(ms, Encoding.UTF8);
91 xw.Formatting = Formatting.Indented; 97 xw.Formatting = Formatting.Indented;
@@ -97,15 +103,7 @@ namespace OpenSim.Framework.Servers
97 103
98 result = ms.GetBuffer(); 104 result = ms.GetBuffer();
99 105
100//Ckrinke 1/11/09 Commenting out the succesful REST message as under heavy use there 106 Array.Resize<byte>(ref result, (int)ms.Length);
101//are multiple messages in a second and that is usually (in my experience) meaning
102//the logging itself is slowing down the program. Leaving the unsuccesful message
103//as we need to know about that path.
104// m_log.InfoFormat(
105// "[REST]: GET:/asset found {0} with name {1}, size {2} bytes",
106// assetID, asset.Name, result.Length);
107
108 Array.Resize<byte>(ref result, (int) ms.Length);
109 } 107 }
110 else 108 else
111 { 109 {
@@ -118,5 +116,50 @@ namespace OpenSim.Framework.Servers
118 116
119 return result; 117 return result;
120 } 118 }
119
120 private byte[] ProcessOutgoingAssetData(byte[] assetData)
121 {
122 string data = Encoding.ASCII.GetString(assetData);
123
124 data = ProcessAssetDataString(data);
125
126 return Encoding.ASCII.GetBytes(data);
127 }
128
129 public string ProcessAssetDataString(string data)
130 {
131 Regex regex = new Regex("(creator_id|owner_id)\\s+(\\S+)");
132
133 // IUserService userService = null;
134
135 data = regex.Replace(data, delegate(Match m)
136 {
137 string result = String.Empty;
138
139 string key = m.Groups[1].Captures[0].Value;
140
141 string value = m.Groups[2].Captures[0].Value;
142
143 Guid userUri;
144
145 switch (key)
146 {
147 case "creator_id":
148 userUri = new Guid(value);
149 // result = "creator_url " + userService(userService, userUri);
150 break;
151
152 case "owner_id":
153 userUri = new Guid(value);
154 // result = "owner_url " + ResolveUserUri(userService, userUri);
155 break;
156 }
157
158 return result;
159 });
160
161 return data;
162 }
163
121 } 164 }
122} \ No newline at end of file 165} \ No newline at end of file