From 6b9cc6c48d7b49cc4bce5dce4e66d7856a093b75 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 13 Aug 2009 11:30:29 -0700 Subject: Inventory redirects from CachedUserInfo to InventoryService COMPLETE! --- OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 7633b7b..aaa236c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -6609,20 +6609,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else // Agent { - CachedUserInfo userInfo = ((Scene)m_scene).CommsManager.UserProfileCacheService.GetUserDetails(AgentId); - if (userInfo == null) - { - m_log.ErrorFormat( - "[CLIENT]: Could not resolve user {0} for caps inventory update", - AgentId); - - break; - } - - if (userInfo.RootFolder == null) - break; - - InventoryItemBase assetRequestItem = userInfo.RootFolder.FindItem(itemID); + //InventoryItemBase assetRequestItem = userInfo.RootFolder.FindItem(itemID); + IInventoryService invService = m_scene.RequestModuleInterface(); + InventoryItemBase assetRequestItem = invService.QueryItem(new InventoryItemBase(itemID)); if (assetRequestItem == null) { assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.LibraryRoot.FindItem(itemID); -- cgit v1.1 From 5246dc33dcfc51b7ebb19b269159df3991029350 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 13 Aug 2009 14:10:12 -0700 Subject: Renamed QueryItem/QueryFolder to GetItem/GetFolder. The word 'query' starting to get on my nerves. --- OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index aaa236c..a3e275d 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -6611,7 +6611,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { //InventoryItemBase assetRequestItem = userInfo.RootFolder.FindItem(itemID); IInventoryService invService = m_scene.RequestModuleInterface(); - InventoryItemBase assetRequestItem = invService.QueryItem(new InventoryItemBase(itemID)); + InventoryItemBase assetRequestItem = invService.GetItem(new InventoryItemBase(itemID)); if (assetRequestItem == null) { assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.LibraryRoot.FindItem(itemID); -- cgit v1.1 From 034c9cf606373bfa9d3f8040cd787f789e0efbf2 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 13 Aug 2009 17:34:15 -0700 Subject: Added GetAssetPermissions. Few last bugs nixed. This is ready for testing. --- OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index a3e275d..6dda5aa 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -2156,16 +2156,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP protected void SendBulkUpdateInventoryFolder(InventoryFolderBase folderBase) { - // XXX: Nasty temporary move that will be resolved shortly - InventoryFolderImpl folder = (InventoryFolderImpl)folderBase; - // We will use the same transaction id for all the separate packets to be sent out in this update. UUID transactionId = UUID.Random(); List folderDataBlocks = new List(); - SendBulkUpdateInventoryFolderRecursive(folder, ref folderDataBlocks, transactionId); + SendBulkUpdateInventoryFolderRecursive(folderBase, ref folderDataBlocks, transactionId); if (folderDataBlocks.Count > 0) { @@ -2191,17 +2188,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// /// private void SendBulkUpdateInventoryFolderRecursive( - InventoryFolderImpl folder, ref List folderDataBlocks, + InventoryFolderBase folder, ref List folderDataBlocks, UUID transactionId) { folderDataBlocks.Add(GenerateBulkUpdateFolderDataBlock(folder)); const int MAX_ITEMS_PER_PACKET = 5; + IInventoryService invService = m_scene.RequestModuleInterface(); // If there are any items then we have to start sending them off in this packet - the next folder will have // to be in its own bulk update packet. Also, we can only fit 5 items in a packet (at least this was the limit // being used on the Linden grid at 20081203). - List items = folder.RequestListOfItems(); + InventoryCollection contents = invService.GetFolderContent(AgentId, folder.ID); // folder.RequestListOfItems(); + List items = contents.Items; while (items.Count > 0) { BulkUpdateInventoryPacket bulkUpdate @@ -2233,8 +2232,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP folderDataBlocks.Add(GenerateBulkUpdateFolderDataBlock(folder)); } - List subFolders = folder.RequestListOfFolderImpls(); - foreach (InventoryFolderImpl subFolder in subFolders) + List subFolders = contents.Folders; + foreach (InventoryFolderBase subFolder in subFolders) { SendBulkUpdateInventoryFolderRecursive(subFolder, ref folderDataBlocks, transactionId); } -- cgit v1.1 From a42569d89675430087d32332e168429d4185311c Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sun, 16 Aug 2009 15:06:06 +0900 Subject: Thanks dmiles for a patch that adds PacketType.RequestMultipleObjects Packet Handler - ref mantis #4010 --- .../Region/ClientStack/LindenUDP/LLClientView.cs | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'OpenSim/Region/ClientStack/LindenUDP') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 7633b7b..12c2d86 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -197,6 +197,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP private ObjectExtraParams handlerUpdateExtraParams; //OnUpdateExtraParams; private ObjectDuplicate handlerObjectDuplicate; private ObjectDuplicateOnRay handlerObjectDuplicateOnRay; + private ObjectRequest handlerObjectRequest; private ObjectSelect handlerObjectSelect; private ObjectDeselect handlerObjectDeselect; private ObjectIncludeInSearch handlerObjectIncludeInSearch; @@ -1083,6 +1084,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP public event GodKickUser OnGodKickUser; public event ObjectExtraParams OnUpdateExtraParams; public event UpdateShape OnUpdatePrimShape; + public event ObjectRequest OnObjectRequest; public event ObjectSelect OnObjectSelect; public event ObjectDeselect OnObjectDeselect; public event GenericCall7 OnObjectDescription; @@ -5937,6 +5939,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP break; + case PacketType.RequestMultipleObjects: + RequestMultipleObjectsPacket incomingRequest = (RequestMultipleObjectsPacket)Pack; + + #region Packet Session and User Check + if (m_checkPackets) + { + if (incomingRequest.AgentData.SessionID != SessionId || + incomingRequest.AgentData.AgentID != AgentId) + break; + } + #endregion + + handlerObjectRequest = null; + + for (int i = 0; i < incomingRequest.ObjectData.Length; i++) + { + handlerObjectRequest = OnObjectRequest; + if (handlerObjectRequest != null) + { + handlerObjectRequest(incomingRequest.ObjectData[i].ID, this); + } + } + break; case PacketType.ObjectSelect: ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack; -- cgit v1.1 From 5e391b9f7c62e0d9328d09135521f65400e31283 Mon Sep 17 00:00:00 2001 From: Teravus Ovares (Dan Olivares) Date: Sun, 16 Aug 2009 12:14:49 -0400 Subject: * ShortVersion, another attempt at fixing the test thread death that randomly occurs. * LongVersion nIni may be causing the test thread death. Pausing OpenSimulator during startup causes a nIni error that makes debugging startup operations difficult for users. It might be because when it's in pause mode, something else reads from the nini config passed? If it is, it might not be fixable.. however, if it's concurrency that causes nini death it would make sense to give each section of the tests a new IConfigSource so that they don't read from the same configsource at the same time. --- OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'OpenSim/Region/ClientStack/LindenUDP') diff --git a/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs b/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs index bd11d97..9fb1041 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/Tests/BasicCircuitTests.cs @@ -34,6 +34,7 @@ using OpenMetaverse; using OpenMetaverse.Packets; using OpenSim.Framework; using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; namespace OpenSim.Region.ClientStack.LindenUDP.Tests { -- cgit v1.1 From 644db1e5400504ec70b22c3e928873948f1247c3 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 17 Aug 2009 09:40:38 +0100 Subject: Add System.Xml reference to the console project --- .../Region/ClientStack/LindenUDP/LLClientView.cs | 77 +++++++++++++++------- 1 file changed, 55 insertions(+), 22 deletions(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 12c2d86..e1d6f1b 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -1435,6 +1435,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// heightmap public virtual void SendLayerData(float[] map) { + DoSendLayerData((object)map); ThreadPool.QueueUserWorkItem(DoSendLayerData, map); } @@ -1450,16 +1451,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP { for (int y = 0; y < 16; y++) { - // For some terrains, sending more than one terrain patch at once results in a libsecondlife exception - // see http://opensimulator.org/mantis/view.php?id=1662 - //for (int x = 0; x < 16; x += 4) - //{ - // SendLayerPacket(map, y, x); - // Thread.Sleep(150); - //} - for (int x = 0; x < 16; x++) - { - SendLayerData(x, y, LLHeightFieldMoronize(map)); + for (int x = 0; x < 16; x += 4) + { + SendLayerPacket(LLHeightFieldMoronize(map), y, x); Thread.Sleep(35); } } @@ -1476,17 +1470,54 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// heightmap /// X coordinate for patches 0..12 /// Y coordinate for patches 0..15 - // private void SendLayerPacket(float[] map, int y, int x) - // { - // int[] patches = new int[4]; - // patches[0] = x + 0 + y * 16; - // patches[1] = x + 1 + y * 16; - // patches[2] = x + 2 + y * 16; - // patches[3] = x + 3 + y * 16; - - // Packet layerpack = LLClientView.TerrainManager.CreateLandPacket(map, patches); - // OutPacket(layerpack, ThrottleOutPacketType.Land); - // } + private void SendLayerPacket(float[] map, int y, int x) + { + int[] patches = new int[4]; + patches[0] = x + 0 + y * 16; + patches[1] = x + 1 + y * 16; + patches[2] = x + 2 + y * 16; + patches[3] = x + 3 + y * 16; + + LayerDataPacket layerpack; + try + { + layerpack = TerrainCompressor.CreateLandPacket(map, patches); + layerpack.Header.Zerocoded = true; + layerpack.Header.Reliable = true; + + if (layerpack.Length > 1000) // Oversize packet was created + { + for (int xa = 0 ; xa < 4 ; xa++) + { + // Send oversize packet in individual patches + // + SendLayerData(x+xa, y, map); + } + } + else + { + OutPacket(layerpack, ThrottleOutPacketType.Land); + } + } + catch (OverflowException e) + { + for (int xa = 0 ; xa < 4 ; xa++) + { + // Send oversize packet in individual patches + // + SendLayerData(x+xa, y, map); + } + } + catch (IndexOutOfRangeException e) + { + for (int xa = 0 ; xa < 4 ; xa++) + { + // Bad terrain, send individual chunks + // + SendLayerData(x+xa, y, map); + } + } + } /// /// Sends a specified patch to a client @@ -1507,6 +1538,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP LayerDataPacket layerpack = TerrainCompressor.CreateLandPacket(((map.Length==65536)? map : LLHeightFieldMoronize(map)), patches); layerpack.Header.Zerocoded = true; + layerpack.Header.Reliable = true; OutPacket(layerpack, ThrottleOutPacketType.Land); @@ -1556,7 +1588,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// 16x16 array of wind speeds public virtual void SendWindData(Vector2[] windSpeeds) { - ThreadPool.QueueUserWorkItem(new WaitCallback(DoSendWindData), (object)windSpeeds); + DoSendWindData((object)windSpeeds); + // ThreadPool.QueueUserWorkItem(new WaitCallback(DoSendWindData), (object)windSpeeds); } /// -- cgit v1.1 From 9ad3e72ae1945d754417480a9f733f441d054371 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 17 Aug 2009 22:06:51 +0100 Subject: Did I say that i don't like git? Remove some stuff that shouldn't have gone in. --- .../Region/ClientStack/LindenUDP/LLClientView.cs | 77 +++++++--------------- 1 file changed, 22 insertions(+), 55 deletions(-) (limited to 'OpenSim/Region/ClientStack/LindenUDP') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 9aef26d..06bea3d 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -1435,7 +1435,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// heightmap public virtual void SendLayerData(float[] map) { - DoSendLayerData((object)map); ThreadPool.QueueUserWorkItem(DoSendLayerData, map); } @@ -1451,9 +1450,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP { for (int y = 0; y < 16; y++) { - for (int x = 0; x < 16; x += 4) - { - SendLayerPacket(LLHeightFieldMoronize(map), y, x); + // For some terrains, sending more than one terrain patch at once results in a libsecondlife exception + // see http://opensimulator.org/mantis/view.php?id=1662 + //for (int x = 0; x < 16; x += 4) + //{ + // SendLayerPacket(map, y, x); + // Thread.Sleep(150); + //} + for (int x = 0; x < 16; x++) + { + SendLayerData(x, y, LLHeightFieldMoronize(map)); Thread.Sleep(35); } } @@ -1470,54 +1476,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// heightmap /// X coordinate for patches 0..12 /// Y coordinate for patches 0..15 - private void SendLayerPacket(float[] map, int y, int x) - { - int[] patches = new int[4]; - patches[0] = x + 0 + y * 16; - patches[1] = x + 1 + y * 16; - patches[2] = x + 2 + y * 16; - patches[3] = x + 3 + y * 16; - - LayerDataPacket layerpack; - try - { - layerpack = TerrainCompressor.CreateLandPacket(map, patches); - layerpack.Header.Zerocoded = true; - layerpack.Header.Reliable = true; - - if (layerpack.Length > 1000) // Oversize packet was created - { - for (int xa = 0 ; xa < 4 ; xa++) - { - // Send oversize packet in individual patches - // - SendLayerData(x+xa, y, map); - } - } - else - { - OutPacket(layerpack, ThrottleOutPacketType.Land); - } - } - catch (OverflowException e) - { - for (int xa = 0 ; xa < 4 ; xa++) - { - // Send oversize packet in individual patches - // - SendLayerData(x+xa, y, map); - } - } - catch (IndexOutOfRangeException e) - { - for (int xa = 0 ; xa < 4 ; xa++) - { - // Bad terrain, send individual chunks - // - SendLayerData(x+xa, y, map); - } - } - } + // private void SendLayerPacket(float[] map, int y, int x) + // { + // int[] patches = new int[4]; + // patches[0] = x + 0 + y * 16; + // patches[1] = x + 1 + y * 16; + // patches[2] = x + 2 + y * 16; + // patches[3] = x + 3 + y * 16; + + // Packet layerpack = LLClientView.TerrainManager.CreateLandPacket(map, patches); + // OutPacket(layerpack, ThrottleOutPacketType.Land); + // } /// /// Sends a specified patch to a client @@ -1538,7 +1507,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP LayerDataPacket layerpack = TerrainCompressor.CreateLandPacket(((map.Length==65536)? map : LLHeightFieldMoronize(map)), patches); layerpack.Header.Zerocoded = true; - layerpack.Header.Reliable = true; OutPacket(layerpack, ThrottleOutPacketType.Land); @@ -1588,8 +1556,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// 16x16 array of wind speeds public virtual void SendWindData(Vector2[] windSpeeds) { - DoSendWindData((object)windSpeeds); - // ThreadPool.QueueUserWorkItem(new WaitCallback(DoSendWindData), (object)windSpeeds); + ThreadPool.QueueUserWorkItem(new WaitCallback(DoSendWindData), (object)windSpeeds); } /// -- cgit v1.1