mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:46:02 +08:00
Merge branch 'master' of ssh://melanie@opensimulator.org/var/git/opensim
This commit is contained in:
@@ -210,6 +210,7 @@ namespace OpenSim.Data.MSSQL
|
||||
{
|
||||
foreach (SceneObjectPart objectPart in allPrimsWithInventory)
|
||||
{
|
||||
command.Parameters.Clear();
|
||||
command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID));
|
||||
|
||||
List<TaskInventoryItem> inventory = new List<TaskInventoryItem>();
|
||||
|
||||
@@ -1169,5 +1169,27 @@ namespace OpenSim.Framework
|
||||
|
||||
return found.ToArray();
|
||||
}
|
||||
|
||||
#region FireAndForget Threading Pattern
|
||||
|
||||
public static void FireAndForget(System.Threading.WaitCallback callback)
|
||||
{
|
||||
callback.BeginInvoke(null, EndFireAndForget, callback);
|
||||
}
|
||||
|
||||
public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
|
||||
{
|
||||
callback.BeginInvoke(obj, EndFireAndForget, callback);
|
||||
}
|
||||
|
||||
private static void EndFireAndForget(IAsyncResult ar)
|
||||
{
|
||||
System.Threading.WaitCallback callback = (System.Threading.WaitCallback)ar.AsyncState;
|
||||
|
||||
callback.EndInvoke(ar);
|
||||
ar.AsyncWaitHandle.Close();
|
||||
}
|
||||
|
||||
#endregion FireAndForget Threading Pattern
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,6 +199,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
||||
InventoryFolderImpl inventoryFolder = null;
|
||||
InventoryItemBase inventoryItem = null;
|
||||
|
||||
/*
|
||||
if (!m_userInfo.HasReceivedInventory)
|
||||
{
|
||||
// If the region server has access to the user admin service (by which users are created),
|
||||
@@ -220,13 +221,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
||||
m_userInfo.FetchInventory();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
bool foundStar = false;
|
||||
|
||||
// Eliminate double slashes and any leading / on the path. This might be better done within InventoryFolderImpl
|
||||
// itself (possibly at a small loss in efficiency).
|
||||
string[] components
|
||||
= m_invPath.Split(new string[] { InventoryFolderImpl.PATH_DELIMITER }, StringSplitOptions.RemoveEmptyEntries);
|
||||
= m_invPath.Split(
|
||||
new string[] { InventoryFolderImpl.PATH_DELIMITER }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
int maxComponentIndex = components.Length - 1;
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
||||
/// </value>
|
||||
private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>();
|
||||
private Scene m_aScene;
|
||||
|
||||
/// <value>
|
||||
/// The comms manager we will use for all comms requests
|
||||
/// </value>
|
||||
@@ -110,8 +111,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
||||
InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved;
|
||||
if (handlerInventoryArchiveSaved != null)
|
||||
handlerInventoryArchiveSaved(succeeded, userInfo, invPath, saveStream, reportedException);
|
||||
}
|
||||
|
||||
public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream)
|
||||
{
|
||||
if (m_scenes.Count > 0)
|
||||
{
|
||||
CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
|
||||
|
||||
if (userInfo != null)
|
||||
new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath)
|
||||
{
|
||||
if (m_scenes.Count > 0)
|
||||
{
|
||||
CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
|
||||
|
||||
if (userInfo != null)
|
||||
new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute();
|
||||
}
|
||||
}
|
||||
|
||||
public void DearchiveInventory(string firstName, string lastName, string invPath, Stream loadStream)
|
||||
{
|
||||
if (m_scenes.Count > 0)
|
||||
@@ -125,18 +148,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
||||
UpdateClientWithLoadedNodes(userInfo, request.Execute());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream)
|
||||
{
|
||||
if (m_scenes.Count > 0)
|
||||
{
|
||||
CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
|
||||
|
||||
if (userInfo != null)
|
||||
new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void DearchiveInventory(string firstName, string lastName, string invPath, string loadPath)
|
||||
{
|
||||
@@ -151,18 +163,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
||||
UpdateClientWithLoadedNodes(userInfo, request.Execute());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath)
|
||||
{
|
||||
if (m_scenes.Count > 0)
|
||||
{
|
||||
CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
|
||||
|
||||
if (userInfo != null)
|
||||
new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load inventory from an inventory file archive
|
||||
|
||||
@@ -272,7 +272,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
|
||||
if (asset != null)
|
||||
{
|
||||
handler.BeginInvoke(id, sender, asset, null, null);
|
||||
Util.FireAndForget(delegate { handler(id, sender, asset); });
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -211,7 +211,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
|
||||
if (asset != null)
|
||||
{
|
||||
handler.BeginInvoke(id, sender, asset, null, null);
|
||||
Util.FireAndForget(delegate { handler(id, sender, asset); });
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -219,8 +219,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
{
|
||||
if ((a != null) && (m_Cache != null))
|
||||
m_Cache.Cache(a);
|
||||
|
||||
handler.BeginInvoke(assetID, s, a, null, null);
|
||||
|
||||
Util.FireAndForget(delegate { handler(assetID, s, a); });
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -457,6 +457,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
void SendInventoryComplete(IAsyncResult iar)
|
||||
{
|
||||
SendInventoryDelegate d = (SendInventoryDelegate)iar.AsyncState;
|
||||
d.EndInvoke(iar);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -622,6 +624,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
private void PurgeFolderCompleted(IAsyncResult iar)
|
||||
{
|
||||
PurgeFolderDelegate d = (PurgeFolderDelegate)iar.AsyncState;
|
||||
d.EndInvoke(iar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ namespace OpenSim.Services.Connectors
|
||||
}
|
||||
else
|
||||
{
|
||||
handler.BeginInvoke(id, sender, asset, null, null);
|
||||
Util.FireAndForget(delegate { handler(id, sender, asset); });
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -461,6 +461,8 @@ namespace OpenSim.Services.Connectors
|
||||
|
||||
private void MoveItemsCompleted(IAsyncResult iar)
|
||||
{
|
||||
MoveItemsDelegate d = (MoveItemsDelegate)iar.AsyncState;
|
||||
d.EndInvoke(iar);
|
||||
}
|
||||
|
||||
public bool MoveItems(string userID, List<InventoryItemBase> items, UUID sessionID)
|
||||
|
||||
@@ -232,7 +232,7 @@ namespace OpenSim.Services.InventoryService
|
||||
m_log.WarnFormat("[INVENTORY SERVICE]: User {0} inventory not available", userID);
|
||||
}
|
||||
|
||||
callback.BeginInvoke(folders, items, null, null);
|
||||
Util.FireAndForget(delegate { callback(folders, items); });
|
||||
}
|
||||
|
||||
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||
|
||||
Reference in New Issue
Block a user