From c201b54b8524033310c59fe353616e84616a542e Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 5 Jan 2012 19:40:54 +0000
Subject: Improve "app rebake" command to return a better message if no
uploaded texture ids were available for the rebake request
---
.../Avatar/Appearance/AppearanceInfoModule.cs | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
(limited to 'OpenSim/Region/OptionalModules')
diff --git a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs
index 7e15718..39cd4c9 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs
@@ -240,11 +240,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
ScenePresence sp = scene.GetScenePresence(firstname, lastname);
if (sp != null && !sp.IsChildAgent)
{
- MainConsole.Instance.OutputFormat(
- "Requesting rebake of uploaded textures for {0}",
- sp.Name, scene.RegionInfo.RegionName);
+ int rebakesRequested = scene.AvatarFactory.RequestRebake(sp, false);
- scene.AvatarFactory.RequestRebake(sp, false);
+ if (rebakesRequested > 0)
+ MainConsole.Instance.OutputFormat(
+ "Requesting rebake of {0} uploaded textures for {1} in {2}",
+ rebakesRequested, sp.Name, scene.RegionInfo.RegionName);
+ else
+ MainConsole.Instance.OutputFormat(
+ "No texture IDs available for rebake request for {0} in {1}",
+ sp.Name, scene.RegionInfo.RegionName);
}
}
}
--
cgit v1.1
From 7319ba62dd1791a3dade5b5453e369d955de48a2 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 5 Jan 2012 20:51:49 +0000
Subject: Move simulator asset info commands to an optional module from the
connector. Make them conform with service side commands.
This stops them appearing twice when Hypergrid is enabled.
---
.../OptionalModules/Asset/AssetInfoModule.cs | 134 +++++++++++++++++++++
.../Minimodule/Interfaces/IInventoryItem.cs | 5 +-
2 files changed, 136 insertions(+), 3 deletions(-)
create mode 100644 OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
(limited to 'OpenSim/Region/OptionalModules')
diff --git a/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
new file mode 100644
index 0000000..9ea6343
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Text;
+using log4net;
+using Mono.Addins;
+using Nini.Config;
+using OpenMetaverse;
+using OpenSim.Framework;
+using OpenSim.Framework.Console;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+
+namespace OpenSim.Region.OptionalModules.Asset
+{
+ ///
+ /// A module that just holds commands for inspecting assets.
+ ///
+ [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AssetInfoModule")]
+ public class AssetInfoModule : ISharedRegionModule
+ {
+// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ private Scene m_scene;
+
+ public string Name { get { return "Asset Information Module"; } }
+
+ public Type ReplaceableInterface { get { return null; } }
+
+ public void Initialise(IConfigSource source)
+ {
+// m_log.DebugFormat("[ASSET INFO MODULE]: INITIALIZED MODULE");
+ }
+
+ public void PostInitialise()
+ {
+// m_log.DebugFormat("[ASSET INFO MODULE]: POST INITIALIZED MODULE");
+ }
+
+ public void Close()
+ {
+// m_log.DebugFormat("[ASSET INFO MODULE]: CLOSED MODULE");
+ }
+
+ public void AddRegion(Scene scene)
+ {
+// m_log.DebugFormat("[ASSET INFO MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName);
+ }
+
+ public void RemoveRegion(Scene scene)
+ {
+// m_log.DebugFormat("[ASSET INFO MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName);
+ }
+
+ public void RegionLoaded(Scene scene)
+ {
+// m_log.DebugFormat("[ASSET INFO MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName);
+
+ if (m_scene == null)
+ m_scene = scene;
+
+ MainConsole.Instance.Commands.AddCommand(
+ "asset", false, "dump asset",
+ "dump asset ",
+ "Dump an asset",
+ HandleDumpAsset);
+ }
+
+ void HandleDumpAsset(string module, string[] args)
+ {
+ if (args.Length < 3)
+ {
+ MainConsole.Instance.Output("Usage is dump asset ");
+ return;
+ }
+
+ UUID assetId;
+ string rawAssetId = args[2];
+
+ if (!UUID.TryParse(rawAssetId, out assetId))
+ {
+ MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId);
+ return;
+ }
+
+ AssetBase asset = m_scene.AssetService.Get(assetId.ToString());
+ if (asset == null)
+ {
+ MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId);
+ return;
+ }
+
+ string fileName = rawAssetId;
+
+ using (FileStream fs = new FileStream(fileName, FileMode.CreateNew))
+ {
+ using (BinaryWriter bw = new BinaryWriter(fs))
+ {
+ bw.Write(asset.Data);
+ }
+ }
+
+ MainConsole.Instance.OutputFormat("Asset dumped to file {0}", fileName);
+ }
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs
index 16cd7e4..a8e545c 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IInventoryItem.cs
@@ -30,8 +30,7 @@ using OpenMetaverse;
using OpenMetaverse.Assets;
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-
+{
///
/// This implements the methods needed to operate on individual inventory items.
///
@@ -39,6 +38,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{
int Type { get; }
UUID AssetID { get; }
- T RetrieveAsset() where T : Asset, new();
+ T RetrieveAsset() where T : OpenMetaverse.Assets.Asset, new();
}
}
--
cgit v1.1
From da0fc3c8f572adba69e52e1d7f528946ab1f6f23 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 5 Jan 2012 21:11:32 +0000
Subject: Make "show asset" command available simulator side. Actually make
the service command be "show asset" instead of "show digest" this time.
Last time I accidnetally just changed the usage message.
---
.../OptionalModules/Asset/AssetInfoModule.cs | 51 ++++++++++++++++++++++
1 file changed, 51 insertions(+)
(limited to 'OpenSim/Region/OptionalModules')
diff --git a/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
index 9ea6343..a5207eb 100644
--- a/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
+++ b/OpenSim/Region/OptionalModules/Asset/AssetInfoModule.cs
@@ -88,6 +88,14 @@ namespace OpenSim.Region.OptionalModules.Asset
m_scene = scene;
MainConsole.Instance.Commands.AddCommand(
+ "asset",
+ false,
+ "show asset",
+ "show asset ",
+ "Show asset information",
+ HandleShowAsset);
+
+ MainConsole.Instance.Commands.AddCommand(
"asset", false, "dump asset",
"dump asset ",
"Dump an asset",
@@ -130,5 +138,48 @@ namespace OpenSim.Region.OptionalModules.Asset
MainConsole.Instance.OutputFormat("Asset dumped to file {0}", fileName);
}
+
+ void HandleShowAsset(string module, string[] args)
+ {
+ if (args.Length < 3)
+ {
+ MainConsole.Instance.Output("Syntax: show asset ");
+ return;
+ }
+
+ AssetBase asset = m_scene.AssetService.Get(args[2]);
+
+ if (asset == null || asset.Data.Length == 0)
+ {
+ MainConsole.Instance.Output("Asset not found");
+ return;
+ }
+
+ int i;
+
+ MainConsole.Instance.OutputFormat("Name: {0}", asset.Name);
+ MainConsole.Instance.OutputFormat("Description: {0}", asset.Description);
+ MainConsole.Instance.OutputFormat("Type: {0} (type number = {1})", (AssetType)asset.Type, asset.Type);
+ MainConsole.Instance.OutputFormat("Content-type: {0}", asset.Metadata.ContentType);
+ MainConsole.Instance.OutputFormat("Size: {0} bytes", asset.Data.Length);
+ MainConsole.Instance.OutputFormat("Temporary: {0}", asset.Temporary ? "yes" : "no");
+ MainConsole.Instance.OutputFormat("Flags: {0}", asset.Metadata.Flags);
+
+ for (i = 0 ; i < 5 ; i++)
+ {
+ int off = i * 16;
+ if (asset.Data.Length <= off)
+ break;
+ int len = 16;
+ if (asset.Data.Length < off + len)
+ len = asset.Data.Length - off;
+
+ byte[] line = new byte[len];
+ Array.Copy(asset.Data, off, line, 0, len);
+
+ string text = BitConverter.ToString(line);
+ MainConsole.Instance.Output(String.Format("{0:x4}: {1}", off, text));
+ }
+ }
}
}
\ No newline at end of file
--
cgit v1.1
From 5ea9740f1b2cc98601cfb15c19e190471c4c42ed Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 5 Jan 2012 22:40:49 +0000
Subject: Add a "j2k decode" region console command that allows a manual
request for a JPEG2000 decode of an asset
For debugging purposes.
---
.../Agent/TextureSender/J2KDecoderCommandModule.cs | 145 +++++++++++++++++++++
1 file changed, 145 insertions(+)
create mode 100644 OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
(limited to 'OpenSim/Region/OptionalModules')
diff --git a/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
new file mode 100644
index 0000000..b224132
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Text;
+using log4net;
+using Mono.Addins;
+using Nini.Config;
+using OpenMetaverse;
+using OpenSim.Framework;
+using OpenSim.Framework.Console;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+
+namespace OpenSim.Region.OptionalModules.Agent.TextureSender
+{
+ ///
+ /// Commands for the J2KDecoder module. For debugging purposes.
+ ///
+ ///
+ /// Placed here so that they can be removed if not required and to keep the J2KDecoder module itself simple.
+ ///
+ [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "J2KDecoderCommandModule")]
+ public class J2KDecoderCommandModule : ISharedRegionModule
+ {
+// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ private Scene m_scene;
+
+ public string Name { get { return "Asset Information Module"; } }
+
+ public Type ReplaceableInterface { get { return null; } }
+
+ public void Initialise(IConfigSource source)
+ {
+// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: INITIALIZED MODULE");
+ }
+
+ public void PostInitialise()
+ {
+// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: POST INITIALIZED MODULE");
+ }
+
+ public void Close()
+ {
+// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: CLOSED MODULE");
+ }
+
+ public void AddRegion(Scene scene)
+ {
+// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName);
+ }
+
+ public void RemoveRegion(Scene scene)
+ {
+// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName);
+ }
+
+ public void RegionLoaded(Scene scene)
+ {
+// m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName);
+
+ if (m_scene == null)
+ m_scene = scene;
+
+ MainConsole.Instance.Commands.AddCommand(
+ "j2k",
+ false,
+ "j2k decode",
+ "j2k decode ",
+ "Do JPEG2000 decoding of an asset.",
+ "This is for debugging purposes. The asset id given must contain JPEG2000 data.",
+ HandleDecode);
+ }
+
+ void HandleDecode(string module, string[] args)
+ {
+ if (args.Length < 3)
+ {
+ MainConsole.Instance.Output("Usage is j2k decode ");
+ return;
+ }
+
+ UUID assetId;
+ string rawAssetId = args[2];
+
+ if (!UUID.TryParse(rawAssetId, out assetId))
+ {
+ MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId);
+ return;
+ }
+
+ AssetBase asset = m_scene.AssetService.Get(assetId.ToString());
+ if (asset == null)
+ {
+ MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId);
+ return;
+ }
+
+ if (asset.Type != (sbyte)AssetType.Texture)
+ {
+ MainConsole.Instance.OutputFormat("ERROR: Asset {0} is not a texture type", assetId);
+ return;
+ }
+
+ IJ2KDecoder decoder = m_scene.RequestModuleInterface();
+ if (decoder == null)
+ {
+ MainConsole.Instance.OutputFormat("ERROR: No IJ2KDecoder module available");
+ return;
+ }
+
+ if (decoder.Decode(assetId, asset.Data))
+ MainConsole.Instance.OutputFormat("Successfully decoded asset {0}", assetId);
+ else
+ MainConsole.Instance.OutputFormat("Decode of asset {0} failed", assetId); }
+ }
+}
\ No newline at end of file
--
cgit v1.1
From b86e7715a8d8f081fa9452d92a9d8f6d52867a12 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 5 Jan 2012 22:54:33 +0000
Subject: Improve "j2k decode" command to tell us how many layers and
components were decoded, instead of just success/failure
---
.../Agent/TextureSender/J2KDecoderCommandModule.cs | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
(limited to 'OpenSim/Region/OptionalModules')
diff --git a/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
index b224132..439096a 100644
--- a/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
+++ b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs
@@ -34,6 +34,7 @@ using log4net;
using Mono.Addins;
using Nini.Config;
using OpenMetaverse;
+using OpenMetaverse.Imaging;
using OpenSim.Framework;
using OpenSim.Framework.Console;
using OpenSim.Region.Framework.Interfaces;
@@ -137,9 +138,18 @@ namespace OpenSim.Region.OptionalModules.Agent.TextureSender
return;
}
- if (decoder.Decode(assetId, asset.Data))
- MainConsole.Instance.OutputFormat("Successfully decoded asset {0}", assetId);
+ OpenJPEG.J2KLayerInfo[] layers;
+ int components;
+ if (decoder.Decode(assetId, asset.Data, out layers, out components))
+ {
+ MainConsole.Instance.OutputFormat(
+ "Successfully decoded asset {0} with {1} layers and {2} components",
+ assetId, layers.Length, components);
+ }
else
- MainConsole.Instance.OutputFormat("Decode of asset {0} failed", assetId); }
+ {
+ MainConsole.Instance.OutputFormat("Decode of asset {0} failed", assetId);
+ }
+ }
}
}
\ No newline at end of file
--
cgit v1.1