diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index d850305e2f..fc2f9487ad 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs @@ -41,8 +41,8 @@ namespace OpenSim.Framework.Communications.Caches public class CachedUserInfo { // Fields - public InventoryFolder RootFolder; - public UserProfileData UserProfile; + public InventoryFolder RootFolder = null; + public UserProfileData UserProfile = null; // Methods public void FolderReceive(LLUUID userID, InventoryFolder folderInfo) diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs index 2271550e91..e65b6b2dcd 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs @@ -98,17 +98,24 @@ namespace OpenSim.Framework.Communications.Caches { if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) { - CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; - if (info.RootFolder.folderID == parentID) + if (this.UserProfiles[remoteClient.AgentId].RootFolder != null) { - info.RootFolder.CreateNewSubFolder(folderID, folderName, folderType); - } - else - { - InventoryFolder folder = info.RootFolder.HasSubFolder(parentID); - if (folder != null) + CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; + if (info.RootFolder.folderID == parentID) { - folder.CreateNewSubFolder(folderID, folderName, folderType); + InventoryFolder createdFolder = info.RootFolder.CreateNewSubFolder(folderID, folderName, folderType); + if (createdFolder != null) + { + this.m_parent.InventoryServer.AddNewInventoryFolder(remoteClient.AgentId, createdFolder); + } + } + else + { + InventoryFolder folder = info.RootFolder.HasSubFolder(parentID); + if (folder != null) + { + folder.CreateNewSubFolder(folderID, folderName, folderType); + } } } } @@ -127,20 +134,23 @@ namespace OpenSim.Framework.Communications.Caches } else if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) { - CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; - if (info.RootFolder.folderID == folderID) + if (this.UserProfiles[remoteClient.AgentId].RootFolder != null) { - if (fetchItems) + CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; + if (info.RootFolder.folderID == folderID) { - remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, info.RootFolder.RequestListOfItems()); + if (fetchItems) + { + remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, info.RootFolder.RequestListOfItems()); + } } - } - else - { - InventoryFolder folder = info.RootFolder.HasSubFolder(folderID); - if ((folder != null) && fetchItems) + else { - remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, folder.RequestListOfItems()); + InventoryFolder folder = info.RootFolder.HasSubFolder(folderID); + if ((folder != null) && fetchItems) + { + remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, folder.RequestListOfItems()); + } } } } @@ -154,10 +164,13 @@ namespace OpenSim.Framework.Communications.Caches } else if (this.UserProfiles.ContainsKey(remoteClient.AgentId)) { - InventoryItemBase item = this.UserProfiles[remoteClient.AgentId].RootFolder.HasItem(itemID); - if (item != null) + if (this.UserProfiles[remoteClient.AgentId].RootFolder != null) { - remoteClient.SendInventoryItemDetails(ownerID, item); + InventoryItemBase item = this.UserProfiles[remoteClient.AgentId].RootFolder.HasItem(itemID); + if (item != null) + { + remoteClient.SendInventoryItemDetails(ownerID, item); + } } } } @@ -168,7 +181,7 @@ namespace OpenSim.Framework.Communications.Caches /// private void RequestInventoryForUser(LLUUID userID, CachedUserInfo userInfo) { - //this.m_parent.InventoryServer.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive); + this.m_parent.InventoryServer.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive); //for now we manually create the root folder, // but should be requesting all inventory from inventory server. diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs index b78cba1544..777dbe23ad 100644 --- a/OpenSim/Framework/Communications/IInventoryServices.cs +++ b/OpenSim/Framework/Communications/IInventoryServices.cs @@ -14,5 +14,6 @@ namespace OpenSim.Framework.Communications public interface IInventoryServices { void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack); + void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder); } } diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs index 35c2c8cf01..6ba024a978 100644 --- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs +++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs @@ -47,5 +47,10 @@ namespace OpenSim.Region.Communications.Local } } } + + public void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder) + { + this.AddFolder(folder); + } } } diff --git a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs index 47d3148582..af239f7fc1 100644 --- a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs +++ b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs @@ -8,12 +8,17 @@ namespace OpenSim.Region.Communications.OGS1 { public class CommunicationsOGS1 : CommunicationsManager { - + public OGS1InventoryService InvenService; + public CommunicationsOGS1(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache ) :base(serversInfo, httpServer, assetCache) { OGS1GridServices gridInterComms = new OGS1GridServices(serversInfo, httpServer); GridServer = gridInterComms; InterRegion = gridInterComms; + + InvenService = new OGS1InventoryService(); + InventoryServer = InvenService; + UserServer = new OGS1UserServices(this); } } diff --git a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs new file mode 100644 index 0000000000..e8355c6802 --- /dev/null +++ b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using libsecondlife; +using OpenSim.Framework.Communications; +using OpenSim.Framework.Data; +using InventoryFolder = OpenSim.Framework.Communications.Caches.InventoryFolder; + +namespace OpenSim.Region.Communications.OGS1 +{ + public class OGS1InventoryService : IInventoryServices + { + + public OGS1InventoryService() + { + + } + + public void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack) + { + + } + + public void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder) + { + + } + } +} diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index f24def2c15..5123048f2a 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -564,7 +564,7 @@ namespace OpenSim.Region.Environment.Scenes m_estateManager.sendRegionHandshake(client); CreateAndAddScenePresence(client); m_LandManager.sendParcelOverlay(client); - //commsManager.UserProfiles.AddNewUser(client.AgentId); + commsManager.UserProfiles.AddNewUser(client.AgentId); } protected virtual void SubscribeToClientEvents(IClientAPI client) @@ -609,7 +609,7 @@ namespace OpenSim.Region.Environment.Scenes client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(m_estateManager.handleEstateOwnerMessage); //client.OnCreateNewInventoryItem += CreateNewInventoryItem; - //client.OnCreateNewInventoryFolder += commsManager.UserProfiles.HandleCreateInventoryFolder; + client.OnCreateNewInventoryFolder += commsManager.UserProfiles.HandleCreateInventoryFolder; client.OnFetchInventoryDescendents += commsManager.UserProfiles.HandleFecthInventoryDescendents; client.OnRequestTaskInventory += RequestTaskInventory;