Merge branch 'master' into careminster-presence-refactor

avinationmerge
Melanie 2010-04-29 23:33:26 +01:00
commit 08ebcdb0b8
18 changed files with 884 additions and 150 deletions

9
.gitignore vendored
View File

@ -9,6 +9,14 @@
*.pdb
*.pidb
*.dll.build
*.dll
*.VisualState.xml
*/*/obj
*/*/*/obj
*/*/*/*/obj
*/*/*/*/*/obj
*/*/*/*/*/*/obj
*/*/*/*/*/*/*/obj
*/*/bin
*/*/*/bin
*/*/*/*/bin
@ -45,6 +53,7 @@ bin/OpenSim.Grid.InventoryServer.log
bin/OpenSim.Grid.MessagingServer.log
bin/OpenSim.Grid.UserServer.log
bin/OpenSim.log
bin/*.manifest
bin/crashes/
Examples/*.dll
OpenSim.build

View File

@ -53,8 +53,8 @@ namespace OpenSim.Data
/// When a database driver starts up, it specifies a resource that
/// needs to be brought up to the current revision. For instance:
///
/// Migration um = new Migration(Assembly, DbConnection, "Users");
/// um.Upgrade();
/// Migration um = new Migration(DbConnection, Assembly, "Users");
/// um.Update();
///
/// This works out which version Users is at, and applies all the
/// revisions past it to it. If there is no users table, all
@ -110,10 +110,11 @@ namespace OpenSim.Data
return;
// If not, create the migration tables
DbCommand cmd = _conn.CreateCommand();
cmd.CommandText = _migrations_create;
cmd.ExecuteNonQuery();
cmd.Dispose();
using (DbCommand cmd = _conn.CreateCommand())
{
cmd.CommandText = _migrations_create;
cmd.ExecuteNonQuery();
}
InsertVersion("migrations", 1);
}
@ -131,37 +132,37 @@ namespace OpenSim.Data
m_log.InfoFormat("[MIGRATIONS] Upgrading {0} to latest revision {1}.", _type, migrations.Keys[migrations.Count - 1]);
m_log.Info("[MIGRATIONS] NOTE: this may take a while, don't interupt this process!");
DbCommand cmd = _conn.CreateCommand();
foreach (KeyValuePair<int, string> kvp in migrations)
using (DbCommand cmd = _conn.CreateCommand())
{
int newversion = kvp.Key;
cmd.CommandText = kvp.Value;
// we need to up the command timeout to infinite as we might be doing long migrations.
cmd.CommandTimeout = 0;
try
foreach (KeyValuePair<int, string> kvp in migrations)
{
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
m_log.DebugFormat("[MIGRATIONS] Cmd was {0}", cmd.CommandText);
m_log.DebugFormat("[MIGRATIONS]: An error has occurred in the migration {0}.\n This may mean you could see errors trying to run OpenSim. If you see database related errors, you will need to fix the issue manually. Continuing.", e.Message);
cmd.CommandText = "ROLLBACK;";
cmd.ExecuteNonQuery();
}
int newversion = kvp.Key;
cmd.CommandText = kvp.Value;
// we need to up the command timeout to infinite as we might be doing long migrations.
cmd.CommandTimeout = 0;
try
{
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
m_log.DebugFormat("[MIGRATIONS] Cmd was {0}", cmd.CommandText);
m_log.DebugFormat("[MIGRATIONS]: An error has occurred in the migration {0}.\n This may mean you could see errors trying to run OpenSim. If you see database related errors, you will need to fix the issue manually. Continuing.", e.Message);
cmd.CommandText = "ROLLBACK;";
cmd.ExecuteNonQuery();
}
if (version == 0)
{
InsertVersion(_type, newversion);
if (version == 0)
{
InsertVersion(_type, newversion);
}
else
{
UpdateVersion(_type, newversion);
}
version = newversion;
}
else
{
UpdateVersion(_type, newversion);
}
version = newversion;
}
cmd.Dispose();
}
// private int MaxVersion()
@ -200,43 +201,46 @@ namespace OpenSim.Data
protected virtual int FindVersion(DbConnection conn, string type)
{
int version = 0;
DbCommand cmd = conn.CreateCommand();
try
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select version from migrations where name='" + type +"' order by version desc";
using (IDataReader reader = cmd.ExecuteReader())
try
{
if (reader.Read())
cmd.CommandText = "select version from migrations where name='" + type + "' order by version desc";
using (IDataReader reader = cmd.ExecuteReader())
{
version = Convert.ToInt32(reader["version"]);
if (reader.Read())
{
version = Convert.ToInt32(reader["version"]);
}
reader.Close();
}
reader.Close();
}
catch
{
// Something went wrong, so we're version 0
}
}
catch
{
// Something went wrong, so we're version 0
}
cmd.Dispose();
return version;
}
private void InsertVersion(string type, int version)
{
DbCommand cmd = _conn.CreateCommand();
cmd.CommandText = "insert into migrations(name, version) values('" + type + "', " + version + ")";
m_log.InfoFormat("[MIGRATIONS]: Creating {0} at version {1}", type, version);
cmd.ExecuteNonQuery();
cmd.Dispose();
using (DbCommand cmd = _conn.CreateCommand())
{
cmd.CommandText = "insert into migrations(name, version) values('" + type + "', " + version + ")";
m_log.InfoFormat("[MIGRATIONS]: Creating {0} at version {1}", type, version);
cmd.ExecuteNonQuery();
}
}
private void UpdateVersion(string type, int version)
{
DbCommand cmd = _conn.CreateCommand();
cmd.CommandText = "update migrations set version=" + version + " where name='" + type + "'";
m_log.InfoFormat("[MIGRATIONS]: Updating {0} to version {1}", type, version);
cmd.ExecuteNonQuery();
cmd.Dispose();
using (DbCommand cmd = _conn.CreateCommand())
{
cmd.CommandText = "update migrations set version=" + version + " where name='" + type + "'";
m_log.InfoFormat("[MIGRATIONS]: Updating {0} to version {1}", type, version);
cmd.ExecuteNonQuery();
}
}
// private SortedList<int, string> GetAllMigrations()

View File

@ -145,7 +145,7 @@ namespace OpenSim.Data.MySQL
/// <summary>
/// Returns a list of the root folders within a users inventory
/// </summary>
/// <param name="user">The user whos inventory is to be searched</param>
/// <param name="user">The user whose inventory is to be searched</param>
/// <returns>A list of folder objects</returns>
public List<InventoryFolderBase> getUserRootFolders(UUID user)
{
@ -284,7 +284,7 @@ namespace OpenSim.Data.MySQL
{
InventoryItemBase item = new InventoryItemBase();
// TODO: this is to handle a case where NULLs creep in there, which we are not sure is indemic to the system, or legacy. It would be nice to live fix these.
// TODO: this is to handle a case where NULLs creep in there, which we are not sure is endemic to the system, or legacy. It would be nice to live fix these.
if (reader["creatorID"] == null)
{
item.CreatorId = UUID.Zero.ToString();

View File

@ -236,7 +236,7 @@ namespace OpenSim.Framework
catch { }
m_log.Warn("[SHAPE]: Failed to decode texture, length=" + ((m_textureEntry != null) ? m_textureEntry.Length : 0));
return new Primitive.TextureEntry(null);
return new Primitive.TextureEntry(UUID.Zero);
}
set { m_textureEntry = value.GetBytes(); }

View File

@ -149,7 +149,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (m_FriendsService == null)
{
m_log.Error("[FRIENDS]: No Connector defined in section Friends, or filed to load, cannot continue");
m_log.Error("[FRIENDS]: No Connector defined in section Friends, or failed to load, cannot continue");
throw new Exception("Connector load error");
}

View File

@ -45,6 +45,7 @@
<RegionModule id="HGAssetBroker" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.HGAssetBroker" />
<RegionModule id="LocalInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.LocalInventoryServicesConnector" />
<RegionModule id="RemoteInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.RemoteInventoryServicesConnector" />
<RegionModule id="RemoteXInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.RemoteXInventoryServicesConnector" />
<RegionModule id="HGInventoryBroker" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.HGInventoryBroker" />
<RegionModule id="LocalNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.LocalNeighbourServicesConnector" />
<RegionModule id="RemoteNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.RemoteNeighbourServicesConnector" />

View File

@ -0,0 +1,589 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using log4net;
using Nini.Config;
using System;
using System.Collections.Generic;
using System.Reflection;
using OpenSim.Framework;
using OpenSim.Server.Base;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Connectors;
using OpenMetaverse;
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
{
public class HGInventoryBroker2 : BaseInventoryConnector, INonSharedRegionModule, IInventoryService
{
private static readonly ILog m_log =
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
private static bool m_Initialized = false;
private static bool m_Enabled = false;
private static IInventoryService m_LocalGridInventoryService;
private static ISessionAuthInventoryService m_HGService; // obsolete
private Dictionary<string, IInventoryService> m_connectors = new Dictionary<string, IInventoryService>();
private Scene m_Scene;
private IUserAccountService m_UserAccountService;
public Type ReplaceableInterface
{
get { return null; }
}
public string Name
{
get { return "HGInventoryBroker2"; }
}
public void Initialise(IConfigSource source)
{
if (!m_Initialized)
{
IConfig moduleConfig = source.Configs["Modules"];
if (moduleConfig != null)
{
string name = moduleConfig.GetString("InventoryServices", "");
if (name == Name)
{
IConfig inventoryConfig = source.Configs["InventoryService"];
if (inventoryConfig == null)
{
m_log.Error("[HG INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini");
return;
}
string localDll = inventoryConfig.GetString("LocalGridInventoryService",
String.Empty);
string HGDll = inventoryConfig.GetString("HypergridInventoryService",
String.Empty);
if (localDll == String.Empty)
{
m_log.Error("[HG INVENTORY CONNECTOR]: No LocalGridInventoryService named in section InventoryService");
//return;
throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's");
}
if (HGDll == String.Empty)
{
m_log.Error("[HG INVENTORY CONNECTOR]: No HypergridInventoryService named in section InventoryService");
//return;
throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's");
}
Object[] args = new Object[] { source };
m_LocalGridInventoryService =
ServerUtils.LoadPlugin<IInventoryService>(localDll,
args);
m_HGService =
ServerUtils.LoadPlugin<ISessionAuthInventoryService>(HGDll,
args);
if (m_LocalGridInventoryService == null)
{
m_log.Error("[HG INVENTORY CONNECTOR]: Can't load local inventory service");
return;
}
if (m_HGService == null)
{
m_log.Error("[HG INVENTORY CONNECTOR]: Can't load hypergrid inventory service");
return;
}
Init(source);
m_Enabled = true;
m_log.Info("[HG INVENTORY CONNECTOR]: HG inventory broker enabled");
}
}
m_Initialized = true;
}
}
public void PostInitialise()
{
}
public void Close()
{
}
public void AddRegion(Scene scene)
{
if (!m_Enabled)
return;
m_Scene = scene;
m_UserAccountService = m_Scene.UserAccountService;
scene.RegisterModuleInterface<IInventoryService>(this);
m_cache.AddRegion(scene);
}
public void RemoveRegion(Scene scene)
{
if (!m_Enabled)
return;
m_cache.RemoveRegion(scene);
}
public void RegionLoaded(Scene scene)
{
if (!m_Enabled)
return;
m_log.InfoFormat("[HG INVENTORY CONNECTOR]: Enabled HG inventory for region {0}", scene.RegionInfo.RegionName);
}
#region IInventoryService
public override bool CreateUserInventory(UUID userID)
{
return m_LocalGridInventoryService.CreateUserInventory(userID);
}
public override List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
{
return m_LocalGridInventoryService.GetInventorySkeleton(userId);
}
public override InventoryCollection GetUserInventory(UUID userID)
{
return null;
}
public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
{
}
// Inherited. See base
//public override InventoryFolderBase GetFolderForType(UUID userID, AssetType type)
//{
// if (IsLocalGridUser(userID))
// return m_GridService.GetFolderForType(userID, type);
// else
// {
// UUID sessionID = GetSessionID(userID);
// string uri = GetUserInventoryURI(userID) + "/" + userID.ToString();
// // !!!!!!
// return null;
// //return m_HGService.GetFolderForType(uri, sessionID, type);
// }
//}
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
{
m_log.Debug("[HGInventory]: GetFolderContent " + folderID);
string url = string.Empty;
string invURL = m_cache.GetInventoryServiceURL(userID);
if (invURL == null) // not there, forward to local inventory connector to resolve
return m_LocalGridInventoryService.GetFolderContent(userID, folderID);
IInventoryService connector = GetConnector(url);
return connector.GetFolderContent(userID, folderID);
//if (StringToUrlAndUserID(id, out url, out userID))
//{
// ISessionAuthInventoryService connector = GetConnector(url);
// return connector.GetFolderContent(userID, folderID, sessionID);
//}
//return null;
//////////
//string uri = string.Empty;
//if (!IsForeignUser(userID, out uri))
// return m_GridService.GetFolderContent(userID, folderID);
//else
//{
// UUID sessionID = GetSessionID(userID);
// uri = uri + "/" + userID.ToString();
// return m_HGService.GetFolderContent(uri, folderID, sessionID);
//}
}
public override Dictionary<AssetType, InventoryFolderBase> GetSystemFolders(UUID userID)
{
string uri = string.Empty;
if (!IsForeignUser(userID, out uri))
{
// This is not pretty, but it will have to do for now
if (m_LocalGridInventoryService is BaseInventoryConnector)
{
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetSystemsFolders redirected to RemoteInventoryServiceConnector module");
return ((BaseInventoryConnector)m_LocalGridInventoryService).GetSystemFolders(userID);
}
else
{
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetSystemsFolders redirected to GetSystemFoldersLocal");
return GetSystemFoldersLocal(userID);
}
}
else
{
UUID sessionID = GetSessionID(userID);
uri = uri + "/" + userID.ToString();
return m_HGService.GetSystemFolders(uri, sessionID);
}
}
private Dictionary<AssetType, InventoryFolderBase> GetSystemFoldersLocal(UUID userID)
{
InventoryFolderBase root = m_LocalGridInventoryService.GetRootFolder(userID);
if (root != null)
{
InventoryCollection content = m_LocalGridInventoryService.GetFolderContent(userID, root.ID);
if (content != null)
{
Dictionary<AssetType, InventoryFolderBase> folders = new Dictionary<AssetType, InventoryFolderBase>();
foreach (InventoryFolderBase folder in content.Folders)
{
//m_log.DebugFormat("[HG INVENTORY CONNECTOR]: scanning folder type {0}", (AssetType)folder.Type);
if ((folder.Type != (short)AssetType.Folder) && (folder.Type != (short)AssetType.Unknown))
folders[(AssetType)folder.Type] = folder;
}
// Put the root folder there, as type Folder
folders[AssetType.Folder] = root;
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: System folders count for {0}: {1}", userID, folders.Count);
return folders;
}
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Root folder content not found for {0}", userID);
}
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Root folder not found for {0}", userID);
return new Dictionary<AssetType, InventoryFolderBase>();
}
public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
{
string uri = string.Empty;
if (!IsForeignUser(userID, out uri))
return m_LocalGridInventoryService.GetFolderItems(userID, folderID);
else
{
UUID sessionID = GetSessionID(userID);
uri = uri + "/" + userID.ToString();
return m_HGService.GetFolderItems(uri, folderID, sessionID);
}
}
public override bool AddFolder(InventoryFolderBase folder)
{
if (folder == null)
return false;
string uri = string.Empty;
if (!IsForeignUser(folder.Owner, out uri))
return m_LocalGridInventoryService.AddFolder(folder);
else
{
UUID sessionID = GetSessionID(folder.Owner);
uri = uri + "/" + folder.Owner.ToString();
return m_HGService.AddFolder(uri, folder, sessionID);
}
}
public override bool UpdateFolder(InventoryFolderBase folder)
{
if (folder == null)
return false;
string uri = string.Empty;
if (!IsForeignUser(folder.Owner, out uri))
return m_LocalGridInventoryService.UpdateFolder(folder);
else
{
UUID sessionID = GetSessionID(folder.Owner);
uri = uri + "/" + folder.Owner.ToString();
return m_HGService.UpdateFolder(uri, folder, sessionID);
}
}
public override bool DeleteFolders(UUID ownerID, List<UUID> folderIDs)
{
if (folderIDs == null)
return false;
if (folderIDs.Count == 0)
return false;
string uri = string.Empty;
if (!IsForeignUser(ownerID, out uri))
return m_LocalGridInventoryService.DeleteFolders(ownerID, folderIDs);
else
{
UUID sessionID = GetSessionID(ownerID);
uri = uri + "/" + ownerID.ToString();
return m_HGService.DeleteFolders(uri, folderIDs, sessionID);
}
}
public override bool MoveFolder(InventoryFolderBase folder)
{
if (folder == null)
return false;
string uri = string.Empty;
if (!IsForeignUser(folder.Owner, out uri))
return m_LocalGridInventoryService.MoveFolder(folder);
else
{
UUID sessionID = GetSessionID(folder.Owner);
uri = uri + "/" + folder.Owner.ToString();
return m_HGService.MoveFolder(uri, folder, sessionID);
}
}
public override bool PurgeFolder(InventoryFolderBase folder)
{
if (folder == null)
return false;
string uri = string.Empty;
if (!IsForeignUser(folder.Owner, out uri))
return m_LocalGridInventoryService.PurgeFolder(folder);
else
{
UUID sessionID = GetSessionID(folder.Owner);
uri = uri + "/" + folder.Owner.ToString();
return m_HGService.PurgeFolder(uri, folder, sessionID);
}
}
// public bool AddItem(InventoryItemBase item) inherited
// Uses AddItemPlain
protected override bool AddItemPlain(InventoryItemBase item)
{
if (item == null)
return false;
string uri = string.Empty;
if (!IsForeignUser(item.Owner, out uri))
{
return m_LocalGridInventoryService.AddItem(item);
}
else
{
UUID sessionID = GetSessionID(item.Owner);
uri = uri + "/" + item.Owner.ToString();
return m_HGService.AddItem(uri, item, sessionID);
}
}
public override bool UpdateItem(InventoryItemBase item)
{
if (item == null)
return false;
string uri = string.Empty;
if (!IsForeignUser(item.Owner, out uri))
return m_LocalGridInventoryService.UpdateItem(item);
else
{
UUID sessionID = GetSessionID(item.Owner);
uri = uri + "/" + item.Owner.ToString();
return m_HGService.UpdateItem(uri, item, sessionID);
}
}
public override bool MoveItems(UUID ownerID, List<InventoryItemBase> items)
{
if (items == null)
return false;
if (items.Count == 0)
return true;
string uri = string.Empty;
if (!IsForeignUser(ownerID, out uri))
return m_LocalGridInventoryService.MoveItems(ownerID, items);
else
{
UUID sessionID = GetSessionID(ownerID);
uri = uri + "/" + ownerID.ToString();
return m_HGService.MoveItems(uri, items, sessionID);
}
}
public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs)
{
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Delete {0} items for user {1}", itemIDs.Count, ownerID);
if (itemIDs == null)
return false;
if (itemIDs.Count == 0)
return true;
string uri = string.Empty;
if (!IsForeignUser(ownerID, out uri))
return m_LocalGridInventoryService.DeleteItems(ownerID, itemIDs);
else
{
UUID sessionID = GetSessionID(ownerID);
uri = uri + "/" + ownerID.ToString();
return m_HGService.DeleteItems(uri, itemIDs, sessionID);
}
}
public override InventoryItemBase GetItem(InventoryItemBase item)
{
if (item == null)
return null;
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetItem {0} for user {1}", item.ID, item.Owner);
string uri = string.Empty;
if (!IsForeignUser(item.Owner, out uri))
return m_LocalGridInventoryService.GetItem(item);
else
{
UUID sessionID = GetSessionID(item.Owner);
uri = uri + "/" + item.Owner.ToString();
return m_HGService.QueryItem(uri, item, sessionID);
}
}
public override InventoryFolderBase GetFolder(InventoryFolderBase folder)
{
if (folder == null)
return null;
string uri = string.Empty;
if (!IsForeignUser(folder.Owner, out uri))
return m_LocalGridInventoryService.GetFolder(folder);
else
{
UUID sessionID = GetSessionID(folder.Owner);
uri = uri + "/" + folder.Owner.ToString();
return m_HGService.QueryFolder(uri, folder, sessionID);
}
}
public override bool HasInventoryForUser(UUID userID)
{
return false;
}
public override List<InventoryItemBase> GetActiveGestures(UUID userId)
{
return new List<InventoryItemBase>();
}
public override int GetAssetPermissions(UUID userID, UUID assetID)
{
string uri = string.Empty;
if (!IsForeignUser(userID, out uri))
return m_LocalGridInventoryService.GetAssetPermissions(userID, assetID);
else
{
UUID sessionID = GetSessionID(userID);
uri = uri + "/" + userID.ToString();
return m_HGService.GetAssetPermissions(uri, assetID, sessionID);
}
}
#endregion
private IInventoryService GetConnector(string url)
{
IInventoryService connector = null;
lock (m_connectors)
{
if (m_connectors.ContainsKey(url))
{
connector = m_connectors[url];
}
else
{
// We're instantiating this class explicitly, but this won't
// work in general, because the remote grid may be running
// an inventory server that has a different protocol.
// Eventually we will want a piece of protocol asking
// the remote server about its kind. Definitely cool thing to do!
connector = new RemoteXInventoryServicesConnector(url);
m_connectors.Add(url, connector);
}
}
return connector;
}
private UUID GetSessionID(UUID userID)
{
ScenePresence sp = null;
if (m_Scene.TryGetScenePresence(userID, out sp))
{
return sp.ControllingClient.SessionId;
}
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: scene presence for {0} not found", userID);
return UUID.Zero;
}
private bool IsForeignUser(UUID userID, out string inventoryURL)
{
inventoryURL = string.Empty;
UserAccount account = null;
if (m_Scene.UserAccountService != null)
account = m_Scene.UserAccountService.GetUserAccount(m_Scene.RegionInfo.ScopeID, userID);
if (account == null) // foreign user
{
ScenePresence sp = null;
m_Scene.TryGetScenePresence(userID, out sp);
if (sp != null)
{
AgentCircuitData aCircuit = m_Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode);
if (aCircuit.ServiceURLs.ContainsKey("InventoryServerURI"))
{
inventoryURL = aCircuit.ServiceURLs["InventoryServerURI"].ToString();
inventoryURL = inventoryURL.Trim(new char[] { '/' });
return true;
}
}
}
return false;
}
}
}

View File

@ -51,6 +51,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
// The cache proper
protected Dictionary<UUID, Dictionary<AssetType, InventoryFolderBase>> m_InventoryCache;
// A cache of userIDs --> ServiceURLs, for HGBroker only
protected Dictionary<UUID, string> m_InventoryURLs;
public virtual void Init(IConfigSource source, BaseInventoryConnector connector)
{
m_Scenes = new List<Scene>();
@ -89,8 +92,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
// If not, go get them and place them in the cache
Dictionary<AssetType, InventoryFolderBase> folders = CacheSystemFolders(presence.UUID);
CacheInventoryServiceURL(presence.Scene, presence.UUID);
m_log.DebugFormat("[INVENTORY CACHE]: OnMakeRootAgent in {0}, fetched system folders for {1} {2}: count {3}",
presence.Scene.RegionInfo.RegionName, presence.Firstname, presence.Lastname, folders.Count);
}
void OnClientClosed(UUID clientID, Scene scene)
@ -113,6 +119,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
"[INVENTORY CACHE]: OnClientClosed in {0}, user {1} out of sim. Dropping system folders",
scene.RegionInfo.RegionName, clientID);
DropCachedSystemFolders(clientID);
DropInventoryServiceURL(clientID);
}
}
@ -174,5 +181,49 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return null;
}
/// <summary>
/// Gets the user's inventory URL from its serviceURLs, if the user is foreign,
/// and sticks it in the cache
/// </summary>
/// <param name="userID"></param>
private void CacheInventoryServiceURL(Scene scene, UUID userID)
{
if (scene.UserAccountService.GetUserAccount(scene.RegionInfo.ScopeID, userID) == null)
{
// The user does not have a local account; let's cache its service URL
string inventoryURL = string.Empty;
ScenePresence sp = null;
scene.TryGetScenePresence(userID, out sp);
if (sp != null)
{
AgentCircuitData aCircuit = scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode);
if (aCircuit.ServiceURLs.ContainsKey("InventoryServerURI"))
{
inventoryURL = aCircuit.ServiceURLs["InventoryServerURI"].ToString();
if (inventoryURL != null && inventoryURL != string.Empty)
{
inventoryURL = inventoryURL.Trim(new char[] { '/' });
m_InventoryURLs.Add(userID, inventoryURL);
}
}
}
}
}
private void DropInventoryServiceURL(UUID userID)
{
lock (m_InventoryURLs)
if (m_InventoryURLs.ContainsKey(userID))
m_InventoryURLs.Remove(userID);
}
public string GetInventoryServiceURL(UUID userID)
{
if (m_InventoryURLs.ContainsKey(userID))
return m_InventoryURLs[userID];
return null;
}
}
}

View File

@ -65,6 +65,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
{
}
public RemoteXInventoryServicesConnector(string url)
{
m_RemoteConnector = new XInventoryServicesConnector(url);
}
public RemoteXInventoryServicesConnector(IConfigSource source)
{
Init(source);
@ -183,6 +188,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
{
m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetFolderContent {0}", folderID);
try
{
return m_RemoteConnector.GetFolderContent(userID, folderID);
@ -295,6 +301,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
public override InventoryFolderBase GetFolder(InventoryFolderBase folder)
{
m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetFolder {0}", folder.ID);
if (folder == null)
return null;

View File

@ -39,6 +39,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{
int Type { get; }
UUID AssetID { get; }
T RetreiveAsset<T>() where T : Asset, new();
T RetrieveAsset<T>() where T : Asset, new();
}
}

View File

@ -39,11 +39,11 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
public class InventoryItem : IInventoryItem
{
TaskInventoryItem m_privateItem;
Scene m_rootSceene;
Scene m_rootScene;
public InventoryItem(Scene rootScene, TaskInventoryItem internalItem)
{
m_rootSceene = rootScene;
m_rootScene = rootScene;
m_privateItem = internalItem;
}
@ -82,9 +82,9 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
public UUID AssetID { get { return m_privateItem.AssetID; } }
// This method exposes OpenSim/OpenMetaverse internals and needs to be replaced with a IAsset specific to MRM.
public T RetreiveAsset<T>() where T : OpenMetaverse.Assets.Asset, new()
public T RetrieveAsset<T>() where T : OpenMetaverse.Assets.Asset, new()
{
AssetBase a = m_rootSceene.AssetService.Get(AssetID.ToString());
AssetBase a = m_rootScene.AssetService.Get(AssetID.ToString());
T result = new T();
if ((sbyte)result.AssetType != a.Type)

View File

@ -261,13 +261,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
// }
//}
public object GetCompilerOutput(UUID assetID)
public string GetCompilerOutput(string assetID)
{
return Path.Combine(ScriptEnginesPath, Path.Combine(
m_scriptEngine.World.RegionInfo.RegionID.ToString(),
FilePrefix + "_compiled_" + assetID + ".dll"));
}
public string GetCompilerOutput(UUID assetID)
{
return GetCompilerOutput(assetID.ToString());
}
/// <summary>
/// Converts script from LSL to CS and calls CompileFromCSText
/// </summary>
@ -279,9 +284,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
linemap = null;
m_warnings.Clear();
assembly = Path.Combine(ScriptEnginesPath, Path.Combine(
m_scriptEngine.World.RegionInfo.RegionID.ToString(),
FilePrefix + "_compiled_" + asset + ".dll"));
assembly = GetCompilerOutput(asset);
if (!Directory.Exists(ScriptEnginesPath))
{

View File

@ -91,7 +91,7 @@ namespace OpenSim.Server.Handlers.Asset
sr.Close();
body = body.Trim();
m_log.DebugFormat("[XXX]: query String: {0}", body);
//m_log.DebugFormat("[XXX]: query String: {0}", body);
try
{
@ -213,7 +213,7 @@ namespace OpenSim.Server.Handlers.Asset
result["RESULT"] = "False";
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -228,12 +228,20 @@ namespace OpenSim.Server.Handlers.Asset
List<InventoryFolderBase> folders = m_InventoryService.GetInventorySkeleton(new UUID(request["PRINCIPAL"].ToString()));
Dictionary<string, object> sfolders = new Dictionary<string, object>();
if (folders != null)
{
int i = 0;
foreach (InventoryFolderBase f in folders)
result[f.ID.ToString()] = EncodeFolder(f);
{
sfolders["folder_" + i.ToString()] = EncodeFolder(f);
i++;
}
}
result["FOLDERS"] = sfolders;
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -246,10 +254,10 @@ namespace OpenSim.Server.Handlers.Asset
UUID.TryParse(request["PRINCIPAL"].ToString(), out principal);
InventoryFolderBase rfolder = m_InventoryService.GetRootFolder(principal);
if (rfolder != null)
result[rfolder.ID.ToString()] = EncodeFolder(rfolder);
result["folder"] = EncodeFolder(rfolder);
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -263,10 +271,10 @@ namespace OpenSim.Server.Handlers.Asset
Int32.TryParse(request["TYPE"].ToString(), out type);
InventoryFolderBase folder = m_InventoryService.GetFolderForType(principal, (AssetType)type);
if (folder != null)
result[folder.ID.ToString()] = EncodeFolder(folder);
result["folder"] = EncodeFolder(folder);
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -283,18 +291,26 @@ namespace OpenSim.Server.Handlers.Asset
if (icoll != null)
{
Dictionary<string, object> folders = new Dictionary<string, object>();
int i = 0;
foreach (InventoryFolderBase f in icoll.Folders)
folders[f.ID.ToString()] = EncodeFolder(f);
{
folders["folder_" + i.ToString()] = EncodeFolder(f);
i++;
}
result["FOLDERS"] = folders;
i = 0;
Dictionary<string, object> items = new Dictionary<string, object>();
foreach (InventoryItemBase i in icoll.Items)
items[i.ID.ToString()] = EncodeItem(i);
foreach (InventoryItemBase it in icoll.Items)
{
items["item_" + i.ToString()] = EncodeItem(it);
i++;
}
result["ITEMS"] = items;
}
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -308,12 +324,21 @@ namespace OpenSim.Server.Handlers.Asset
UUID.TryParse(request["FOLDER"].ToString(), out folderID);
List<InventoryItemBase> items = m_InventoryService.GetFolderItems(principal, folderID);
Dictionary<string, object> sitems = new Dictionary<string, object>();
if (items != null)
{
int i = 0;
foreach (InventoryItemBase item in items)
result[item.ID.ToString()] = EncodeItem(item);
{
sitems["item_" + i.ToString()] = EncodeItem(item);
i++;
}
}
result["ITEMS"] = sitems;
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -483,10 +508,10 @@ namespace OpenSim.Server.Handlers.Asset
InventoryItemBase item = new InventoryItemBase(id);
item = m_InventoryService.GetItem(item);
if (item != null)
result[item.ID.ToString()] = EncodeItem(item);
result["item"] = EncodeItem(item);
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -500,10 +525,10 @@ namespace OpenSim.Server.Handlers.Asset
InventoryFolderBase folder = new InventoryFolderBase(id);
folder = m_InventoryService.GetFolder(folder);
if (folder != null)
result[folder.ID.ToString()] = EncodeFolder(folder);
result["folder"] = EncodeFolder(folder);
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -515,12 +540,20 @@ namespace OpenSim.Server.Handlers.Asset
UUID.TryParse(request["PRINCIPAL"].ToString(), out principal);
List<InventoryItemBase> gestures = m_InventoryService.GetActiveGestures(principal);
Dictionary<string, object> items = new Dictionary<string, object>();
if (gestures != null)
{
int i = 0;
foreach (InventoryItemBase item in gestures)
result[item.ID.ToString()] = EncodeItem(item);
{
items["item_" + i.ToString()] = EncodeItem(item);
i++;
}
}
result["ITEMS"] = items;
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -537,7 +570,7 @@ namespace OpenSim.Server.Handlers.Asset
result["RESULT"] = perms.ToString();
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -549,13 +582,19 @@ namespace OpenSim.Server.Handlers.Asset
UUID.TryParse(request["PRINCIPAL"].ToString(), out principal);
Dictionary<AssetType, InventoryFolderBase> sfolders = GetSystemFolders(principal);
//m_log.DebugFormat("[XXX]: SystemFolders got {0} folders", sfolders.Count);
if (sfolders != null)
foreach (KeyValuePair<AssetType, InventoryFolderBase> kvp in sfolders)
result[kvp.Key.ToString()] = EncodeFolder(kvp.Value);
Dictionary<string, object> folders = new Dictionary<string, object>();
int i = 0;
foreach (KeyValuePair<AssetType, InventoryFolderBase> kvp in sfolders)
{
folders["folder_" + i.ToString()] = EncodeFolder(kvp.Value);
i++;
}
result["FOLDERS"] = folders;
string xmlString = ServerUtils.BuildXmlResponse(result);
m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
//m_log.DebugFormat("[XXX]: resp string: {0}", xmlString);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(xmlString);
}
@ -589,7 +628,7 @@ namespace OpenSim.Server.Handlers.Asset
ret["Flags"] = item.Flags.ToString();
ret["Folder"] = item.Folder.ToString();
ret["GroupID"] = item.GroupID.ToString();
ret["GroupedOwned"] = item.GroupOwned.ToString();
ret["GroupOwned"] = item.GroupOwned.ToString();
ret["GroupPermissions"] = item.GroupPermissions.ToString();
ret["ID"] = item.ID.ToString();
ret["InvType"] = item.InvType.ToString();
@ -664,7 +703,7 @@ namespace OpenSim.Server.Handlers.Asset
return folders;
}
}
m_log.WarnFormat("[INVENTORY SERVICE]: System folders for {0} not found", userID);
m_log.WarnFormat("[XINVENTORY SERVICE]: System folders for {0} not found", userID);
return new Dictionary<AssetType, InventoryFolderBase>();
}
#endregion

View File

@ -106,7 +106,10 @@ namespace OpenSim.Services.AssetService
return null;
AssetBase asset = m_Database.GetAsset(assetID);
return asset.Metadata;
if (asset != null)
return asset.Metadata;
return null;
}
public byte[] GetData(string id)

View File

@ -112,8 +112,15 @@ namespace OpenSim.Services.Connectors
List<InventoryFolderBase> folders = new List<InventoryFolderBase>();
foreach (Object o in ret.Values)
folders.Add(BuildFolder((Dictionary<string,object>)o));
try
{
foreach (Object o in ret.Values)
folders.Add(BuildFolder((Dictionary<string, object>)o));
}
catch (Exception e)
{
m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception unwrapping folder list: {0}", e.Message);
}
return folders;
}
@ -130,7 +137,7 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
return BuildFolder(ret);
return BuildFolder((Dictionary<string, object>)ret["folder"]);
}
public InventoryFolderBase GetFolderForType(UUID principalID, AssetType type)
@ -146,7 +153,7 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
return BuildFolder(ret);
return BuildFolder((Dictionary<string, object>)ret["folder"]);
}
public InventoryCollection GetFolderContent(UUID principalID, UUID folderID)
@ -173,10 +180,17 @@ namespace OpenSim.Services.Connectors
Dictionary<string,object> items =
(Dictionary<string,object>)ret["ITEMS"];
foreach (Object o in folders.Values)
inventory.Folders.Add(BuildFolder((Dictionary<string,object>)o));
foreach (Object o in items.Values)
inventory.Items.Add(BuildItem((Dictionary<string,object>)o));
try
{
foreach (Object o in folders.Values) // getting the values directly, we don't care about the keys folder_i
inventory.Folders.Add(BuildFolder((Dictionary<string, object>)o));
foreach (Object o in items.Values) // getting the values directly, we don't care about the keys item_i
inventory.Items.Add(BuildItem((Dictionary<string, object>)o));
}
catch (Exception e)
{
m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception unwrapping content list: {0}", e.Message);
}
return inventory;
}
@ -194,13 +208,12 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
Dictionary<string, object> items = (Dictionary<string, object>)ret["ITEMS"];
List<InventoryItemBase> fitems = new List<InventoryItemBase>();
foreach (Object o in items.Values) // getting the values directly, we don't care about the keys item_i
fitems.Add(BuildItem((Dictionary<string, object>)o));
List<InventoryItemBase> items = new List<InventoryItemBase>();
foreach (Object o in ret.Values)
items.Add(BuildItem((Dictionary<string,object>)o));
return items;
return fitems;
}
public bool AddFolder(InventoryFolderBase folder)
@ -405,7 +418,7 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
return BuildItem(ret);
return BuildItem((Dictionary<string, object>)ret["item"]);
}
public InventoryFolderBase GetFolder(InventoryFolderBase folder)
@ -420,7 +433,7 @@ namespace OpenSim.Services.Connectors
if (ret.Count == 0)
return null;
return BuildFolder(ret);
return BuildFolder((Dictionary<string, object>)ret["folder"]);
}
public List<InventoryItemBase> GetActiveGestures(UUID principalID)
@ -435,8 +448,8 @@ namespace OpenSim.Services.Connectors
List<InventoryItemBase> items = new List<InventoryItemBase>();
foreach (Object o in ret.Values)
items.Add(BuildItem((Dictionary<string,object>)o));
foreach (Object o in ret.Values) // getting the values directly, we don't care about the keys item_i
items.Add(BuildItem((Dictionary<string, object>)o));
return items;
}
@ -469,13 +482,14 @@ namespace OpenSim.Services.Connectors
try
{
foreach (KeyValuePair<string, object> kvp in ret)
Dictionary<string, object> folders = (Dictionary<string, object>)ret["FOLDERS"];
foreach (Object o in folders.Values) // getting the values directly, we don't care about the keys folder_i
{
InventoryFolderBase folder = BuildFolder((Dictionary<string, object>)(kvp.Value));
short type = 0;
if (Int16.TryParse(kvp.Key, out type))
sfolders.Add((AssetType)type, folder);
InventoryFolderBase folder = BuildFolder((Dictionary<string, object>)o);
sfolders.Add((AssetType)folder.Type, folder);
}
}
catch (Exception e)
{
@ -522,12 +536,19 @@ namespace OpenSim.Services.Connectors
{
InventoryFolderBase folder = new InventoryFolderBase();
folder.ParentID = new UUID(data["ParentID"].ToString());
folder.Type = short.Parse(data["Type"].ToString());
folder.Version = ushort.Parse(data["Version"].ToString());
folder.Name = data["Name"].ToString();
folder.Owner = new UUID(data["Owner"].ToString());
folder.ID = new UUID(data["ID"].ToString());
try
{
folder.ParentID = new UUID(data["ParentID"].ToString());
folder.Type = short.Parse(data["Type"].ToString());
folder.Version = ushort.Parse(data["Version"].ToString());
folder.Name = data["Name"].ToString();
folder.Owner = new UUID(data["Owner"].ToString());
folder.ID = new UUID(data["ID"].ToString());
}
catch (Exception e)
{
m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception building folder: {0}", e.Message);
}
return folder;
}
@ -536,26 +557,33 @@ namespace OpenSim.Services.Connectors
{
InventoryItemBase item = new InventoryItemBase();
item.AssetID = new UUID(data["AssetID"].ToString());
item.AssetType = int.Parse(data["AssetType"].ToString());
item.Name = data["Name"].ToString();
item.Owner = new UUID(data["Owner"].ToString());
item.ID = new UUID(data["ID"].ToString());
item.InvType = int.Parse(data["InvType"].ToString());
item.Folder = new UUID(data["Folder"].ToString());
item.CreatorId = data["CreatorId"].ToString();
item.Description = data["Description"].ToString();
item.NextPermissions = uint.Parse(data["NextPermissions"].ToString());
item.CurrentPermissions = uint.Parse(data["CurrentPermissions"].ToString());
item.BasePermissions = uint.Parse(data["BasePermissions"].ToString());
item.EveryOnePermissions = uint.Parse(data["EveryOnePermissions"].ToString());
item.GroupPermissions = uint.Parse(data["GroupPermissions"].ToString());
item.GroupID = new UUID(data["GroupID"].ToString());
item.GroupOwned = bool.Parse(data["GroupOwned"].ToString());
item.SalePrice = int.Parse(data["SalePrice"].ToString());
item.SaleType = byte.Parse(data["SaleType"].ToString());
item.Flags = uint.Parse(data["Flags"].ToString());
item.CreationDate = int.Parse(data["CreationDate"].ToString());
try
{
item.AssetID = new UUID(data["AssetID"].ToString());
item.AssetType = int.Parse(data["AssetType"].ToString());
item.Name = data["Name"].ToString();
item.Owner = new UUID(data["Owner"].ToString());
item.ID = new UUID(data["ID"].ToString());
item.InvType = int.Parse(data["InvType"].ToString());
item.Folder = new UUID(data["Folder"].ToString());
item.CreatorId = data["CreatorId"].ToString();
item.Description = data["Description"].ToString();
item.NextPermissions = uint.Parse(data["NextPermissions"].ToString());
item.CurrentPermissions = uint.Parse(data["CurrentPermissions"].ToString());
item.BasePermissions = uint.Parse(data["BasePermissions"].ToString());
item.EveryOnePermissions = uint.Parse(data["EveryOnePermissions"].ToString());
item.GroupPermissions = uint.Parse(data["GroupPermissions"].ToString());
item.GroupID = new UUID(data["GroupID"].ToString());
item.GroupOwned = bool.Parse(data["GroupOwned"].ToString());
item.SalePrice = int.Parse(data["SalePrice"].ToString());
item.SaleType = byte.Parse(data["SaleType"].ToString());
item.Flags = uint.Parse(data["Flags"].ToString());
item.CreationDate = int.Parse(data["CreationDate"].ToString());
}
catch (Exception e)
{
m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception building item: {0}", e.Message);
}
return item;
}

View File

@ -109,7 +109,7 @@ namespace OpenSim.Services.InventoryService
{
existingRootFolder = GetRootFolder(user);
}
catch (Exception e)
catch /*(Exception e)*/
{
// Munch the exception, it has already been reported
//

View File

@ -184,7 +184,7 @@ namespace OpenSim.Services.InventoryService
foreach (XInventoryFolder x in allFolders)
{
m_log.DebugFormat("[INVENTORY]: Adding folder {0} to skeleton", x.folderName);
//m_log.DebugFormat("[XINVENTORY]: Adding folder {0} to skeleton", x.folderName);
folders.Add(ConvertToOpenSim(x));
}
@ -221,7 +221,7 @@ namespace OpenSim.Services.InventoryService
// connector. So we disregard the principal and look
// by ID.
//
m_log.DebugFormat("[INVENTORY]: Fetch contents for folder {0}", folderID.ToString());
m_log.DebugFormat("[XINVENTORY]: Fetch contents for folder {0}", folderID.ToString());
InventoryCollection inventory = new InventoryCollection();
inventory.UserID = principalID;
inventory.Folders = new List<InventoryFolderBase>();
@ -233,7 +233,7 @@ namespace OpenSim.Services.InventoryService
foreach (XInventoryFolder x in folders)
{
m_log.DebugFormat("[INVENTORY]: Adding folder {0} to response", x.folderName);
//m_log.DebugFormat("[XINVENTORY]: Adding folder {0} to response", x.folderName);
inventory.Folders.Add(ConvertToOpenSim(x));
}
@ -243,7 +243,7 @@ namespace OpenSim.Services.InventoryService
foreach (XInventoryItem i in items)
{
m_log.DebugFormat("[INVENTORY]: Adding item {0} to response", i.inventoryName);
//m_log.DebugFormat("[XINVENTORY]: Adding item {0} to response", i.inventoryName);
inventory.Items.Add(ConvertToOpenSim(i));
}

Binary file not shown.