Miscellaneous small tweaks and more logging messages to move towards resolving inventory problems
parent
1a679c8cd9
commit
c545cc8cd9
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
using System.Collections.Generic;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework.Console;
|
||||
|
||||
namespace OpenSim.Framework.Communications.Cache
|
||||
{
|
||||
|
@ -61,12 +62,14 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
|
||||
if (userInfo.UserProfile != null)
|
||||
{
|
||||
RequestInventoryForUser(userID, userInfo);
|
||||
// The request itself will occur when the agent finishes logging on to the region
|
||||
// so there's no need to do it here.
|
||||
//RequestInventoryForUser(userID, userInfo);
|
||||
m_userProfiles.Add(userID, userInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Console.WriteLine("CACHE", "User profile for user not found");
|
||||
MainLog.Instance.Error("USERCACHE", "User profile for user {0} not found", userID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -286,7 +286,7 @@ namespace OpenSim.Framework.Data.MSSQL
|
|||
/// </summary>
|
||||
/// <param name="reader">The SQL Result</param>
|
||||
/// <returns>the item read</returns>
|
||||
public InventoryItemBase readInventoryItem(IDataReader reader)
|
||||
private InventoryItemBase readInventoryItem(IDataReader reader)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -302,7 +302,7 @@ namespace OpenSim.Framework.Data.MySQL
|
|||
/// </summary>
|
||||
/// <param name="reader">The SQL Result</param>
|
||||
/// <returns>the item read</returns>
|
||||
public InventoryItemBase readInventoryItem(MySqlDataReader reader)
|
||||
private InventoryItemBase readInventoryItem(MySqlDataReader reader)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -32,6 +32,7 @@ using OpenSim.Framework;
|
|||
using OpenSim.Framework.Servers;
|
||||
using OpenSim.Framework.Communications;
|
||||
using OpenSim.Framework.Communications.Cache;
|
||||
using OpenSim.Framework.Console;
|
||||
|
||||
namespace OpenSim.Region.Communications.OGS1
|
||||
{
|
||||
|
@ -47,10 +48,10 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
|
||||
#region IInventoryServices Members
|
||||
|
||||
// See IInventoryServices
|
||||
public void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack,
|
||||
InventoryItemInfo itemCallBack)
|
||||
{
|
||||
|
||||
{
|
||||
if (!m_RequestingInventory.ContainsKey(userID))
|
||||
{
|
||||
InventoryRequest request = new InventoryRequest(userID, folderCallBack, itemCallBack);
|
||||
|
@ -59,30 +60,46 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Request the entire user's inventory (folders and items) from the inventory server.
|
||||
///
|
||||
/// XXX May want to change this so that we don't end up shuffling over data which might prove
|
||||
/// entirely unnecessary.
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
private void RequestInventory(LLUUID userID)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("Requesting Inventory from Inventory server ( " + _inventoryServerUrl + "/GetInventory/" +" ) for " + userID.ToString());
|
||||
RestObjectPosterResponse<InventoryCollection> requester = new RestObjectPosterResponse<InventoryCollection>();
|
||||
MainLog.Instance.Verbose(
|
||||
"INVENTORY", "Requesting inventory from {0}/GetInventory/ for user {1}",
|
||||
_inventoryServerUrl, userID);
|
||||
|
||||
RestObjectPosterResponse<InventoryCollection> requester
|
||||
= new RestObjectPosterResponse<InventoryCollection>();
|
||||
requester.ResponseCallback = InventoryResponse;
|
||||
|
||||
requester.BeginPostObject<Guid>(_inventoryServerUrl + "/GetInventory/", userID.UUID);
|
||||
Console.WriteLine("Request for Inventory sent");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
Console.WriteLine(e.StackTrace);
|
||||
MainLog.Instance.Error("INVENTORY", e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Callback used by the inventory server GetInventory request
|
||||
/// </summary>
|
||||
/// <param name="userID"></param>
|
||||
private void InventoryResponse(InventoryCollection response)
|
||||
{
|
||||
LLUUID userID = response.UserID;
|
||||
if (m_RequestingInventory.ContainsKey(userID))
|
||||
{
|
||||
|
||||
MainLog.Instance.Verbose("INVENTORY",
|
||||
"Received inventory response for user {0} containing {1} folders and {2} items",
|
||||
userID, response.Folders.Count, response.AllItems.Count);
|
||||
|
||||
InventoryFolderImpl rootFolder = null;
|
||||
InventoryRequest request = m_RequestingInventory[userID];
|
||||
foreach (InventoryFolderBase folder in response.Folders)
|
||||
|
@ -113,6 +130,13 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
}
|
||||
m_RequestingInventory.Remove(userID);
|
||||
}
|
||||
else
|
||||
{
|
||||
MainLog.Instance.Warn(
|
||||
"INVENTORY",
|
||||
"Received inventory response for {0} for which we do not have a record of requesting!",
|
||||
userID);
|
||||
}
|
||||
}
|
||||
|
||||
public void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder)
|
||||
|
|
Loading…
Reference in New Issue