diff --git a/OpenMetaverse.Tests/MessageTests.cs b/OpenMetaverse.Tests/MessageTests.cs index e680aa1a..1266093a 100644 --- a/OpenMetaverse.Tests/MessageTests.cs +++ b/OpenMetaverse.Tests/MessageTests.cs @@ -1143,7 +1143,47 @@ namespace OpenMetaverse.Tests } #region Performance Testing - private const int TEST_ITER = 1000; + private const int TEST_ITER = 100000; + + [Test] + [Category("Benchmark")] + public void ReflectionPerformanceRemoteParcelRequest() + { + DateTime messageTestTime = DateTime.UtcNow; + for (int x = 0; x < TEST_ITER; x++) + { + RemoteParcelRequestMessage s = new RemoteParcelRequestMessage(); + s.ParcelID = UUID.Random(); + OSDMap map = s.Serialize(); + + RemoteParcelRequestMessage t = new RemoteParcelRequestMessage(); + t.Deserialize(map); + + Assert.AreEqual(s.ParcelID, t.ParcelID); + } + TimeSpan duration = DateTime.UtcNow - messageTestTime; + Console.WriteLine("RemoteParcelRequestMessage: OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, duration); + + BinaryFormatter formatter = new BinaryFormatter(); + DateTime xmlTestTime = DateTime.UtcNow; + for (int x = 0; x < TEST_ITER; x++) + { + RemoteParcelRequestMessage s = new RemoteParcelRequestMessage(); + s.ParcelID = UUID.Random(); + + MemoryStream stream = new MemoryStream(); + + formatter.Serialize(stream, s); + + stream.Seek(0, SeekOrigin.Begin); + RemoteParcelRequestMessage t = (RemoteParcelRequestMessage)formatter.Deserialize(stream); + + Assert.AreEqual(s.ParcelID, t.ParcelID); + } + TimeSpan durationxml = DateTime.UtcNow - xmlTestTime; + Console.WriteLine("RemoteParcelRequestMessage: .NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, durationxml); + } + [Test] [Category("Benchmark")] @@ -1199,7 +1239,7 @@ namespace OpenMetaverse.Tests } } TimeSpan duration = DateTime.UtcNow - messageTestTime; - Console.WriteLine("OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, duration); + Console.WriteLine("DirLandReplyMessage: OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, duration); BinaryFormatter formatter = new BinaryFormatter(); DateTime xmlTestTime = DateTime.UtcNow; @@ -1254,7 +1294,7 @@ namespace OpenMetaverse.Tests } } TimeSpan durationxml = DateTime.UtcNow - xmlTestTime; - Console.WriteLine(".NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, durationxml); + Console.WriteLine("DirLandReplyMessage: .NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, durationxml); } [Test] @@ -1321,7 +1361,6 @@ namespace OpenMetaverse.Tests [Category("Benchmark")] public void ReflectionPerformanceParcelProperties() { - DateTime messageTestTime = DateTime.UtcNow; for (int x = 0; x < TEST_ITER; x++) { @@ -1444,7 +1483,7 @@ namespace OpenMetaverse.Tests Assert.AreEqual(s.UserLookAt, t.UserLookAt); } TimeSpan duration = DateTime.UtcNow - messageTestTime; - Console.WriteLine("OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, duration); + Console.WriteLine("ParcelPropertiesMessage: OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, duration); BinaryFormatter formatter = new BinaryFormatter(); @@ -1574,7 +1613,7 @@ namespace OpenMetaverse.Tests Assert.AreEqual(s.UserLookAt, t.UserLookAt); } TimeSpan durationxml = DateTime.UtcNow - xmlTestTime; - Console.WriteLine(".NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, durationxml); + Console.WriteLine("ParcelPropertiesMessage: .NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, durationxml); } #endregion diff --git a/OpenMetaverse/InventoryManager.cs b/OpenMetaverse/InventoryManager.cs index 4bb81756..73cb3ad6 100644 --- a/OpenMetaverse/InventoryManager.cs +++ b/OpenMetaverse/InventoryManager.cs @@ -2082,8 +2082,9 @@ namespace OpenMetaverse /// /// A byte[] array containing the encoded scripts contents /// the itemID of the script + /// if true, sets the script content to run on the mono interpreter /// - public void RequestUpdateScriptAgentInventory(byte[] data, UUID itemID, ScriptUpdatedCallback callback) + public void RequestUpdateScriptAgentInventory(byte[] data, UUID itemID, bool mono, ScriptUpdatedCallback callback) { Uri url = _Client.Network.CurrentSim.Caps.CapabilityURI("UpdateScriptAgent"); @@ -2091,7 +2092,7 @@ namespace OpenMetaverse { UpdateScriptAgentMessage msg = new UpdateScriptAgentMessage(); msg.ItemID = itemID; - msg.Target = "lsl2"; + msg.Target = mono ? "mono" : "lsl2"; CapsClient request = new CapsClient(url); request.OnComplete += new CapsClient.CompleteCallback(UpdateScriptAgentInventoryResponse); @@ -2559,6 +2560,7 @@ namespace OpenMetaverse /// /// An unsigned integer representing a primitive being simulated /// An which represents a script object from the agents inventory + /// true to set the scripts running state to enabled /// A Unique Transaction ID /// /// @@ -2571,7 +2573,7 @@ namespace OpenMetaverse /// UUID Transaction = Client.Inventory.RezScript(Prim, (InventoryItem)Client.Inventory.Store[Script]); /// /// - public UUID CopyScriptToTask(uint objectLocalID, InventoryItem item) + public UUID CopyScriptToTask(uint objectLocalID, InventoryItem item, bool enableScript) { UUID transactionID = UUID.Random(); @@ -2580,6 +2582,7 @@ namespace OpenMetaverse ScriptPacket.AgentData.SessionID = _Client.Self.SessionID; ScriptPacket.UpdateBlock.ObjectLocalID = objectLocalID; + ScriptPacket.UpdateBlock.Enabled = enableScript; ScriptPacket.InventoryBlock.ItemID = item.UUID; ScriptPacket.InventoryBlock.FolderID = item.ParentUUID; diff --git a/OpenMetaverse/Messages/LindenMessages.cs b/OpenMetaverse/Messages/LindenMessages.cs index a69c19d3..9616037c 100644 --- a/OpenMetaverse/Messages/LindenMessages.cs +++ b/OpenMetaverse/Messages/LindenMessages.cs @@ -939,8 +939,11 @@ namespace OpenMetaverse.Messages.Linden return map; } } + + [Serializable] public class RemoteParcelRequestMessage : IMessage { + /// The grid-wide unique parcel ID public UUID ParcelID; /// diff --git a/Programs/examples/TestClient/Commands/Inventory/UploadScriptCommand.cs b/Programs/examples/TestClient/Commands/Inventory/UploadScriptCommand.cs index 7b6f336f..bbd0e2e4 100644 --- a/Programs/examples/TestClient/Commands/Inventory/UploadScriptCommand.cs +++ b/Programs/examples/TestClient/Commands/Inventory/UploadScriptCommand.cs @@ -45,17 +45,17 @@ namespace OpenMetaverse.TestClient using (StreamReader reader = new StreamReader(file)) { string body = reader.ReadToEnd(); - string desc = String.Format("{0} created by OpenMetaverse BotClient {1}", file, DateTime.Now); + string desc = String.Format("{0} created by OpenMetaverse TestClient {1}", file, DateTime.Now); // create the asset Client.Inventory.RequestCreateItem(Client.Inventory.FindFolderForType(AssetType.LSLText), file, desc, AssetType.LSLText, UUID.Random(), InventoryType.LSL, PermissionMask.All, delegate(bool success, InventoryItem item) { if (success) // upload the asset - Client.Inventory.RequestUpdateScriptAgentInventory(EncodeScript(body), item.UUID, new InventoryManager.ScriptUpdatedCallback(delegate(bool success1, string status, UUID itemid, UUID assetid) + Client.Inventory.RequestUpdateScriptAgentInventory(EncodeScript(body), item.UUID, true, new InventoryManager.ScriptUpdatedCallback(delegate(bool success1, string status, UUID itemid, UUID assetid) { if (success1) - ret += String.Format("Script successfully uploaded, ItemID {0} AssetID {1}", itemid, assetid); + ret += String.Format(" Script successfully uploaded, ItemID {0} AssetID {1}", itemid, assetid); })); }); }