aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Server/Handlers/Asset/AssetServerGetHandler.cs
diff options
context:
space:
mode:
authorOren Hurvitz2014-03-31 11:53:12 +0300
committerOren Hurvitz2014-04-02 06:30:57 +0100
commitd1c3f8eef58b29eb8760eeb1ac03852a2387f927 (patch)
treeb8686f4ea01b6dac3740b9685734686e2178dd2d /OpenSim/Server/Handlers/Asset/AssetServerGetHandler.cs
parentfix orphaned code in sun module per mantis 7068 (diff)
downloadopensim-SC_OLD-d1c3f8eef58b29eb8760eeb1ac03852a2387f927.zip
opensim-SC_OLD-d1c3f8eef58b29eb8760eeb1ac03852a2387f927.tar.gz
opensim-SC_OLD-d1c3f8eef58b29eb8760eeb1ac03852a2387f927.tar.bz2
opensim-SC_OLD-d1c3f8eef58b29eb8760eeb1ac03852a2387f927.tar.xz
Added assets service method AssetsExist(), which returns whether the given list of assets exist.
This method is used to optimize sending assets with embedded assets: e.g., when a Hypergrid visitor takes an item into the inventory.
Diffstat (limited to 'OpenSim/Server/Handlers/Asset/AssetServerGetHandler.cs')
-rw-r--r--OpenSim/Server/Handlers/Asset/AssetServerGetHandler.cs74
1 files changed, 49 insertions, 25 deletions
diff --git a/OpenSim/Server/Handlers/Asset/AssetServerGetHandler.cs b/OpenSim/Server/Handlers/Asset/AssetServerGetHandler.cs
index 8b23a83..ed3b4af 100644
--- a/OpenSim/Server/Handlers/Asset/AssetServerGetHandler.cs
+++ b/OpenSim/Server/Handlers/Asset/AssetServerGetHandler.cs
@@ -64,45 +64,61 @@ namespace OpenSim.Server.Handlers.Asset
64 if (p.Length == 0) 64 if (p.Length == 0)
65 return result; 65 return result;
66 66
67 if (p.Length > 1 && p[1] == "data") 67 if (p.Length > 1)
68 { 68 {
69 result = m_AssetService.GetData(p[0]); 69 string id = p[0];
70 if (result == null) 70 string cmd = p[1];
71
72 if (cmd == "data")
71 { 73 {
72 httpResponse.StatusCode = (int)HttpStatusCode.NotFound; 74 result = m_AssetService.GetData(id);
73 httpResponse.ContentType = "text/plain"; 75 if (result == null)
74 result = new byte[0]; 76 {
77 httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
78 httpResponse.ContentType = "text/plain";
79 result = new byte[0];
80 }
81 else
82 {
83 httpResponse.StatusCode = (int)HttpStatusCode.OK;
84 httpResponse.ContentType = "application/octet-stream";
85 }
75 } 86 }
76 else 87 else if (cmd == "metadata")
77 { 88 {
78 httpResponse.StatusCode = (int)HttpStatusCode.OK; 89 AssetMetadata metadata = m_AssetService.GetMetadata(id);
79 httpResponse.ContentType = "application/octet-stream";
80 }
81 }
82 else if (p.Length > 1 && p[1] == "metadata")
83 {
84 AssetMetadata metadata = m_AssetService.GetMetadata(p[0]);
85 90
86 if (metadata != null) 91 if (metadata != null)
87 { 92 {
88 XmlSerializer xs = 93 XmlSerializer xs =
89 new XmlSerializer(typeof(AssetMetadata)); 94 new XmlSerializer(typeof(AssetMetadata));
90 result = ServerUtils.SerializeResult(xs, metadata); 95 result = ServerUtils.SerializeResult(xs, metadata);
91 96
92 httpResponse.StatusCode = (int)HttpStatusCode.OK; 97 httpResponse.StatusCode = (int)HttpStatusCode.OK;
93 httpResponse.ContentType = 98 httpResponse.ContentType =
94 SLUtil.SLAssetTypeToContentType(metadata.Type); 99 SLUtil.SLAssetTypeToContentType(metadata.Type);
100 }
101 else
102 {
103 httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
104 httpResponse.ContentType = "text/plain";
105 result = new byte[0];
106 }
95 } 107 }
96 else 108 else
97 { 109 {
98 httpResponse.StatusCode = (int)HttpStatusCode.NotFound; 110 // Unknown request
111 httpResponse.StatusCode = (int)HttpStatusCode.BadRequest;
99 httpResponse.ContentType = "text/plain"; 112 httpResponse.ContentType = "text/plain";
100 result = new byte[0]; 113 result = new byte[0];
101 } 114 }
102 } 115 }
103 else 116 else if (p.Length == 1)
104 { 117 {
105 AssetBase asset = m_AssetService.Get(p[0]); 118 // Get the entire asset (metadata + data)
119
120 string id = p[0];
121 AssetBase asset = m_AssetService.Get(id);
106 122
107 if (asset != null) 123 if (asset != null)
108 { 124 {
@@ -120,6 +136,14 @@ namespace OpenSim.Server.Handlers.Asset
120 result = new byte[0]; 136 result = new byte[0];
121 } 137 }
122 } 138 }
139 else
140 {
141 // Unknown request
142 httpResponse.StatusCode = (int)HttpStatusCode.BadRequest;
143 httpResponse.ContentType = "text/plain";
144 result = new byte[0];
145 }
146
123 return result; 147 return result;
124 } 148 }
125 } 149 }