mirror of
https://github.com/opensim/opensim.git
synced 2026-08-12 12:25:42 +08:00
Committing partial work on passing folders across instances. This may crash.
This commit is contained in:
@@ -340,6 +340,29 @@ namespace OpenSim.Region.Communications.Hypergrid
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public InventoryFolderBase QueryFolder(InventoryFolderBase item, UUID session_id)
|
||||
{
|
||||
if (IsLocalStandaloneUser(item.Owner))
|
||||
{
|
||||
return base.QueryFolder(item);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
string invServ = GetUserInventoryURI(item.Owner);
|
||||
|
||||
return SynchronousRestSessionObjectPoster<InventoryFolderBase, InventoryFolderBase>.BeginPostObject(
|
||||
"POST", invServ + "/QueryFolder/", item, session_id.ToString(), item.Owner.ToString());
|
||||
}
|
||||
catch (WebException e)
|
||||
{
|
||||
m_log.ErrorFormat("[HGrid INVENTORY SERVICE]: Query inventory item operation failed, {0} {1}",
|
||||
e.Source, e.Message);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Methods common to ISecureInventoryService and IInventoryService
|
||||
|
||||
@@ -312,6 +312,22 @@ namespace OpenSim.Region.Communications.OGS1
|
||||
return null;
|
||||
}
|
||||
|
||||
public InventoryFolderBase QueryFolder(InventoryFolderBase item)
|
||||
{
|
||||
try
|
||||
{
|
||||
return SynchronousRestObjectPoster.BeginPostObject<InventoryFolderBase, InventoryFolderBase>(
|
||||
"POST", _inventoryServerUrl + "/QueryFolder/", item);
|
||||
}
|
||||
catch (WebException e)
|
||||
{
|
||||
m_log.ErrorFormat("[OGS1 INVENTORY SERVICE]: Query inventory item operation failed, {0} {1}",
|
||||
e.Source, e.Message);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool HasInventoryForUser(UUID userID)
|
||||
{
|
||||
return false;
|
||||
|
||||
@@ -312,6 +312,22 @@ namespace OpenSim.Region.Communications.OGS1
|
||||
return null;
|
||||
}
|
||||
|
||||
public InventoryFolderBase QueryFolder(InventoryFolderBase item, UUID session_id)
|
||||
{
|
||||
try
|
||||
{
|
||||
return SynchronousRestSessionObjectPoster<InventoryFolderBase, InventoryFolderBase>.BeginPostObject(
|
||||
"POST", _inventoryServerUrl + "/QueryFolder/", item, session_id.ToString(), item.Owner.ToString());
|
||||
}
|
||||
catch (WebException e)
|
||||
{
|
||||
m_log.ErrorFormat("[OGS1 INVENTORY SERVICE]: Query inventory item operation failed, {0} {1}",
|
||||
e.Source, e.Message);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool HasInventoryForUser(UUID userID)
|
||||
{
|
||||
return false;
|
||||
|
||||
@@ -426,9 +426,38 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
|
||||
|
||||
if (AssetType.Folder == assetType)
|
||||
{
|
||||
// Folders not implemented yet
|
||||
UUID folderID = new UUID(msg.binaryBucket, 1);
|
||||
InventoryFolderBase folder = new InventoryFolderBase();
|
||||
|
||||
folder.ID = folderID;
|
||||
folder.Owner = user.ControllingClient.AgentId;
|
||||
|
||||
// Fetch from database
|
||||
//
|
||||
return;
|
||||
if (!userInfo.QueryFolder(folder))
|
||||
{
|
||||
m_log.Debug("[INVENTORY TRANSFER] Can't find folder to give");
|
||||
return;
|
||||
}
|
||||
|
||||
// Get folder info
|
||||
//
|
||||
InventoryFolderImpl folderInfo = userInfo.RootFolder.FindFolder(folder.ID);
|
||||
if (folderInfo == null)
|
||||
{
|
||||
m_log.Debug("[INVENTORY TRANSFER] Can't retrieve folder to give");
|
||||
return;
|
||||
}
|
||||
|
||||
user.ControllingClient.SendBulkUpdateInventory(folderInfo);
|
||||
|
||||
// Deliver message
|
||||
//
|
||||
user.ControllingClient.SendInstantMessage(
|
||||
new UUID(msg.fromAgentID), msg.message,
|
||||
new UUID(msg.toAgentID),
|
||||
msg.fromAgentName, msg.dialog, msg.timestamp,
|
||||
folderID, false, msg.binaryBucket);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -618,6 +618,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!recipientUserInfo.HasReceivedInventory)
|
||||
{
|
||||
recipientUserInfo.FetchInventory();
|
||||
if (!WaitForInventory(recipientUserInfo))
|
||||
return null;
|
||||
}
|
||||
|
||||
if (recipientParentFolderId == UUID.Zero)
|
||||
recipientParentFolderId = recipientUserInfo.RootFolder.ID;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user