more work on the support for multiple inventory servers.
The Login service should now read/create new inventory on the inventory server that is set in a users profile. Also added "Add-InventoryHost" console command to add a support for a new server to a region. So it would be good if someone could test this. Set up the grid as normal, but then also run extra inventory server on a different computer (well actually it just has to be on a different network hostname, so one using "http://localhost:8004" and one using "http://127.0.0.1:8005" should work) then you need to manually edit the user profile database to set the new servers url in a user's "userInventoryURI" field. Then on a region server, use the Add-InventoryHost to add the new server url (always include the full url, including http, but don't add a final /) Login with that account and see if the inventory works. Of course these needs to be made more user friendly.0.6.0-stable
							parent
							
								
									590df180a4
								
							
						
					
					
						commit
						5cfc468d95
					
				| 
						 | 
				
			
			@ -94,7 +94,7 @@ namespace OpenSim.Framework.Communications
 | 
			
		|||
        /// <param name="userID"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        /// <exception cref='System.Exception'>This will be thrown if there is a problem with the inventory service</exception>
 | 
			
		||||
        protected abstract InventoryData GetInventorySkeleton(LLUUID userID);
 | 
			
		||||
        protected abstract InventoryData GetInventorySkeleton(LLUUID userID, string inventoryServerUrl);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Called when we receive the client's initial XMLRPC login_to_simulator request message
 | 
			
		||||
| 
						 | 
				
			
			@ -230,7 +230,7 @@ namespace OpenSim.Framework.Communications
 | 
			
		|||
 | 
			
		||||
                        try
 | 
			
		||||
                        {
 | 
			
		||||
                            inventData = GetInventorySkeleton(agentID);
 | 
			
		||||
                            inventData = GetInventorySkeleton(agentID, userProfile.UserInventoryURI);
 | 
			
		||||
                        }
 | 
			
		||||
                        catch (Exception e)
 | 
			
		||||
                        {
 | 
			
		||||
| 
						 | 
				
			
			@ -386,7 +386,7 @@ namespace OpenSim.Framework.Communications
 | 
			
		|||
                        LLUUID agentID = userProfile.ID;
 | 
			
		||||
 | 
			
		||||
                        // Inventory Library Section
 | 
			
		||||
                        InventoryData inventData = GetInventorySkeleton(agentID);
 | 
			
		||||
                        InventoryData inventData = GetInventorySkeleton(agentID, userProfile.UserInventoryURI);
 | 
			
		||||
                        ArrayList AgentInventoryArray = inventData.InventoryArray;
 | 
			
		||||
 | 
			
		||||
                        Hashtable InventoryRootHash = new Hashtable();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -419,15 +419,21 @@ namespace OpenSim.Grid.UserServer
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        // See LoginService
 | 
			
		||||
        protected override InventoryData GetInventorySkeleton(LLUUID userID)
 | 
			
		||||
        protected override InventoryData GetInventorySkeleton(LLUUID userID, string serverUrl)
 | 
			
		||||
        {
 | 
			
		||||
            string invUrl = m_config.InventoryUrl;
 | 
			
		||||
            if (serverUrl != String.Empty)
 | 
			
		||||
            {
 | 
			
		||||
                invUrl = serverUrl;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            m_log.DebugFormat(
 | 
			
		||||
                 "[LOGIN]: Contacting inventory service at {0} for inventory skeleton of user {1}",
 | 
			
		||||
                 m_config.InventoryUrl, userID);
 | 
			
		||||
 | 
			
		||||
            List<InventoryFolderBase> folders
 | 
			
		||||
                = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>(
 | 
			
		||||
                    "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID);
 | 
			
		||||
                    "POST", invUrl + "RootFolders/", userID.UUID);
 | 
			
		||||
 | 
			
		||||
            if (null == folders || folders.Count == 0)
 | 
			
		||||
            {
 | 
			
		||||
| 
						 | 
				
			
			@ -440,7 +446,7 @@ namespace OpenSim.Grid.UserServer
 | 
			
		|||
                // exist.
 | 
			
		||||
                bool created =
 | 
			
		||||
                    SynchronousRestObjectPoster.BeginPostObject<Guid, bool>(
 | 
			
		||||
                        "POST", m_config.InventoryUrl + "CreateInventory/", userID.UUID);
 | 
			
		||||
                        "POST", invUrl + "CreateInventory/", userID.UUID);
 | 
			
		||||
 | 
			
		||||
                if (!created)
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			@ -456,7 +462,7 @@ namespace OpenSim.Grid.UserServer
 | 
			
		|||
                }
 | 
			
		||||
 | 
			
		||||
                folders = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>(
 | 
			
		||||
                    "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID);
 | 
			
		||||
                    "POST", invUrl + "RootFolders/", userID.UUID);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (folders != null && folders.Count > 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -602,6 +602,13 @@ namespace OpenSim
 | 
			
		|||
                    }
 | 
			
		||||
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                case "Add-InventoryHost":
 | 
			
		||||
                    if (cmdparams.Length > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        m_commsManager.AddInventoryService(cmdparams[0]);
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
                    string[] tmpPluginArgs = new string[cmdparams.Length + 1];
 | 
			
		||||
                    cmdparams.CopyTo(tmpPluginArgs, 1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -258,7 +258,7 @@ namespace OpenSim.Region.Communications.Local
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        // See LoginService
 | 
			
		||||
        protected override InventoryData GetInventorySkeleton(LLUUID userID)
 | 
			
		||||
        protected override InventoryData GetInventorySkeleton(LLUUID userID, string serverUrl)
 | 
			
		||||
        {
 | 
			
		||||
            List<InventoryFolderBase> folders = m_Parent.InventoryService.GetInventorySkeleton(userID);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue