From a11edceb00b5b86f825bd957bdac9edb91f893dd Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 2 Sep 2015 19:54:53 +0100 Subject: seems to compile ( tests comented out) --- .../Avatar/Attachments/AttachmentsModule.cs | 28 ---- .../Avatar/AvatarFactory/AvatarFactoryModule.cs | 17 +-- .../Tests/AvatarFactoryModuleTests.cs | 11 -- .../Avatar/BakedTextures/XBakesModule.cs | 8 ++ .../Region/CoreModules/Avatar/Chat/ChatModule.cs | 25 ---- .../CoreModules/Avatar/Combat/CombatModule.cs | 7 - .../Avatar/InstantMessage/MessageTransferModule.cs | 160 ++++++++++++--------- .../Avatar/InstantMessage/OfflineMessageModule.cs | 5 - .../Inventory/Transfer/InventoryTransferModule.cs | 10 +- .../Avatar/UserProfiles/UserProfileModule.cs | 7 +- 10 files changed, 104 insertions(+), 174 deletions(-) (limited to 'OpenSim/Region/CoreModules/Avatar') diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index b24dc0c..92beed2 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -406,25 +406,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments Dictionary scriptStates = new Dictionary(); -<<<<<<< HEAD - foreach (SceneObjectGroup so in attachments) - { - // Scripts MUST be snapshotted before the object is - // removed from the scene because doing otherwise will - // clobber the run flag - // This must be done outside the sp.AttachmentSyncLock so that there is no risk of a deadlock from - // scripts performing attachment operations at the same time. Getting object states stops the scripts. - scriptStates[so] = PrepareScriptInstanceForSave(so, false); - -// m_log.DebugFormat( -// "[ATTACHMENTS MODULE]: For object {0} for {1} in {2} got saved state {3}", -// so.Name, sp.Name, m_scene.Name, scriptStates[so]); - } - lock (sp.AttachmentsSyncLock) -======= if (sp.PresenceType != PresenceType.Npc) ->>>>>>> avn/ubitvar { foreach (SceneObjectGroup so in attachments) { @@ -477,18 +460,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments if (!Enabled) return false; -<<<<<<< HEAD - group.DetachFromBackup(); - - bool success = AttachObjectInternal(sp, group, attachmentPt, silent, addToInventory, false, append); - - if (!success) - group.AttachToBackup(); - - return success; -======= return AttachObjectInternal(sp, group, attachmentPt, silent, useAttachData, addToInventory, false, append); ->>>>>>> avn/ubitvar } /// diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 1e9cfba..0d3b39e 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -229,7 +229,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory private void SendAppearance(ScenePresence sp) { // Send the appearance to everyone in the scene - sp.SendAppearanceToAllOtherClients(); + sp.SendAppearanceToAllOtherAgents(); // Send animations back to the avatar as well sp.Animator.SendAnimPack(); @@ -460,7 +460,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory { m_log.Debug("[UpdateBakedCache] uploading to bakedModule cache"); - m_BakedTextureModule.Store(sp.UUID); + m_BakedTextureModule.Store(sp.UUID, wearableCache); } } @@ -529,12 +529,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory ); } } -<<<<<<< HEAD - -// m_log.DebugFormat( -// "[AVFACTORY]: Looking for texture {0}, id {1} for {2} {3}", -// face.TextureID, idx, client.Name, client.AgentId); -======= */ bool wearableCacheValid = false; if (wearableCache == null) @@ -577,15 +571,9 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory if (wearableCacheValid) m_log.Debug("[ValidateBakedCache] have valid local cache"); } ->>>>>>> avn/ubitvar bool checkExternal = false; -<<<<<<< HEAD - if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) - return false; - } -======= if (!wearableCacheValid) { // only use external bake module on login condition check @@ -658,7 +646,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory } } } ->>>>>>> avn/ubitvar sp.Appearance.WearableCacheItems = wearableCache; diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs index b7ff4e0..dd93449 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs @@ -132,7 +132,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory for (byte i = 0; i < visualParams.Length; i++) visualParams[i] = i; -<<<<<<< HEAD Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10)); uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes); Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex); @@ -145,12 +144,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory afm.SetAppearance(sp, bakedTextureEntry, visualParams, null); Assert.That(rebakeRequestsReceived, Is.EqualTo(0)); -======= - afm.SetAppearance(sp, new Primitive.TextureEntry(TestHelpers.ParseTail(0x10)), visualParams, new WearableCacheItem[0]); - - // TODO: Check baked texture - Assert.AreEqual(visualParams, sp.Appearance.VisualParams); ->>>>>>> avn/ubitvar } [Test] @@ -188,11 +181,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex); eyesFace.TextureID = eyesTextureId; -<<<<<<< HEAD - afm.SetAppearance(sp, bakedTextureEntry, visualParams, null); -======= afm.SetAppearance(sp, bakedTextureEntry, visualParams, new WearableCacheItem[0]); ->>>>>>> avn/ubitvar afm.SaveBakedTextures(userId); // Dictionary bakedTextures = afm.GetBakedTextureFaces(userId); diff --git a/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs b/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs index 7d2cad6..b8a1dba 100644 --- a/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs @@ -151,6 +151,14 @@ namespace OpenSim.Region.CoreModules.Avatar.BakedTextures } } + public void Store(UUID agentId) + { + } + public void UpdateMeshAvatar(UUID agentId) + { + } + + public void Store(UUID agentId, WearableCacheItem[] data) { if (m_URL == String.Empty) diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs index 2801ef0..0b5d95b 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs @@ -214,13 +214,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat UUID destination = c.Destination; Vector3 fromPos = c.Position; Vector3 regionPos = new Vector3(scene.RegionInfo.WorldLocX, scene.RegionInfo.WorldLocY, 0); -<<<<<<< HEAD -======= bool checkParcelHide = false; UUID sourceParcelID = UUID.Zero; Vector3 hidePos = fromPos; ->>>>>>> avn/ubitvar if (c.Channel == DEBUG_CHANNEL) c.Type = ChatTypeEnum.DebugChannel; @@ -377,27 +374,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat // m_log.DebugFormat("[CHAT] Broadcast: fromID {0} fromName {1}, cType {2}, sType {3}", fromID, fromName, cType, sourceType); HashSet receiverIDs = new HashSet(); -<<<<<<< HEAD - ((Scene)c.Scene).ForEachRootClient( - delegate(IClientAPI client) - { - // don't forward SayOwner chat from objects to - // non-owner agents - if ((c.Type == ChatTypeEnum.Owner) && - (null != c.SenderObject) && - (((SceneObjectPart)c.SenderObject).OwnerID != client.AgentId)) - return; - - client.SendChatMessage( - c.Message, (byte)cType, CenterOfRegion, fromName, fromID, ownerID, - (byte)sourceType, (byte)ChatAudibleLevel.Fully); - - receiverIDs.Add(client.AgentId); - }); - - (c.Scene as Scene).EventManager.TriggerOnChatToClients( - fromID, receiverIDs, c.Message, cType, CenterOfRegion, fromName, sourceType, ChatAudibleLevel.Fully); -======= if (c.Scene != null) { ((Scene)c.Scene).ForEachRootClient @@ -419,7 +395,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat (c.Scene as Scene).EventManager.TriggerOnChatToClients( fromID, receiverIDs, c.Message, cType, CenterOfRegion, fromName, sourceType, ChatAudibleLevel.Fully); } ->>>>>>> avn/ubitvar } /// diff --git a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs index b0b7054..4e1958a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs @@ -183,15 +183,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule try { ILandObject obj = avatar.Scene.LandChannel.GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y); -<<<<<<< HEAD - - if (obj == null) - return; - -======= if (obj == null) return; ->>>>>>> avn/ubitvar if ((obj.LandData.Flags & (uint)ParcelFlags.AllowDamage) != 0 || avatar.Scene.RegionInfo.RegionSettings.AllowDamage) { diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs index 5573c94..3c82fd9 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs @@ -188,7 +188,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage SendGridInstantMessageViaXMLRPC(im, result); } - public void HandleUndeliverableMessage(GridInstantMessage im, MessageResultNotification result) + public virtual void HandleUndeliverableMessage(GridInstantMessage im, MessageResultNotification result) { UndeliveredMessage handlerUndeliveredMessage = OnUndeliveredMessage; @@ -445,14 +445,11 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage return resp; } -<<<<<<< HEAD + /// /// delegate for sending a grid instant message asynchronously /// - public delegate void GridInstantMessageDelegate(GridInstantMessage im, MessageResultNotification result); -======= private delegate void GridInstantMessageDelegate(GridInstantMessage im, MessageResultNotification result); ->>>>>>> avn/ubitvar private class GIM { public GridInstantMessage im; @@ -479,31 +476,22 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage } } -<<<<<<< HEAD - d.BeginInvoke(im, result, GridInstantMessageCompleted, d); -======= + private void GridInstantMessageCompleted(IAsyncResult iar) { GridInstantMessageDelegate d = (GridInstantMessageDelegate)iar.AsyncState; d.EndInvoke(iar); ->>>>>>> avn/ubitvar } /// /// Internal SendGridInstantMessage over XMLRPC method. /// -<<<<<<< HEAD - /// - /// This is called from within a dedicated thread. - /// - private void SendGridInstantMessageViaXMLRPCAsync(GridInstantMessage im, MessageResultNotification result) -======= + /// /// Pass in 0 the first time this method is called. It will be called recursively with the last /// regionhandle tried /// private void SendGridInstantMessageViaXMLRPCAsyncMain(GridInstantMessage im, MessageResultNotification result) ->>>>>>> avn/ubitvar { GIM gim; do { @@ -525,87 +513,124 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage } } while (gim != null); } + private void SendGridInstantMessageViaXMLRPCAsync(GridInstantMessage im, MessageResultNotification result, UUID prevRegionID) { UUID toAgentID = new UUID(im.toAgentID); + PresenceInfo upd = null; UUID regionID; - bool needToLookupAgent; + bool lookupAgent = false; lock (m_UserRegionMap) - needToLookupAgent = !m_UserRegionMap.TryGetValue(toAgentID, out regionID); - - while (true) { - if (needToLookupAgent) + if (m_UserRegionMap.ContainsKey(toAgentID)) { - PresenceInfo[] presences = PresenceService.GetAgents(new string[] { toAgentID.ToString() }); + upd = new PresenceInfo(); + upd.RegionID = m_UserRegionMap[toAgentID]; + + // We need to compare the current regionhandle with the previous region handle + // or the recursive loop will never end because it will never try to lookup the agent again + if (prevRegionID == upd.RegionID) + { + lookupAgent = true; + } + } + else + { + lookupAgent = true; + } + } - UUID foundRegionID = UUID.Zero; - if (presences != null) + // Are we needing to look-up an agent? + if (lookupAgent) + { + // Non-cached user agent lookup. + PresenceInfo[] presences = PresenceService.GetAgents(new string[] { toAgentID.ToString() }); + if (presences != null && presences.Length > 0) + { + foreach (PresenceInfo p in presences) { - foreach (PresenceInfo p in presences) + if (p.RegionID != UUID.Zero) { - if (p.RegionID != UUID.Zero) - { - foundRegionID = p.RegionID; - break; - } + upd = p; + break; } } - - // If not found or the found region is the same as the last lookup, then message is undeliverable - if (foundRegionID == UUID.Zero || foundRegionID == regionID) - break; - else - regionID = foundRegionID; } - GridRegion reginfo = m_Scenes[0].GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, regionID); - if (reginfo == null) + if (upd != null) { - m_log.WarnFormat("[GRID INSTANT MESSAGE]: Unable to find region {0}", regionID); - break; + // check if we've tried this before.. + // This is one way to end the recursive loop + // + if (upd.RegionID == prevRegionID) + { + // m_log.Error("[GRID INSTANT MESSAGE]: Unable to deliver an instant message"); + HandleUndeliverableMessage(im, result); + return; + } } + else + { + // m_log.Error("[GRID INSTANT MESSAGE]: Unable to deliver an instant message"); + HandleUndeliverableMessage(im, result); + return; + } + } -<<<<<<< HEAD - // Try to send the message to the agent via the retrieved region. - Hashtable msgdata = ConvertGridInstantMessageToXMLRPC(im); - msgdata["region_handle"] = 0; - bool imresult = doIMSending(reginfo, msgdata); - - // If the message delivery was successful, then cache the entry. - if (imresult) -======= if (upd != null) { GridRegion reginfo = m_Scenes[0].GridService.GetRegionByUUID(UUID.Zero, upd.RegionID); if (reginfo != null) ->>>>>>> avn/ubitvar { - lock (m_UserRegionMap) + Hashtable msgdata = ConvertGridInstantMessageToXMLRPC(im); + // Not actually used anymore, left in for compatibility + // Remove at next interface change + // + msgdata["region_handle"] = 0; + bool imresult = doIMSending(reginfo, msgdata); + if (imresult) + { + // IM delivery successful, so store the Agent's location in our local cache. + lock (m_UserRegionMap) + { + if (m_UserRegionMap.ContainsKey(toAgentID)) + { + m_UserRegionMap[toAgentID] = upd.RegionID; + } + else + { + m_UserRegionMap.Add(toAgentID, upd.RegionID); + } + } + result(true); + } + else { - m_UserRegionMap[toAgentID] = regionID; + // try again, but lookup user this time. + // Warning, this must call the Async version + // of this method or we'll be making thousands of threads + // The version within the spawned thread is SendGridInstantMessageViaXMLRPCAsync + // The version that spawns the thread is SendGridInstantMessageViaXMLRPC + + // This is recursive!!!!! + SendGridInstantMessageViaXMLRPCAsync(im, result, + upd.RegionID); } - result(true); - return; } - - // If we reach this point in the first iteration of the while, then we may have unsuccessfully tried - // to use a locally cached region ID. All subsequent attempts need to lookup agent details from - // the presence service. - needToLookupAgent = true; + else + { + m_log.WarnFormat("[GRID INSTANT MESSAGE]: Unable to find region {0}", upd.RegionID); + HandleUndeliverableMessage(im, result); + } + } + else + { + HandleUndeliverableMessage(im, result); } - - // If we reached this point then the message was not deliverable. Remove the bad cache entry and - // signal the delivery failure. - lock (m_UserRegionMap) - m_UserRegionMap.Remove(toAgentID); - - // m_log.Error("[GRID INSTANT MESSAGE]: Unable to deliver an instant message"); - HandleUndeliverableMessage(im, result); } /// @@ -709,6 +734,5 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage gim["message_key"] = m_MessageKey; return gim; } - } } diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs index 76023bd..1650097 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs @@ -238,7 +238,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage return; } -<<<<<<< HEAD if (!m_ForwardOfflineGroupMessages) { if (im.dialog == (byte)InstantMessageDialog.GroupNotice || @@ -246,9 +245,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage return; } - bool success = SynchronousRestObjectRequester.MakeRequest( - "POST", m_RestURL+"/SaveMessage/", im, 10000); -======= Scene scene = FindScene(new UUID(im.fromAgentID)); if (scene == null) scene = m_SceneList[0]; @@ -256,7 +252,6 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage SendReply reply = SynchronousRestObjectRequester.MakeRequest( "POST", m_RestURL+"/SaveMessage/?scope=" + scene.RegionInfo.ScopeID.ToString(), im); ->>>>>>> avn/ubitvar if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent) { diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs index 18e18a9..2d15b47 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs @@ -180,13 +180,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer "[INVENTORY TRANSFER]: Inserting original folder {0} into agent {1}'s inventory", folderID, new UUID(im.toAgentID)); -<<<<<<< HEAD InventoryFolderBase folderCopy - = scene.GiveInventoryFolder(client, receipientID, client.AgentId, folderID, UUID.Zero); -======= - InventoryFolderBase folderCopy - = scene.GiveInventoryFolder(recipientID, client.AgentId, folderID, UUID.Zero); ->>>>>>> avn/ubitvar + = scene.GiveInventoryFolder(client, recipientID, client.AgentId, folderID, UUID.Zero); if (folderCopy == null) { @@ -475,7 +470,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer /// private void OnGridInstantMessage(GridInstantMessage im) { -<<<<<<< HEAD // Check if it's a type of message that we should handle if (!((im.dialog == (byte) InstantMessageDialog.InventoryOffered) || (im.dialog == (byte) InstantMessageDialog.TaskInventoryOffered) @@ -488,8 +482,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer "[INVENTORY TRANSFER]: {0} IM type received from grid. From={1} ({2}), To={3}", (InstantMessageDialog)im.dialog, im.fromAgentID, im.fromAgentName, im.toAgentID); -======= ->>>>>>> avn/ubitvar // Check if this is ours to handle // Scene scene = FindClientScene(new UUID(im.toAgentID)); diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs index bea2834..4d1611c 100644 --- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs @@ -869,7 +869,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles } #endregion Notes -<<<<<<< HEAD + #region User Preferences /// /// Updates the user preferences. @@ -933,8 +933,6 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles } #endregion User Preferences -======= ->>>>>>> avn/ubitvar #region Avatar Properties /// /// Update the avatars interests . @@ -1401,8 +1399,6 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles return null; } #endregion Util -<<<<<<< HEAD -======= #region Web Util /// @@ -1580,6 +1576,5 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles return true; } #endregion Web Util ->>>>>>> avn/ubitvar } } -- cgit v1.1