* refactor: Move RequestInventoryForUser() from service to CachedUserInfo

* This simplifies callers in most cases - CachedUserInfo is already handling the rest of the fetch inventory work anyway
0.6.3-post-fixes
Justin Clarke Casey 2009-02-12 17:07:44 +00:00
parent 058ec414b4
commit 31ca3a8d4d
6 changed files with 37 additions and 40 deletions

View File

@ -202,6 +202,25 @@ namespace OpenSim.Framework.Communications.Cache
m_rootFolder = null;
}
}
/// <summary>
/// Fetch inventory for this user.
/// </summary>
/// This has to be executed as a separate step once user information is retreived.
/// This will occur synchronously if the inventory service is in the same process as this class, and
/// 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);
}
}
/// <summary>
/// Callback invoked when the inventory is received from an async request to the inventory service

View File

@ -104,36 +104,6 @@ namespace OpenSim.Framework.Communications.Cache
return false;
}
/// <summary>
/// Request the inventory data for the given user. This will occur asynchronously if running on a grid
/// </summary>
/// <param name="userID"></param>
/// <param name="userInfo"></param>
public void RequestInventoryForUser(UUID userID)
{
CachedUserInfo userInfo = GetUserDetails(userID);
if (userInfo != null)
{
if (m_commsManager.SecureInventoryService != null)
{
m_commsManager.SecureInventoryService.RequestInventoryForUser(userID, userInfo.SessionID, userInfo.InventoryReceive);
}
else
{
m_commsManager.InventoryService.RequestInventoryForUser(userID, userInfo.InventoryReceive);
}
//IInventoryServices invService = userInfo.GetInventoryService();
//if (invService != null)
//{
// invService.RequestInventoryForUser(userID, userInfo.InventoryReceive);
//}
}
else
{
m_log.ErrorFormat("[USER CACHE]: RequestInventoryForUser() - user profile for user {0} not found", userID);
}
}
/// <summary>
/// Get cached details of the given user. If the user isn't in cache then the user is requested from the
/// profile service.

View File

@ -64,7 +64,7 @@ namespace OpenSim.Framework.Communications.Tests
/// Test requesting inventory for a user
/// </summary>
[Test]
public void TestRequestInventoryForUser()
public void TestFetchInventory()
{
TestCommunicationsManager commsManager = new TestCommunicationsManager();
CachedUserInfo userInfo = UserProfileTestUtils.CreateUserWithInventory(commsManager);

View File

@ -59,9 +59,10 @@ namespace OpenSim.Framework.Communications.Tests
lus.AddUser("Bill", "Bailey", "troll", "bill@bailey.com", 1000, 1000, userId);
commsManager.UserProfileCacheService.RequestInventoryForUser(userId);
CachedUserInfo userInfo = commsManager.UserProfileCacheService.GetUserDetails(userId);
userInfo.FetchInventory();
return commsManager.UserProfileCacheService.GetUserDetails(userId);
return userInfo;
}
}
}

View File

@ -472,7 +472,7 @@ namespace OpenSim.Region.Framework.Scenes
if (recipientUserInfo != null)
{
if (!recipientUserInfo.HasReceivedInventory)
CommsManager.UserProfileCacheService.RequestInventoryForUser(recipient);
recipientUserInfo.FetchInventory();
// Insert a copy of the item into the recipient
InventoryItemBase itemCopy = new InventoryItemBase();
@ -1202,7 +1202,8 @@ namespace OpenSim.Region.Framework.Scenes
avatarId);
}
if (!profile.HasReceivedInventory)
CommsManager.UserProfileCacheService.RequestInventoryForUser(avatarId);
profile.FetchInventory();
InventoryItemBase agentItem = CreateAgentInventoryItemFromTask(avatarId, part, itemId);
if (agentItem == null)
@ -1841,8 +1842,7 @@ namespace OpenSim.Region.Framework.Scenes
// Async inventory requests will queue, but they will never
// execute unless inventory is actually fetched
//
CommsManager.UserProfileCacheService.RequestInventoryForUser(
userInfo.UserProfile.ID);
userInfo.FetchInventory();
}
if (userInfo != null)

View File

@ -847,7 +847,13 @@ namespace OpenSim.Region.Framework.Scenes
//SendAnimPack();
m_scene.SwapRootAgentCount(false);
m_scene.CommsManager.UserProfileCacheService.RequestInventoryForUser(m_uuid);
CachedUserInfo userInfo = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(m_uuid);
if (userInfo != null)
userInfo.FetchInventory();
else
m_log.ErrorFormat("[SCENE]: Could not find user info for {0} when making it a root agent", m_uuid);
//m_scene.CapsModule.AddCapsHandler(m_uuid);
// On the next prim update, all objects will be sent
@ -2504,8 +2510,9 @@ namespace OpenSim.Region.Framework.Scenes
}
else
{
// Restore the user structures that we needed to delete before asking the receiving region to complete the crossing
m_scene.CommsManager.UserProfileCacheService.RequestInventoryForUser(UUID);
// Restore the user structures that we needed to delete before asking the receiving region
// to complete the crossing
userInfo.FetchInventory();
m_scene.CapsModule.AddCapsHandler(UUID);
}
}