mirror of
https://github.com/opensim/opensim.git
synced 2026-08-06 01:06:30 +08:00
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:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user