Heart surgery no.2: the inventory service hooks.

Several improvements in the connectors themselves.
Several improvements in configurations.
Needed to add a hack in IUserService and UserManagerBase, to be removed when that service is refactored.
This commit is contained in:
diva
2009-06-10 13:18:32 +00:00
parent 8045ed28ec
commit 0f367bd7bb
34 changed files with 726 additions and 437 deletions

View File

@@ -30,6 +30,7 @@ using System.Collections.Generic;
using System.Reflection;
using log4net;
using OpenMetaverse;
using OpenSim.Services.Interfaces;
namespace OpenSim.Framework.Communications.Cache
{
@@ -62,7 +63,7 @@ namespace OpenSim.Framework.Communications.Cache
/// <summary>
/// The comms manager holds references to services (user, grid, inventory, etc.)
/// </summary>
private readonly CommunicationsManager m_commsManager;
private readonly IInventoryService m_InventoryService;
public UserProfileData UserProfile { get { return m_userProfile; } }
private UserProfileData m_userProfile;
@@ -96,10 +97,10 @@ namespace OpenSim.Framework.Communications.Cache
/// </summary>
/// <param name="commsManager"></param>
/// <param name="userProfile"></param>
public CachedUserInfo(CommunicationsManager commsManager, UserProfileData userProfile)
public CachedUserInfo(IInventoryService invService, UserProfileData userProfile)
{
m_commsManager = commsManager;
m_userProfile = userProfile;
m_InventoryService = invService;
}
/// <summary>
@@ -213,15 +214,7 @@ namespace OpenSim.Framework.Communications.Cache
/// asynchronously otherwise.
public void FetchInventory()
{
if (m_commsManager.SecureInventoryService != null)
{
m_commsManager.SecureInventoryService.RequestInventoryForUser(
UserProfile.ID, SessionID, InventoryReceive);
}
else
{
m_commsManager.InventoryService.RequestInventoryForUser(UserProfile.ID, InventoryReceive);
}
m_InventoryService.GetUserInventory(UserProfile.ID, InventoryReceive);
}
/// <summary>
@@ -383,14 +376,8 @@ namespace OpenSim.Framework.Communications.Cache
createdBaseFolder.Type = createdFolder.Type;
createdBaseFolder.Version = createdFolder.Version;
if (m_commsManager.SecureInventoryService != null)
{
m_commsManager.SecureInventoryService.AddFolder(createdBaseFolder, m_session_id);
}
else
{
m_commsManager.InventoryService.AddFolder(createdBaseFolder);
}
m_InventoryService.AddFolder(createdBaseFolder);
return true;
}
else
@@ -449,14 +436,7 @@ namespace OpenSim.Framework.Communications.Cache
baseFolder.Type = (short)type;
baseFolder.Version = RootFolder.Version;
if (m_commsManager.SecureInventoryService != null)
{
m_commsManager.SecureInventoryService.UpdateFolder(baseFolder, m_session_id);
}
else
{
m_commsManager.InventoryService.UpdateFolder(baseFolder);
}
m_InventoryService.UpdateFolder(baseFolder);
folder.Name = name;
folder.Type = (short)type;
@@ -498,14 +478,7 @@ namespace OpenSim.Framework.Communications.Cache
baseFolder.ID = folderID;
baseFolder.ParentID = parentID;
if (m_commsManager.SecureInventoryService != null)
{
m_commsManager.SecureInventoryService.MoveFolder(baseFolder, m_session_id);
}
else
{
m_commsManager.InventoryService.MoveFolder(baseFolder);
}
m_InventoryService.MoveFolder(baseFolder);
InventoryFolderImpl folder = RootFolder.FindFolder(folderID);
InventoryFolderImpl parentFolder = RootFolder.FindFolder(parentID);
@@ -568,14 +541,7 @@ namespace OpenSim.Framework.Communications.Cache
purgedBaseFolder.Type = purgedFolder.Type;
purgedBaseFolder.Version = purgedFolder.Version;
if (m_commsManager.SecureInventoryService != null)
{
m_commsManager.SecureInventoryService.PurgeFolder(purgedBaseFolder, m_session_id);
}
else
{
m_commsManager.InventoryService.PurgeFolder(purgedBaseFolder);
}
m_InventoryService.PurgeFolder(purgedBaseFolder);
purgedFolder.Purge();
@@ -615,14 +581,7 @@ namespace OpenSim.Framework.Communications.Cache
}
ItemReceive(item, null);
if (m_commsManager.SecureInventoryService != null)
{
m_commsManager.SecureInventoryService.AddItem(item, m_session_id);
}
else
{
m_commsManager.InventoryService.AddItem(item);
}
m_InventoryService.AddItem(item);
}
else
{
@@ -642,14 +601,7 @@ namespace OpenSim.Framework.Communications.Cache
{
if (m_hasReceivedInventory)
{
if (m_commsManager.SecureInventoryService != null)
{
m_commsManager.SecureInventoryService.UpdateItem(item, m_session_id);
}
else
{
m_commsManager.InventoryService.UpdateItem(item);
}
m_InventoryService.UpdateItem(item);
}
else
{
@@ -688,14 +640,7 @@ namespace OpenSim.Framework.Communications.Cache
if (RootFolder.DeleteItem(item.ID))
{
if (m_commsManager.SecureInventoryService != null)
{
return m_commsManager.SecureInventoryService.DeleteItem(item, m_session_id);
}
else
{
return m_commsManager.InventoryService.DeleteItem(item);
}
return m_InventoryService.DeleteItem(item);
}
}
else
@@ -789,14 +734,7 @@ namespace OpenSim.Framework.Communications.Cache
InventoryItemBase itemInfo = null;
if (m_commsManager.SecureInventoryService != null)
{
itemInfo = m_commsManager.SecureInventoryService.QueryItem(item, m_session_id);
}
else
{
itemInfo = m_commsManager.InventoryService.QueryItem(item);
}
itemInfo = m_InventoryService.QueryItem(item);
if (itemInfo != null)
{
@@ -833,14 +771,7 @@ namespace OpenSim.Framework.Communications.Cache
InventoryFolderBase folderInfo = null;
if (m_commsManager.SecureInventoryService != null)
{
folderInfo = m_commsManager.SecureInventoryService.QueryFolder(folder, m_session_id);
}
else
{
folderInfo = m_commsManager.InventoryService.QueryFolder(folder);
}
folderInfo = m_InventoryService.QueryFolder(folder);
if (folderInfo != null)
{

View File

@@ -29,6 +29,7 @@ using System.Collections.Generic;
using System.Reflection;
using log4net;
using OpenMetaverse;
using OpenSim.Services.Interfaces;
namespace OpenSim.Framework.Communications.Cache
{
@@ -66,6 +67,8 @@ namespace OpenSim.Framework.Communications.Cache
/// </summary>
public readonly InventoryFolderImpl LibraryRoot;
private IInventoryService m_InventoryService;
/// <summary>
/// Constructor
/// </summary>
@@ -77,6 +80,11 @@ namespace OpenSim.Framework.Communications.Cache
LibraryRoot = libraryRootFolder;
}
public void SetInventoryService(IInventoryService invService)
{
m_InventoryService = invService;
}
/// <summary>
/// A new user has moved into a region in this instance so retrieve their profile from the user service.
/// </summary>
@@ -200,7 +208,7 @@ namespace OpenSim.Framework.Communications.Cache
/// <param name="userProfile"></param>
protected CachedUserInfo AddToCaches(UserProfileData userProfile)
{
CachedUserInfo createdUserInfo = new CachedUserInfo(m_commsManager, userProfile);
CachedUserInfo createdUserInfo = new CachedUserInfo(m_InventoryService, userProfile);
lock (m_userProfilesById)
{

View File

@@ -28,6 +28,7 @@
using System;
using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Services.Interfaces;
namespace OpenSim.Framework.Communications
{
@@ -135,5 +136,10 @@ namespace OpenSim.Framework.Communications
// This probably shouldn't be here, it belongs to IAuthentication
// But since Scenes only have IUserService references, I'm placing it here for now.
bool VerifySession(UUID userID, UUID sessionID);
// Temporary Hack until we move everything to the new service model
void SetInventoryService(IInventoryService invService);
}
}

View File

@@ -33,6 +33,7 @@ using NUnit.Framework.SyntaxHelpers;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Communications.Cache;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common.Mock;
namespace OpenSim.Framework.Communications.Tests
@@ -143,6 +144,11 @@ namespace OpenSim.Framework.Communications.Tests
{
return true;
}
public void SetInventoryService(IInventoryService inv)
{
throw new NotImplementedException();
}
}
}
}

View File

@@ -37,6 +37,7 @@ using OpenMetaverse.StructuredData;
using OpenSim.Data;
using OpenSim.Framework.Communications;
using OpenSim.Framework.Statistics;
using OpenSim.Services.Interfaces;
namespace OpenSim.Framework.Communications
{
@@ -54,6 +55,7 @@ namespace OpenSim.Framework.Communications
private List<IUserDataPlugin> m_plugins = new List<IUserDataPlugin>();
protected CommunicationsManager m_commsManager;
protected IInventoryService m_InventoryService;
/// <summary>
/// Constructor
@@ -64,6 +66,11 @@ namespace OpenSim.Framework.Communications
m_commsManager = commsManager;
}
public virtual void SetInventoryService(IInventoryService invService)
{
m_InventoryService = invService;
}
/// <summary>
/// Add a new user data plugin - plugins will be requested in the order they were added.
/// </summary>
@@ -676,7 +683,24 @@ namespace OpenSim.Framework.Communications
}
else
{
m_commsManager.InterServiceInventoryService.CreateNewUserInventory(userProf.ID);
//
// WARNING: This is a horrible hack
// The purpose here is to avoid touching the user server at this point.
// There are dragons there that I can't deal with right now.
// diva 06/09/09
//
if (m_InventoryService != null)
{
// local service (standalone)
m_log.Debug("[USERSTORAGE]: using IInventoryService to create user's inventory");
m_InventoryService.CreateUserInventory(userProf.ID);
}
else
{
// used by the user server
m_log.Debug("[USERSTORAGE]: using m_commsManager.InterServiceInventoryService to create user's inventory");
m_commsManager.InterServiceInventoryService.CreateNewUserInventory(userProf.ID);
}
return userProf.ID;
}