Heart surgery no.2: the inventory service hooks.
Several improvements in the connectors themselves. Several improvements in configurations. Needed to add a hack in IUserService and UserManagerBase, to be removed when that service is refactored.0.6.6-post-fixes
parent
8045ed28ec
commit
0f367bd7bb
|
@ -1290,15 +1290,15 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
|
|
||||||
UICallback sic = new UICallback();
|
UICallback sic = new UICallback();
|
||||||
UICallback dic = new UICallback();
|
UICallback dic = new UICallback();
|
||||||
IInventoryServices iserv = m_app.CommunicationsManager.InventoryService;
|
IInventoryService iserv = m_app.SceneManager.CurrentOrFirstScene.InventoryService;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
Dictionary<UUID,UUID> imap = new Dictionary<UUID,UUID>();
|
Dictionary<UUID,UUID> imap = new Dictionary<UUID,UUID>();
|
||||||
|
|
||||||
iserv.RequestInventoryForUser(dest, dic.callback);
|
iserv.GetUserInventory(dest, dic.callback);
|
||||||
iserv.RequestInventoryForUser(srca, sic.callback);
|
iserv.GetUserInventory(srca, sic.callback);
|
||||||
|
|
||||||
dic.GetInventory();
|
dic.GetInventory();
|
||||||
sic.GetInventory();
|
sic.GetInventory();
|
||||||
|
@ -1436,7 +1436,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
bool select = false;
|
bool select = false;
|
||||||
|
|
||||||
UICallback uic;
|
UICallback uic;
|
||||||
IInventoryServices iserv = m_app.CommunicationsManager.InventoryService;
|
IInventoryService iserv = m_app.SceneManager.CurrentOrFirstScene.InventoryService;
|
||||||
IAssetService aserv = m_app.SceneManager.CurrentOrFirstScene.AssetService;
|
IAssetService aserv = m_app.SceneManager.CurrentOrFirstScene.AssetService;
|
||||||
|
|
||||||
doc.LoadXml(File.ReadAllText(dafn));
|
doc.LoadXml(File.ReadAllText(dafn));
|
||||||
|
@ -1511,7 +1511,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
{
|
{
|
||||||
uic = new UICallback();
|
uic = new UICallback();
|
||||||
// Request the inventory
|
// Request the inventory
|
||||||
iserv.RequestInventoryForUser(ID, uic.callback);
|
iserv.GetUserInventory(ID, uic.callback);
|
||||||
|
|
||||||
// While the inventory is being fetched, setup for appearance processing
|
// While the inventory is being fetched, setup for appearance processing
|
||||||
if ((mava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(ID)) == null)
|
if ((mava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(ID)) == null)
|
||||||
|
|
|
@ -97,9 +97,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
get { return main.CommunicationsManager; }
|
get { return main.CommunicationsManager; }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static IInventoryServices InventoryServices
|
internal static IInventoryService InventoryServices
|
||||||
{
|
{
|
||||||
get { return Comms.InventoryService; }
|
get { return main.SceneManager.CurrentOrFirstScene.InventoryService; }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static IUserService UserServices
|
internal static IUserService UserServices
|
||||||
|
|
|
@ -270,7 +270,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
|
||||||
Rest.Log.DebugFormat("{0} Inventory Root retrieved for {1} {2}",
|
Rest.Log.DebugFormat("{0} Inventory Root retrieved for {1} {2}",
|
||||||
MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName);
|
MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName);
|
||||||
|
|
||||||
Rest.InventoryServices.RequestInventoryForUser(rdata.uuid, rdata.GetUserInventory);
|
Rest.InventoryServices.GetUserInventory(rdata.uuid, rdata.GetUserInventory);
|
||||||
|
|
||||||
Rest.Log.DebugFormat("{0} Inventory catalog requested for {1} {2}",
|
Rest.Log.DebugFormat("{0} Inventory catalog requested for {1} {2}",
|
||||||
MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName);
|
MsgId, rdata.userProfile.FirstName, rdata.userProfile.SurName);
|
||||||
|
|
|
@ -30,6 +30,7 @@ using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using log4net;
|
using log4net;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Cache
|
namespace OpenSim.Framework.Communications.Cache
|
||||||
{
|
{
|
||||||
|
@ -62,7 +63,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The comms manager holds references to services (user, grid, inventory, etc.)
|
/// The comms manager holds references to services (user, grid, inventory, etc.)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly CommunicationsManager m_commsManager;
|
private readonly IInventoryService m_InventoryService;
|
||||||
|
|
||||||
public UserProfileData UserProfile { get { return m_userProfile; } }
|
public UserProfileData UserProfile { get { return m_userProfile; } }
|
||||||
private UserProfileData m_userProfile;
|
private UserProfileData m_userProfile;
|
||||||
|
@ -96,10 +97,10 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="commsManager"></param>
|
/// <param name="commsManager"></param>
|
||||||
/// <param name="userProfile"></param>
|
/// <param name="userProfile"></param>
|
||||||
public CachedUserInfo(CommunicationsManager commsManager, UserProfileData userProfile)
|
public CachedUserInfo(IInventoryService invService, UserProfileData userProfile)
|
||||||
{
|
{
|
||||||
m_commsManager = commsManager;
|
|
||||||
m_userProfile = userProfile;
|
m_userProfile = userProfile;
|
||||||
|
m_InventoryService = invService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -213,15 +214,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
/// asynchronously otherwise.
|
/// asynchronously otherwise.
|
||||||
public void FetchInventory()
|
public void FetchInventory()
|
||||||
{
|
{
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
m_InventoryService.GetUserInventory(UserProfile.ID, InventoryReceive);
|
||||||
{
|
|
||||||
m_commsManager.SecureInventoryService.RequestInventoryForUser(
|
|
||||||
UserProfile.ID, SessionID, InventoryReceive);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_commsManager.InventoryService.RequestInventoryForUser(UserProfile.ID, InventoryReceive);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -383,14 +376,8 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
createdBaseFolder.Type = createdFolder.Type;
|
createdBaseFolder.Type = createdFolder.Type;
|
||||||
createdBaseFolder.Version = createdFolder.Version;
|
createdBaseFolder.Version = createdFolder.Version;
|
||||||
|
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
m_InventoryService.AddFolder(createdBaseFolder);
|
||||||
{
|
|
||||||
m_commsManager.SecureInventoryService.AddFolder(createdBaseFolder, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_commsManager.InventoryService.AddFolder(createdBaseFolder);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -449,14 +436,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
baseFolder.Type = (short)type;
|
baseFolder.Type = (short)type;
|
||||||
baseFolder.Version = RootFolder.Version;
|
baseFolder.Version = RootFolder.Version;
|
||||||
|
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
m_InventoryService.UpdateFolder(baseFolder);
|
||||||
{
|
|
||||||
m_commsManager.SecureInventoryService.UpdateFolder(baseFolder, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_commsManager.InventoryService.UpdateFolder(baseFolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
folder.Name = name;
|
folder.Name = name;
|
||||||
folder.Type = (short)type;
|
folder.Type = (short)type;
|
||||||
|
@ -498,14 +478,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
baseFolder.ID = folderID;
|
baseFolder.ID = folderID;
|
||||||
baseFolder.ParentID = parentID;
|
baseFolder.ParentID = parentID;
|
||||||
|
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
m_InventoryService.MoveFolder(baseFolder);
|
||||||
{
|
|
||||||
m_commsManager.SecureInventoryService.MoveFolder(baseFolder, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_commsManager.InventoryService.MoveFolder(baseFolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
InventoryFolderImpl folder = RootFolder.FindFolder(folderID);
|
InventoryFolderImpl folder = RootFolder.FindFolder(folderID);
|
||||||
InventoryFolderImpl parentFolder = RootFolder.FindFolder(parentID);
|
InventoryFolderImpl parentFolder = RootFolder.FindFolder(parentID);
|
||||||
|
@ -568,14 +541,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
purgedBaseFolder.Type = purgedFolder.Type;
|
purgedBaseFolder.Type = purgedFolder.Type;
|
||||||
purgedBaseFolder.Version = purgedFolder.Version;
|
purgedBaseFolder.Version = purgedFolder.Version;
|
||||||
|
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
m_InventoryService.PurgeFolder(purgedBaseFolder);
|
||||||
{
|
|
||||||
m_commsManager.SecureInventoryService.PurgeFolder(purgedBaseFolder, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_commsManager.InventoryService.PurgeFolder(purgedBaseFolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
purgedFolder.Purge();
|
purgedFolder.Purge();
|
||||||
|
|
||||||
|
@ -615,14 +581,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
}
|
}
|
||||||
ItemReceive(item, null);
|
ItemReceive(item, null);
|
||||||
|
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
m_InventoryService.AddItem(item);
|
||||||
{
|
|
||||||
m_commsManager.SecureInventoryService.AddItem(item, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_commsManager.InventoryService.AddItem(item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -642,14 +601,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
{
|
{
|
||||||
if (m_hasReceivedInventory)
|
if (m_hasReceivedInventory)
|
||||||
{
|
{
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
m_InventoryService.UpdateItem(item);
|
||||||
{
|
|
||||||
m_commsManager.SecureInventoryService.UpdateItem(item, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_commsManager.InventoryService.UpdateItem(item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -688,14 +640,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
if (RootFolder.DeleteItem(item.ID))
|
if (RootFolder.DeleteItem(item.ID))
|
||||||
{
|
{
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
return m_InventoryService.DeleteItem(item);
|
||||||
{
|
|
||||||
return m_commsManager.SecureInventoryService.DeleteItem(item, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return m_commsManager.InventoryService.DeleteItem(item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -789,14 +734,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
InventoryItemBase itemInfo = null;
|
InventoryItemBase itemInfo = null;
|
||||||
|
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
itemInfo = m_InventoryService.QueryItem(item);
|
||||||
{
|
|
||||||
itemInfo = m_commsManager.SecureInventoryService.QueryItem(item, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
itemInfo = m_commsManager.InventoryService.QueryItem(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (itemInfo != null)
|
if (itemInfo != null)
|
||||||
{
|
{
|
||||||
|
@ -833,14 +771,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
InventoryFolderBase folderInfo = null;
|
InventoryFolderBase folderInfo = null;
|
||||||
|
|
||||||
if (m_commsManager.SecureInventoryService != null)
|
folderInfo = m_InventoryService.QueryFolder(folder);
|
||||||
{
|
|
||||||
folderInfo = m_commsManager.SecureInventoryService.QueryFolder(folder, m_session_id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
folderInfo = m_commsManager.InventoryService.QueryFolder(folder);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (folderInfo != null)
|
if (folderInfo != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,6 +29,7 @@ using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using log4net;
|
using log4net;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Cache
|
namespace OpenSim.Framework.Communications.Cache
|
||||||
{
|
{
|
||||||
|
@ -66,6 +67,8 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public readonly InventoryFolderImpl LibraryRoot;
|
public readonly InventoryFolderImpl LibraryRoot;
|
||||||
|
|
||||||
|
private IInventoryService m_InventoryService;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor
|
/// Constructor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -77,6 +80,11 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
LibraryRoot = libraryRootFolder;
|
LibraryRoot = libraryRootFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetInventoryService(IInventoryService invService)
|
||||||
|
{
|
||||||
|
m_InventoryService = invService;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A new user has moved into a region in this instance so retrieve their profile from the user service.
|
/// A new user has moved into a region in this instance so retrieve their profile from the user service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -200,7 +208,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
/// <param name="userProfile"></param>
|
/// <param name="userProfile"></param>
|
||||||
protected CachedUserInfo AddToCaches(UserProfileData userProfile)
|
protected CachedUserInfo AddToCaches(UserProfileData userProfile)
|
||||||
{
|
{
|
||||||
CachedUserInfo createdUserInfo = new CachedUserInfo(m_commsManager, userProfile);
|
CachedUserInfo createdUserInfo = new CachedUserInfo(m_InventoryService, userProfile);
|
||||||
|
|
||||||
lock (m_userProfilesById)
|
lock (m_userProfilesById)
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications
|
namespace OpenSim.Framework.Communications
|
||||||
{
|
{
|
||||||
|
@ -135,5 +136,10 @@ namespace OpenSim.Framework.Communications
|
||||||
// This probably shouldn't be here, it belongs to IAuthentication
|
// This probably shouldn't be here, it belongs to IAuthentication
|
||||||
// But since Scenes only have IUserService references, I'm placing it here for now.
|
// But since Scenes only have IUserService references, I'm placing it here for now.
|
||||||
bool VerifySession(UUID userID, UUID sessionID);
|
bool VerifySession(UUID userID, UUID sessionID);
|
||||||
|
|
||||||
|
|
||||||
|
// Temporary Hack until we move everything to the new service model
|
||||||
|
void SetInventoryService(IInventoryService invService);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@ using NUnit.Framework.SyntaxHelpers;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications.Cache;
|
using OpenSim.Framework.Communications.Cache;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
using OpenSim.Tests.Common.Mock;
|
using OpenSim.Tests.Common.Mock;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications.Tests
|
namespace OpenSim.Framework.Communications.Tests
|
||||||
|
@ -143,6 +144,11 @@ namespace OpenSim.Framework.Communications.Tests
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetInventoryService(IInventoryService inv)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ using OpenMetaverse.StructuredData;
|
||||||
using OpenSim.Data;
|
using OpenSim.Data;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Framework.Statistics;
|
using OpenSim.Framework.Statistics;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Communications
|
namespace OpenSim.Framework.Communications
|
||||||
{
|
{
|
||||||
|
@ -54,6 +55,7 @@ namespace OpenSim.Framework.Communications
|
||||||
private List<IUserDataPlugin> m_plugins = new List<IUserDataPlugin>();
|
private List<IUserDataPlugin> m_plugins = new List<IUserDataPlugin>();
|
||||||
|
|
||||||
protected CommunicationsManager m_commsManager;
|
protected CommunicationsManager m_commsManager;
|
||||||
|
protected IInventoryService m_InventoryService;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor
|
/// Constructor
|
||||||
|
@ -64,6 +66,11 @@ namespace OpenSim.Framework.Communications
|
||||||
m_commsManager = commsManager;
|
m_commsManager = commsManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual void SetInventoryService(IInventoryService invService)
|
||||||
|
{
|
||||||
|
m_InventoryService = invService;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a new user data plugin - plugins will be requested in the order they were added.
|
/// Add a new user data plugin - plugins will be requested in the order they were added.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -676,7 +683,24 @@ namespace OpenSim.Framework.Communications
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//
|
||||||
|
// WARNING: This is a horrible hack
|
||||||
|
// The purpose here is to avoid touching the user server at this point.
|
||||||
|
// There are dragons there that I can't deal with right now.
|
||||||
|
// diva 06/09/09
|
||||||
|
//
|
||||||
|
if (m_InventoryService != null)
|
||||||
|
{
|
||||||
|
// local service (standalone)
|
||||||
|
m_log.Debug("[USERSTORAGE]: using IInventoryService to create user's inventory");
|
||||||
|
m_InventoryService.CreateUserInventory(userProf.ID);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// used by the user server
|
||||||
|
m_log.Debug("[USERSTORAGE]: using m_commsManager.InterServiceInventoryService to create user's inventory");
|
||||||
m_commsManager.InterServiceInventoryService.CreateNewUserInventory(userProf.ID);
|
m_commsManager.InterServiceInventoryService.CreateNewUserInventory(userProf.ID);
|
||||||
|
}
|
||||||
|
|
||||||
return userProf.ID;
|
return userProf.ID;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Communications.Clients;
|
using OpenSim.Framework.Communications.Clients;
|
||||||
using OpenSim.Region.Communications.OGS1;
|
using OpenSim.Region.Communications.OGS1;
|
||||||
using OpenSim.Region.Communications.Local;
|
using OpenSim.Region.Communications.Local;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Region.Communications.Hypergrid
|
namespace OpenSim.Region.Communications.Hypergrid
|
||||||
{
|
{
|
||||||
|
@ -63,6 +64,12 @@ namespace OpenSim.Region.Communications.Hypergrid
|
||||||
m_localUserServices = local;
|
m_localUserServices = local;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void SetInventoryService(IInventoryService invService)
|
||||||
|
{
|
||||||
|
base.SetInventoryService(invService);
|
||||||
|
m_localUserServices.SetInventoryService(invService);
|
||||||
|
}
|
||||||
|
|
||||||
public override UUID AddUser(
|
public override UUID AddUser(
|
||||||
string firstName, string lastName, string password, string email, uint regX, uint regY, UUID uuid)
|
string firstName, string lastName, string password, string email, uint regX, uint regY, UUID uuid)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,167 +0,0 @@
|
||||||
/*
|
|
||||||
* 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 System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Reflection;
|
|
||||||
using log4net;
|
|
||||||
using Nini.Config;
|
|
||||||
using OpenMetaverse;
|
|
||||||
using OpenSim.Data;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Framework.Communications;
|
|
||||||
using OpenSim.Framework.Communications.Cache;
|
|
||||||
using OpenSim.Framework.Communications.Services;
|
|
||||||
using Caps = OpenSim.Framework.Communications.Capabilities.Caps;
|
|
||||||
using LLSDHelpers = OpenSim.Framework.Communications.Capabilities.LLSDHelpers;
|
|
||||||
using OpenSim.Framework.Servers;
|
|
||||||
using OpenSim.Framework.Servers.HttpServer;
|
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
|
||||||
using OpenSim.Region.Framework.Scenes;
|
|
||||||
using OpenSim.Region.CoreModules.ServiceConnectors.Interregion;
|
|
||||||
|
|
||||||
using OpenMetaverse.StructuredData;
|
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.Hypergrid
|
|
||||||
{
|
|
||||||
public class HGStandaloneInventoryModule : IRegionModule
|
|
||||||
{
|
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
private static bool initialized = false;
|
|
||||||
private static bool enabled = false;
|
|
||||||
private static bool safemode = false;
|
|
||||||
|
|
||||||
private bool m_doLookup = false;
|
|
||||||
Scene m_scene;
|
|
||||||
HGInventoryService m_inventoryService;
|
|
||||||
InventoryServiceBase m_inventoryBase;
|
|
||||||
|
|
||||||
public bool DoLookup
|
|
||||||
{
|
|
||||||
get { return m_doLookup; }
|
|
||||||
set { m_doLookup = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
#region IRegionModule interface
|
|
||||||
|
|
||||||
public void Initialise(Scene scene, IConfigSource config)
|
|
||||||
{
|
|
||||||
if (!initialized)
|
|
||||||
{
|
|
||||||
initialized = true;
|
|
||||||
m_scene = scene;
|
|
||||||
|
|
||||||
// This module is only on for standalones
|
|
||||||
enabled = !config.Configs["Startup"].GetBoolean("gridmode", true) && config.Configs["Startup"].GetBoolean("hypergrid", false);
|
|
||||||
if (config.Configs["Hypergrid"] != null)
|
|
||||||
safemode = config.Configs["Hypergrid"].GetBoolean("safemode", false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PostInitialise()
|
|
||||||
{
|
|
||||||
if (enabled)
|
|
||||||
{
|
|
||||||
m_log.Info("[HGStandaloneInvModule]: Starting...");
|
|
||||||
//m_inventoryService = new InventoryService(m_scene);
|
|
||||||
m_inventoryBase = (InventoryServiceBase)m_scene.CommsManager.SecureInventoryService;
|
|
||||||
|
|
||||||
m_inventoryService = new HGInventoryService(m_inventoryBase, m_scene.AssetService,
|
|
||||||
(UserManagerBase)m_scene.CommsManager.UserAdminService, m_scene.CommsManager.HttpServer,
|
|
||||||
m_scene.CommsManager.NetworkServersInfo.InventoryURL);
|
|
||||||
|
|
||||||
AddHttpHandlers(m_scene.CommsManager.HttpServer);
|
|
||||||
m_inventoryService.AddHttpHandlers();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Close()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return "HGStandaloneInventoryModule"; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsSharedModule
|
|
||||||
{
|
|
||||||
get { return true; }
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public virtual void AddHttpHandlers(IHttpServer httpServer)
|
|
||||||
{
|
|
||||||
if (!safemode)
|
|
||||||
{
|
|
||||||
httpServer.AddStreamHandler(
|
|
||||||
new RestDeserialiseSecureHandler<Guid, InventoryCollection>(
|
|
||||||
"POST", "/GetInventory/", m_inventoryService.GetUserInventory, CheckAuthSession));
|
|
||||||
httpServer.AddStreamHandler(
|
|
||||||
new RestDeserialiseSecureHandler<InventoryItemBase, bool>(
|
|
||||||
"POST", "/DeleteItem/", m_inventoryBase.DeleteItem, CheckAuthSession));
|
|
||||||
httpServer.AddStreamHandler(
|
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
|
||||||
"POST", "/UpdateFolder/", m_inventoryBase.UpdateFolder, CheckAuthSession));
|
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
|
||||||
"POST", "/MoveFolder/", m_inventoryBase.MoveFolder, CheckAuthSession));
|
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
|
||||||
"POST", "/PurgeFolder/", m_inventoryBase.PurgeFolder, CheckAuthSession));
|
|
||||||
}
|
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
|
||||||
new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
|
|
||||||
"POST", "/NewFolder/", m_inventoryBase.AddFolder, CheckAuthSession));
|
|
||||||
|
|
||||||
httpServer.AddStreamHandler(
|
|
||||||
new RestDeserialiseSecureHandler<InventoryItemBase, bool>(
|
|
||||||
"POST", "/NewItem/", m_inventoryBase.AddItem, CheckAuthSession));
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check that the source of an inventory request for a particular agent is a current session belonging to
|
|
||||||
/// that agent.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="session_id"></param>
|
|
||||||
/// <param name="avatar_id"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public bool CheckAuthSession(string session_id, string avatar_id)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -18,8 +18,11 @@
|
||||||
<RegionModule id="RemoteAssetServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectors.Asset.RemoteAssetServicesConnector" />
|
<RegionModule id="RemoteAssetServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectors.Asset.RemoteAssetServicesConnector" />
|
||||||
<RegionModule id="HGAssetBroker" type="OpenSim.Region.CoreModules.ServiceConnectors.Asset.HGAssetBroker" />
|
<RegionModule id="HGAssetBroker" type="OpenSim.Region.CoreModules.ServiceConnectors.Asset.HGAssetBroker" />
|
||||||
<RegionModule id="CoreAssetCache" type="OpenSim.Region.CoreModules.Asset.CoreAssetCache" />
|
<RegionModule id="CoreAssetCache" type="OpenSim.Region.CoreModules.Asset.CoreAssetCache" />
|
||||||
<RegionModule id="CoreAssetCache" type="OpenSim.Region.CoreModules.Asset.GlynnTuckerAssetCache" />
|
<RegionModule id="GlynnTuckerAssetCache" type="OpenSim.Region.CoreModules.Asset.GlynnTuckerAssetCache" />
|
||||||
<RegionModule id="CenomeMemoryAssetCache" type="OpenSim.Region.CoreModules.Asset.CenomeMemoryAssetCache"/>
|
<RegionModule id="CenomeMemoryAssetCache" type="OpenSim.Region.CoreModules.Asset.CenomeMemoryAssetCache"/>
|
||||||
|
<RegionModule id="LocalInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectors.Inventory.LocalInventoryServicesConnector" />
|
||||||
|
<RegionModule id="RemoteInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectors.Inventory.RemoteInventoryServicesConnector" />
|
||||||
|
<RegionModule id="HGInventoryBroker" type="OpenSim.Region.CoreModules.ServiceConnectors.Inventory.HGInventoryBroker" />
|
||||||
<RegionModule id="UrlModule" type="OpenSim.Region.CoreModules.Scripting.LSLHttp.UrlModule" />
|
<RegionModule id="UrlModule" type="OpenSim.Region.CoreModules.Scripting.LSLHttp.UrlModule" />
|
||||||
<RegionModule id="Chat" type="OpenSim.Region.CoreModules.Avatar.Chat.ChatModule" />
|
<RegionModule id="Chat" type="OpenSim.Region.CoreModules.Avatar.Chat.ChatModule" />
|
||||||
</Extension>
|
</Extension>
|
||||||
|
|
|
@ -84,13 +84,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
if (localDll == String.Empty)
|
if (localDll == String.Empty)
|
||||||
{
|
{
|
||||||
m_log.Error("[HG INVENTORY CONNECTOR]: No LocalGridInventoryService named in section InventoryService");
|
m_log.Error("[HG INVENTORY CONNECTOR]: No LocalGridInventoryService named in section InventoryService");
|
||||||
return;
|
//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)
|
if (HGDll == String.Empty)
|
||||||
{
|
{
|
||||||
m_log.Error("[HG INVENTORY CONNECTOR]: No HypergridInventoryService named in section InventoryService");
|
m_log.Error("[HG INVENTORY CONNECTOR]: No HypergridInventoryService named in section InventoryService");
|
||||||
return;
|
//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 };
|
Object[] args = new Object[] { source };
|
||||||
|
@ -116,7 +118,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
m_LocalGridInventoryURI = inventoryConfig.GetString("InventoryServerURI", string.Empty);
|
m_LocalGridInventoryURI = inventoryConfig.GetString("InventoryServerURI", string.Empty);
|
||||||
|
|
||||||
m_Enabled = true;
|
m_Enabled = true;
|
||||||
m_log.Info("[HG INVENTORY CONNECTOR]: HG asset broker enabled");
|
m_log.Info("[HG INVENTORY CONNECTOR]: HG inventory broker enabled");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -139,6 +141,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
m_Scene = scene;
|
m_Scene = scene;
|
||||||
// HACK for now. Ugh!
|
// HACK for now. Ugh!
|
||||||
m_UserProfileService = m_Scene.CommsManager.UserProfileCacheService;
|
m_UserProfileService = m_Scene.CommsManager.UserProfileCacheService;
|
||||||
|
// ugh!
|
||||||
|
m_UserProfileService.SetInventoryService(this);
|
||||||
|
scene.CommsManager.UserService.SetInventoryService(this);
|
||||||
|
|
||||||
|
m_Initialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||||
|
@ -153,7 +160,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
if (!m_Enabled)
|
if (!m_Enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_log.InfoFormat("[INVENTORY CONNECTOR]: Enabled remote inventory for region {0}", scene.RegionInfo.RegionName);
|
m_log.InfoFormat("[INVENTORY CONNECTOR]: Enabled HG inventory for region {0}", scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,10 +168,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
|
|
||||||
public bool CreateUserInventory(UUID userID)
|
public bool CreateUserInventory(UUID userID)
|
||||||
{
|
{
|
||||||
if (IsLocalGridUser(userID))
|
|
||||||
return m_GridService.CreateUserInventory(userID);
|
return m_GridService.CreateUserInventory(userID);
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||||
|
@ -187,7 +191,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(userID);
|
UUID sessionID = GetSessionID(userID);
|
||||||
string uri = "http://" + GetUserInventoryURI(userID) + "/" + userID.ToString();
|
string uri = GetUserInventoryURI(userID) + "/" + userID.ToString();
|
||||||
m_HGService.GetUserInventory(uri, sessionID, callback);
|
m_HGService.GetUserInventory(uri, sessionID, callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -207,7 +211,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(folder.Owner);
|
UUID sessionID = GetSessionID(folder.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
||||||
return m_HGService.AddFolder(uri, folder, sessionID);
|
return m_HGService.AddFolder(uri, folder, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,7 +226,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(folder.Owner);
|
UUID sessionID = GetSessionID(folder.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
||||||
return m_HGService.UpdateFolder(uri, folder, sessionID);
|
return m_HGService.UpdateFolder(uri, folder, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -237,7 +241,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(folder.Owner);
|
UUID sessionID = GetSessionID(folder.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
||||||
return m_HGService.MoveFolder(uri, folder, sessionID);
|
return m_HGService.MoveFolder(uri, folder, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -252,7 +256,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(folder.Owner);
|
UUID sessionID = GetSessionID(folder.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
||||||
return m_HGService.PurgeFolder(uri, folder, sessionID);
|
return m_HGService.PurgeFolder(uri, folder, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -267,7 +271,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(item.Owner);
|
UUID sessionID = GetSessionID(item.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString();
|
string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString();
|
||||||
return m_HGService.AddItem(uri, item, sessionID);
|
return m_HGService.AddItem(uri, item, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -282,7 +286,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(item.Owner);
|
UUID sessionID = GetSessionID(item.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString();
|
string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString();
|
||||||
return m_HGService.UpdateItem(uri, item, sessionID);
|
return m_HGService.UpdateItem(uri, item, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -297,7 +301,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(item.Owner);
|
UUID sessionID = GetSessionID(item.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString();
|
string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString();
|
||||||
return m_HGService.DeleteItem(uri, item, sessionID);
|
return m_HGService.DeleteItem(uri, item, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -312,7 +316,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(item.Owner);
|
UUID sessionID = GetSessionID(item.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString();
|
string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString();
|
||||||
return m_HGService.QueryItem(uri, item, sessionID);
|
return m_HGService.QueryItem(uri, item, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -327,7 +331,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(folder.Owner);
|
UUID sessionID = GetSessionID(folder.Owner);
|
||||||
string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString();
|
||||||
return m_HGService.QueryFolder(uri, folder, sessionID);
|
return m_HGService.QueryFolder(uri, folder, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
@ -38,10 +39,10 @@ using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Services.Interfaces;
|
using OpenSim.Services.Interfaces;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
{
|
{
|
||||||
public class LocalInventoryServicesConnector :
|
public class LocalInventoryServicesConnector : ISharedRegionModule, IInventoryService
|
||||||
ISharedRegionModule, IInventoryService
|
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log =
|
private static readonly ILog m_log =
|
||||||
LogManager.GetLogger(
|
LogManager.GetLogger(
|
||||||
|
@ -50,6 +51,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
private IInventoryService m_InventoryService;
|
private IInventoryService m_InventoryService;
|
||||||
|
|
||||||
private bool m_Enabled = false;
|
private bool m_Enabled = false;
|
||||||
|
private bool m_Initialized = false;
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
{
|
{
|
||||||
|
@ -64,15 +66,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
string name = moduleConfig.GetString("InventoryServices", "");
|
string name = moduleConfig.GetString("InventoryServices", "");
|
||||||
if (name == Name)
|
if (name == Name)
|
||||||
{
|
{
|
||||||
IConfig assetConfig = source.Configs["InventoryService"];
|
IConfig inventoryConfig = source.Configs["InventoryService"];
|
||||||
if (assetConfig == null)
|
if (inventoryConfig == null)
|
||||||
{
|
{
|
||||||
m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini");
|
m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string serviceDll = assetConfig.GetString("LocalServiceModule",
|
string serviceDll = inventoryConfig.GetString("LocalServiceModule", String.Empty);
|
||||||
String.Empty);
|
|
||||||
|
|
||||||
if (serviceDll == String.Empty)
|
if (serviceDll == String.Empty)
|
||||||
{
|
{
|
||||||
|
@ -81,14 +82,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
}
|
}
|
||||||
|
|
||||||
Object[] args = new Object[] { source };
|
Object[] args = new Object[] { source };
|
||||||
m_InventoryService =
|
m_log.DebugFormat("[INVENTORY CONNECTOR]: Service dll = {0}", serviceDll);
|
||||||
ServerUtils.LoadPlugin<IInventoryService>(serviceDll,
|
|
||||||
args);
|
m_InventoryService = ServerUtils.LoadPlugin<IInventoryService>(serviceDll, args);
|
||||||
|
|
||||||
if (m_InventoryService == null)
|
if (m_InventoryService == null)
|
||||||
{
|
{
|
||||||
m_log.Error("[INVENTORY CONNECTOR]: Can't load asset service");
|
m_log.Error("[INVENTORY CONNECTOR]: Can't load inventory service");
|
||||||
return;
|
//return;
|
||||||
|
throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's");
|
||||||
}
|
}
|
||||||
|
|
||||||
//List<IInventoryDataPlugin> plugins
|
//List<IInventoryDataPlugin> plugins
|
||||||
|
@ -121,7 +123,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
if (!m_Enabled)
|
if (!m_Enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!m_Initialized)
|
||||||
|
{
|
||||||
|
// ugh!
|
||||||
|
scene.CommsManager.UserProfileCacheService.SetInventoryService(this);
|
||||||
|
scene.CommsManager.UserService.SetInventoryService(this);
|
||||||
|
m_Initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
|
|
|
@ -40,12 +40,10 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
{
|
{
|
||||||
public class RemoteInventoryServicesConnector :
|
public class RemoteInventoryServicesConnector : ISharedRegionModule, IInventoryService
|
||||||
ISharedRegionModule, IInventoryService
|
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log =
|
private static readonly ILog m_log =
|
||||||
LogManager.GetLogger(
|
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
private bool m_Enabled = false;
|
private bool m_Enabled = false;
|
||||||
private bool m_Initialized = false;
|
private bool m_Initialized = false;
|
||||||
|
@ -57,6 +55,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
get { return "RemoteInventoryServicesConnector"; }
|
get { return "RemoteInventoryServicesConnector"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RemoteInventoryServicesConnector()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public RemoteInventoryServicesConnector(IConfigSource source)
|
public RemoteInventoryServicesConnector(IConfigSource source)
|
||||||
{
|
{
|
||||||
Init(source);
|
Init(source);
|
||||||
|
@ -100,7 +102,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!m_Initialized)
|
if (!m_Initialized)
|
||||||
|
{
|
||||||
m_Scene = scene;
|
m_Scene = scene;
|
||||||
|
// ugh!
|
||||||
|
scene.CommsManager.UserProfileCacheService.SetInventoryService(this);
|
||||||
|
scene.CommsManager.UserService.SetInventoryService(this);
|
||||||
|
m_Initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,6 +146,26 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected IInventoryService m_InventoryService = null;
|
||||||
|
|
||||||
|
public IInventoryService InventoryService
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (m_InventoryService == null)
|
||||||
|
{
|
||||||
|
m_InventoryService = RequestModuleInterface<IInventoryService>();
|
||||||
|
|
||||||
|
if (m_InventoryService == null)
|
||||||
|
{
|
||||||
|
throw new Exception("No IInventoryService available.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_InventoryService;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected IXMLRPC m_xmlrpcModule;
|
protected IXMLRPC m_xmlrpcModule;
|
||||||
protected IWorldComm m_worldCommModule;
|
protected IWorldComm m_worldCommModule;
|
||||||
protected IAvatarFactory m_AvatarFactory;
|
protected IAvatarFactory m_AvatarFactory;
|
||||||
|
|
|
@ -128,13 +128,20 @@ namespace OpenSim.Server.Base
|
||||||
pluginType.ToString() !=
|
pluginType.ToString() !=
|
||||||
pluginType.Namespace + "." + className)
|
pluginType.Namespace + "." + className)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Type typeInterface =
|
Type typeInterface =
|
||||||
pluginType.GetInterface(interfaceName, true);
|
pluginType.GetInterface(interfaceName, true);
|
||||||
if (typeInterface != null)
|
if (typeInterface != null)
|
||||||
{
|
{
|
||||||
T plug = (T)Activator.CreateInstance(pluginType,
|
T plug = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
plug = (T)Activator.CreateInstance(pluginType,
|
||||||
args);
|
args);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("Error loading plugin from {0}, exception {1}", dllName, e.InnerException);
|
||||||
|
}
|
||||||
|
|
||||||
return plug;
|
return plug;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,19 +42,35 @@ namespace OpenSim.Services.AssetService
|
||||||
|
|
||||||
public AssetServiceBase(IConfigSource config) : base(config)
|
public AssetServiceBase(IConfigSource config) : base(config)
|
||||||
{
|
{
|
||||||
|
string dllName = String.Empty;
|
||||||
|
string connString = String.Empty;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Try reading the [DatabaseService] section first, if it exists
|
||||||
|
//
|
||||||
|
IConfig dbConfig = config.Configs["DatabaseService"];
|
||||||
|
if (dbConfig != null)
|
||||||
|
{
|
||||||
|
dllName = dbConfig.GetString("StorageProvider", String.Empty);
|
||||||
|
connString = dbConfig.GetString("ConnectionString", String.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Try reading the more specific [AssetService] section, if it exists
|
||||||
|
//
|
||||||
IConfig assetConfig = config.Configs["AssetService"];
|
IConfig assetConfig = config.Configs["AssetService"];
|
||||||
if (assetConfig == null)
|
if (assetConfig != null)
|
||||||
throw new Exception("No AssetService configuration");
|
{
|
||||||
|
dllName = assetConfig.GetString("StorageProvider", dllName);
|
||||||
|
connString = assetConfig.GetString("ConnectionString", connString);
|
||||||
|
}
|
||||||
|
|
||||||
string dllName = assetConfig.GetString("StorageProvider",
|
//
|
||||||
String.Empty);
|
// We tried, but this doesn't exist. We can't proceed.
|
||||||
|
//
|
||||||
if (dllName == String.Empty)
|
if (dllName.Equals(String.Empty))
|
||||||
throw new Exception("No StorageProvider configured");
|
throw new Exception("No StorageProvider configured");
|
||||||
|
|
||||||
string connString = assetConfig.GetString("ConnectionString",
|
|
||||||
String.Empty);
|
|
||||||
|
|
||||||
m_Database = LoadPlugin<IAssetDataPlugin>(dllName);
|
m_Database = LoadPlugin<IAssetDataPlugin>(dllName);
|
||||||
if (m_Database == null)
|
if (m_Database == null)
|
||||||
throw new Exception("Could not find a storage interface in the given module");
|
throw new Exception("Could not find a storage interface in the given module");
|
||||||
|
|
|
@ -67,7 +67,7 @@ namespace OpenSim.Services.Connectors
|
||||||
IConfig inventoryConfig = source.Configs["InventoryService"];
|
IConfig inventoryConfig = source.Configs["InventoryService"];
|
||||||
if (inventoryConfig == null)
|
if (inventoryConfig == null)
|
||||||
{
|
{
|
||||||
m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpanSim.ini");
|
m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini");
|
||||||
throw new Exception("Inventory connector init error");
|
throw new Exception("Inventory connector init error");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ namespace OpenSim.Services.Connectors
|
||||||
if (serviceURI == String.Empty)
|
if (serviceURI == String.Empty)
|
||||||
{
|
{
|
||||||
m_log.Error("[INVENTORY CONNECTOR]: No Server URI named in section InventoryService");
|
m_log.Error("[INVENTORY CONNECTOR]: No Server URI named in section InventoryService");
|
||||||
throw new Exception("Inventory connector init error");
|
throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's");
|
||||||
}
|
}
|
||||||
m_ServerURI = serviceURI.TrimEnd('/');
|
m_ServerURI = serviceURI.TrimEnd('/');
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,170 @@
|
||||||
|
/*
|
||||||
|
* 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 System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
using Nini.Config;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Servers.HttpServer;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
namespace OpenSim.Services.Connectors
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// This connector is temporary. It's used by the user server, before that server is refactored.
|
||||||
|
/// </summary>
|
||||||
|
public class QuickAndDirtyInventoryServiceConnector : IInventoryService
|
||||||
|
{
|
||||||
|
private static readonly ILog m_log =
|
||||||
|
LogManager.GetLogger(
|
||||||
|
MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
private string m_ServerURI = String.Empty;
|
||||||
|
|
||||||
|
private Dictionary<UUID, InventoryReceiptCallback> m_RequestingInventory = new Dictionary<UUID, InventoryReceiptCallback>();
|
||||||
|
|
||||||
|
public QuickAndDirtyInventoryServiceConnector()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public QuickAndDirtyInventoryServiceConnector(string serverURI)
|
||||||
|
{
|
||||||
|
m_ServerURI = serverURI.TrimEnd('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <see cref="OpenSim.Framework.Communications.IInterServiceInventoryServices"/>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool CreateUserInventory(UUID userId)
|
||||||
|
{
|
||||||
|
return SynchronousRestObjectPoster.BeginPostObject<Guid, bool>(
|
||||||
|
"POST", m_ServerURI + "CreateInventory/", userId.Guid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <see cref="OpenSim.Framework.Communications.IInterServiceInventoryServices"/>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||||
|
{
|
||||||
|
return SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>(
|
||||||
|
"POST", m_ServerURI + "RootFolders/", userId.Guid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a list of all the active gestures in a user's inventory.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId">
|
||||||
|
/// The <see cref="UUID"/> of the user
|
||||||
|
/// </param>
|
||||||
|
/// <returns>
|
||||||
|
/// A flat list of the gesture items.
|
||||||
|
/// </returns>
|
||||||
|
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||||
|
{
|
||||||
|
return SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryItemBase>>(
|
||||||
|
"POST", m_ServerURI + "ActiveGestures/", userId.Guid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public InventoryCollection GetUserInventory(UUID userID)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<InventoryItemBase> GetFolderItems(UUID folderID)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool AddFolder(InventoryFolderBase folder)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool UpdateFolder(InventoryFolderBase folder)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool MoveFolder(InventoryFolderBase folder)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool PurgeFolder(InventoryFolderBase folder)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool AddItem(InventoryItemBase item)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool UpdateItem(InventoryItemBase item)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DeleteItem(InventoryItemBase item)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InventoryItemBase QueryItem(InventoryItemBase item)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HasInventoryForUser(UUID userID)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InventoryFolderBase RequestRootFolder(UUID userID)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -109,6 +109,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
public void GetUserInventory(string id, UUID sessionID, InventoryReceiptCallback callback)
|
public void GetUserInventory(string id, UUID sessionID, InventoryReceiptCallback callback)
|
||||||
{
|
{
|
||||||
|
m_log.Debug("[HGInventory]: GetUserInventory " + id);
|
||||||
string url = string.Empty;
|
string url = string.Empty;
|
||||||
string userID = string.Empty;
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
@ -120,57 +121,120 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddFolder(string userID, InventoryFolderBase folder, UUID sessionID)
|
public bool AddFolder(string id, InventoryFolderBase folder, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.AddFolder(userID, folder, sessionID);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateFolder(string userID, InventoryFolderBase folder, UUID sessionID)
|
public bool UpdateFolder(string id, InventoryFolderBase folder, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.UpdateFolder(userID, folder, sessionID);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool MoveFolder(string userID, InventoryFolderBase folder, UUID sessionID)
|
public bool MoveFolder(string id, InventoryFolderBase folder, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.MoveFolder(userID, folder, sessionID);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool PurgeFolder(string userID, InventoryFolderBase folder, UUID sessionID)
|
public bool PurgeFolder(string id, InventoryFolderBase folder, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.PurgeFolder(userID, folder, sessionID);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddItem(string userID, InventoryItemBase item, UUID sessionID)
|
public bool AddItem(string id, InventoryItemBase item, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.AddItem(userID, item, sessionID);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateItem(string userID, InventoryItemBase item, UUID sessionID)
|
public bool UpdateItem(string id, InventoryItemBase item, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.UpdateItem(userID, item, sessionID);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeleteItem(string userID, InventoryItemBase item, UUID sessionID)
|
public bool DeleteItem(string id, InventoryItemBase item, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.UpdateItem(userID, item, sessionID);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID sessionID)
|
public InventoryItemBase QueryItem(string id, InventoryItemBase item, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.QueryItem(userID, item, sessionID);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase folder, UUID sessionID)
|
public InventoryFolderBase QueryFolder(string id, InventoryFolderBase folder, UUID sessionID)
|
||||||
{
|
{
|
||||||
// TODO
|
string url = string.Empty;
|
||||||
|
string userID = string.Empty;
|
||||||
|
|
||||||
|
if (StringToUrlAndUserID(id, out url, out userID))
|
||||||
|
{
|
||||||
|
ISessionAuthInventoryService connector = GetConnector(url);
|
||||||
|
return connector.QueryFolder(userID, folder, sessionID);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
public InventoryService(IConfigSource config) : base(config)
|
public InventoryService(IConfigSource config) : base(config)
|
||||||
{
|
{
|
||||||
|
m_log.Debug("[INVENTORY SERVICE]: Initialized.");
|
||||||
}
|
}
|
||||||
|
|
||||||
#region IInventoryServices methods
|
#region IInventoryServices methods
|
||||||
|
@ -57,7 +58,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[AGENT INVENTORY]: Getting inventory skeleton for {0}", userId);
|
m_log.DebugFormat("[INVENTORY SERVICE]: Getting inventory skeleton for {0}", userId);
|
||||||
|
|
||||||
InventoryFolderBase rootFolder = RequestRootFolder(userId);
|
InventoryFolderBase rootFolder = RequestRootFolder(userId);
|
||||||
|
|
||||||
|
@ -79,7 +80,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
// foreach (InventoryFolderBase folder in userFolders)
|
// foreach (InventoryFolderBase folder in userFolders)
|
||||||
// {
|
// {
|
||||||
// m_log.DebugFormat("[AGENT INVENTORY]: Got folder {0} {1}", folder.name, folder.folderID);
|
// m_log.DebugFormat("[INVENTORY SERVICE]: Got folder {0} {1}", folder.name, folder.folderID);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
return userFolders;
|
return userFolders;
|
||||||
|
@ -113,7 +114,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
if (null != existingRootFolder)
|
if (null != existingRootFolder)
|
||||||
{
|
{
|
||||||
m_log.WarnFormat(
|
m_log.WarnFormat(
|
||||||
"[AGENT INVENTORY]: Did not create a new inventory for user {0} since they already have "
|
"[INVENTORY SERVICE]: Did not create a new inventory for user {0} since they already have "
|
||||||
+ "a root inventory folder with id {1}",
|
+ "a root inventory folder with id {1}",
|
||||||
user, existingRootFolder.ID);
|
user, existingRootFolder.ID);
|
||||||
}
|
}
|
||||||
|
@ -138,7 +139,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
/// <returns>The user's inventory. If an inventory cannot be found then an empty collection is returned.</returns>
|
/// <returns>The user's inventory. If an inventory cannot be found then an empty collection is returned.</returns>
|
||||||
public InventoryCollection GetUserInventory(UUID userID)
|
public InventoryCollection GetUserInventory(UUID userID)
|
||||||
{
|
{
|
||||||
m_log.InfoFormat("[LOCAL INVENTORY SERVICE]: Processing request for inventory of {0}", userID);
|
m_log.InfoFormat("[INVENTORY SERVICE]: Processing request for inventory of {0}", userID);
|
||||||
|
|
||||||
// Uncomment me to simulate a slow responding inventory server
|
// Uncomment me to simulate a slow responding inventory server
|
||||||
//Thread.Sleep(16000);
|
//Thread.Sleep(16000);
|
||||||
|
@ -149,7 +150,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
if (null == allFolders)
|
if (null == allFolders)
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[LOCAL INVENTORY SERVICE]: No inventory found for user {0}", userID);
|
m_log.WarnFormat("[INVENTORY SERVICE]: No inventory found for user {0}", userID);
|
||||||
|
|
||||||
return invCollection;
|
return invCollection;
|
||||||
}
|
}
|
||||||
|
@ -172,16 +173,16 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
// foreach (InventoryFolderBase folder in invCollection.Folders)
|
// foreach (InventoryFolderBase folder in invCollection.Folders)
|
||||||
// {
|
// {
|
||||||
// m_log.DebugFormat("[GRID AGENT INVENTORY]: Sending back folder {0} {1}", folder.Name, folder.ID);
|
// m_log.DebugFormat("[GRID INVENTORY SERVICE]: Sending back folder {0} {1}", folder.Name, folder.ID);
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// foreach (InventoryItemBase item in invCollection.Items)
|
// foreach (InventoryItemBase item in invCollection.Items)
|
||||||
// {
|
// {
|
||||||
// m_log.DebugFormat("[GRID AGENT INVENTORY]: Sending back item {0} {1}, folder {2}", item.Name, item.ID, item.Folder);
|
// m_log.DebugFormat("[GRID INVENTORY SERVICE]: Sending back item {0} {1}, folder {2}", item.Name, item.ID, item.Folder);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[LOCAL INVENTORY SERVICE]: Sending back inventory response to user {0} containing {1} folders and {2} items",
|
"[INVENTORY SERVICE]: Sending back inventory response to user {0} containing {1} folders and {2} items",
|
||||||
invCollection.UserID, invCollection.Folders.Count, invCollection.Items.Count);
|
invCollection.UserID, invCollection.Folders.Count, invCollection.Items.Count);
|
||||||
|
|
||||||
return invCollection;
|
return invCollection;
|
||||||
|
@ -194,7 +195,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
/// <param name="callback"></param>
|
/// <param name="callback"></param>
|
||||||
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||||
{
|
{
|
||||||
m_log.InfoFormat("[LOCAL INVENTORY SERVICE]: Requesting inventory for user {0}", userID);
|
m_log.InfoFormat("[INVENTORY SERVICE]: Requesting inventory for user {0}", userID);
|
||||||
|
|
||||||
List<InventoryFolderImpl> folders = new List<InventoryFolderImpl>();
|
List<InventoryFolderImpl> folders = new List<InventoryFolderImpl>();
|
||||||
List<InventoryItemBase> items = new List<InventoryItemBase>();
|
List<InventoryItemBase> items = new List<InventoryItemBase>();
|
||||||
|
@ -231,15 +232,15 @@ namespace OpenSim.Services.InventoryService
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[LOCAL INVENTORY SERVICE]: Received inventory response for user {0} containing {1} folders and {2} items",
|
"[INVENTORY SERVICE]: Received inventory response for user {0} containing {1} folders and {2} items",
|
||||||
userID, folders.Count, items.Count);
|
userID, folders.Count, items.Count);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[LOCAL INVENTORY SERVICE]: User {0} inventory not available", userID);
|
m_log.WarnFormat("[INVENTORY SERVICE]: User {0} inventory not available", userID);
|
||||||
}
|
}
|
||||||
|
|
||||||
callback(folders, items);
|
callback.BeginInvoke(folders, items, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||||
|
@ -287,7 +288,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
public virtual bool AddFolder(InventoryFolderBase folder)
|
public virtual bool AddFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[AGENT INVENTORY]: Adding folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
|
"[INVENTORY SERVICE]: Adding folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
|
||||||
|
|
||||||
foreach (IInventoryDataPlugin plugin in m_plugins)
|
foreach (IInventoryDataPlugin plugin in m_plugins)
|
||||||
{
|
{
|
||||||
|
@ -302,7 +303,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
public virtual bool UpdateFolder(InventoryFolderBase folder)
|
public virtual bool UpdateFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[AGENT INVENTORY]: Updating folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
|
"[INVENTORY SERVICE]: Updating folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
|
||||||
|
|
||||||
foreach (IInventoryDataPlugin plugin in m_plugins)
|
foreach (IInventoryDataPlugin plugin in m_plugins)
|
||||||
{
|
{
|
||||||
|
@ -317,7 +318,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
public virtual bool MoveFolder(InventoryFolderBase folder)
|
public virtual bool MoveFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[AGENT INVENTORY]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
|
"[INVENTORY SERVICE]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
|
||||||
|
|
||||||
foreach (IInventoryDataPlugin plugin in m_plugins)
|
foreach (IInventoryDataPlugin plugin in m_plugins)
|
||||||
{
|
{
|
||||||
|
@ -332,7 +333,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
public virtual bool AddItem(InventoryItemBase item)
|
public virtual bool AddItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[AGENT INVENTORY]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder);
|
"[INVENTORY SERVICE]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder);
|
||||||
|
|
||||||
foreach (IInventoryDataPlugin plugin in m_plugins)
|
foreach (IInventoryDataPlugin plugin in m_plugins)
|
||||||
{
|
{
|
||||||
|
@ -347,7 +348,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
public virtual bool UpdateItem(InventoryItemBase item)
|
public virtual bool UpdateItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[AGENT INVENTORY]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder);
|
"[INVENTORY SERVICE]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder);
|
||||||
|
|
||||||
foreach (IInventoryDataPlugin plugin in m_plugins)
|
foreach (IInventoryDataPlugin plugin in m_plugins)
|
||||||
{
|
{
|
||||||
|
@ -362,7 +363,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
public virtual bool DeleteItem(InventoryItemBase item)
|
public virtual bool DeleteItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
m_log.InfoFormat(
|
m_log.InfoFormat(
|
||||||
"[AGENT INVENTORY]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder);
|
"[INVENTORY SERVICE]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder);
|
||||||
|
|
||||||
foreach (IInventoryDataPlugin plugin in m_plugins)
|
foreach (IInventoryDataPlugin plugin in m_plugins)
|
||||||
{
|
{
|
||||||
|
@ -407,13 +408,13 @@ namespace OpenSim.Services.InventoryService
|
||||||
public virtual bool PurgeFolder(InventoryFolderBase folder)
|
public virtual bool PurgeFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[AGENT INVENTORY]: Purging folder {0} {1} of its contents", folder.Name, folder.ID);
|
"[INVENTORY SERVICE]: Purging folder {0} {1} of its contents", folder.Name, folder.ID);
|
||||||
|
|
||||||
List<InventoryFolderBase> subFolders = RequestSubFolders(folder.ID);
|
List<InventoryFolderBase> subFolders = RequestSubFolders(folder.ID);
|
||||||
|
|
||||||
foreach (InventoryFolderBase subFolder in subFolders)
|
foreach (InventoryFolderBase subFolder in subFolders)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[AGENT INVENTORY]: Deleting folder {0} {1}", subFolder.Name, subFolder.ID);
|
// m_log.DebugFormat("[INVENTORY SERVICE]: Deleting folder {0} {1}", subFolder.Name, subFolder.ID);
|
||||||
|
|
||||||
foreach (IInventoryDataPlugin plugin in m_plugins)
|
foreach (IInventoryDataPlugin plugin in m_plugins)
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,19 +44,37 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
public InventoryServiceBase(IConfigSource config) : base(config)
|
public InventoryServiceBase(IConfigSource config) : base(config)
|
||||||
{
|
{
|
||||||
IConfig assetConfig = config.Configs["InventoryService"];
|
string dllName = String.Empty;
|
||||||
if (assetConfig == null)
|
string connString = String.Empty;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Try reading the [DatabaseService] section first, if it exists
|
||||||
|
//
|
||||||
|
IConfig dbConfig = config.Configs["DatabaseService"];
|
||||||
|
if (dbConfig != null)
|
||||||
|
{
|
||||||
|
dllName = dbConfig.GetString("StorageProvider", String.Empty);
|
||||||
|
connString = dbConfig.GetString("ConnectionString", String.Empty);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Console.WriteLine("------ dbConfig = null!");
|
||||||
|
|
||||||
|
//
|
||||||
|
// Try reading the more specific [InventoryService] section, if it exists
|
||||||
|
//
|
||||||
|
IConfig inventoryConfig = config.Configs["InventoryService"];
|
||||||
|
if (inventoryConfig != null)
|
||||||
|
{
|
||||||
|
dllName = inventoryConfig.GetString("StorageProvider", dllName);
|
||||||
|
connString = inventoryConfig.GetString("ConnectionString", connString);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// We tried, but this doesn't exist. We can't proceed.
|
||||||
|
//
|
||||||
|
if (dllName.Equals(String.Empty))
|
||||||
throw new Exception("No InventoryService configuration");
|
throw new Exception("No InventoryService configuration");
|
||||||
|
|
||||||
string dllName = assetConfig.GetString("StorageProvider",
|
|
||||||
String.Empty);
|
|
||||||
|
|
||||||
if (dllName == String.Empty)
|
|
||||||
throw new Exception("No StorageProvider configured");
|
|
||||||
|
|
||||||
string connString = assetConfig.GetString("ConnectionString",
|
|
||||||
String.Empty);
|
|
||||||
|
|
||||||
m_Database = LoadPlugin<IInventoryDataPlugin>(dllName);
|
m_Database = LoadPlugin<IInventoryDataPlugin>(dllName);
|
||||||
if (m_Database == null)
|
if (m_Database == null)
|
||||||
throw new Exception("Could not find a storage interface in the given module");
|
throw new Exception("Could not find a storage interface in the given module");
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
/*
|
||||||
|
* 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 System;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using log4net;
|
||||||
|
using Nini.Config;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Servers.HttpServer;
|
||||||
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
|
using OpenSim.Server.Base;
|
||||||
|
using OpenSim.Server.Handlers.Base;
|
||||||
|
|
||||||
|
namespace OpenSim.SimulatorServices
|
||||||
|
{
|
||||||
|
public class RegionInventoryService : ISharedRegionModule
|
||||||
|
{
|
||||||
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
private static bool enabled = false;
|
||||||
|
|
||||||
|
private IConfigSource m_Config;
|
||||||
|
bool m_Registered = false;
|
||||||
|
|
||||||
|
#region IRegionModule interface
|
||||||
|
|
||||||
|
public void Initialise(IConfigSource config)
|
||||||
|
{
|
||||||
|
// This module is only on for standalones in hypergrid mode
|
||||||
|
enabled = (!config.Configs["Startup"].GetBoolean("gridmode", true)) &&
|
||||||
|
config.Configs["Startup"].GetBoolean("hypergrid", true);
|
||||||
|
m_log.DebugFormat("[RegionInventoryService]: enabled? {0}", enabled);
|
||||||
|
m_Config = config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PostInitialise()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Close()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return "RegionInventoryService"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddRegion(Scene scene)
|
||||||
|
{
|
||||||
|
if (!enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!m_Registered)
|
||||||
|
{
|
||||||
|
m_Registered = true;
|
||||||
|
|
||||||
|
m_log.Info("[RegionInventoryService]: Starting...");
|
||||||
|
|
||||||
|
Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer };
|
||||||
|
|
||||||
|
ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:InventoryServiceInConnector", args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveRegion(Scene scene)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RegionLoaded(Scene scene)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
<Extension path = "/OpenSim/RegionModules">
|
<Extension path = "/OpenSim/RegionModules">
|
||||||
<RegionModule id="RegionAssetService" type="OpenSim.SimulatorServices.RegionAssetService" />
|
<RegionModule id="RegionAssetService" type="OpenSim.SimulatorServices.RegionAssetService" />
|
||||||
|
<RegionModule id="RegionInventoryService" type="OpenSim.SimulatorServices.RegionInventoryService" />
|
||||||
</Extension>
|
</Extension>
|
||||||
|
|
||||||
</Addin>
|
</Addin>
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[AssetCache]
|
||||||
|
;;
|
||||||
|
;; Options for CenmoeAssetCache
|
||||||
|
;;
|
||||||
|
|
||||||
|
; 256 MB (default: 134217728)
|
||||||
|
MaxSize = 268435456
|
||||||
|
|
||||||
|
; How many assets it is possible to store cache (default: 4096)
|
||||||
|
MaxCount = 16384
|
||||||
|
|
||||||
|
; Expiration time - 1 hour (default: 30 minutes)
|
||||||
|
ExpirationTime = 60
|
|
@ -0,0 +1,39 @@
|
||||||
|
[AssetCache]
|
||||||
|
;;
|
||||||
|
;; Options for FlotsamAssetCache
|
||||||
|
;;
|
||||||
|
|
||||||
|
; cache directory can be shared by multiple instances
|
||||||
|
CacheDirectory = ./assetcache
|
||||||
|
; Other examples:
|
||||||
|
;CacheDirectory = /directory/writable/by/OpenSim/instance
|
||||||
|
|
||||||
|
; Log level
|
||||||
|
; 0 - (Error) Errors only
|
||||||
|
; 1 - (Info) Hit Rate Stats + Level 0
|
||||||
|
; 2 - (Debug) Cache Activity (Reads/Writes) + Level 1
|
||||||
|
;
|
||||||
|
LogLevel = 0
|
||||||
|
|
||||||
|
; How often should hit rates be displayed (given in AssetRequests)
|
||||||
|
; 0 to disable
|
||||||
|
HitRateDisplay = 100
|
||||||
|
|
||||||
|
; Set to false for disk cache only.
|
||||||
|
MemoryCacheEnabled = true
|
||||||
|
|
||||||
|
; How long {in hours} to keep assets cached in memory, .5 == 30 minutes
|
||||||
|
MemoryCacheTimeout = 2
|
||||||
|
|
||||||
|
; How long {in hours} to keep assets cached on disk, .5 == 30 minutes
|
||||||
|
; Specify 0 if you do not want your disk cache to expire
|
||||||
|
FileCacheTimeout = 0
|
||||||
|
|
||||||
|
; How often {in hours} should the disk be checked for expired filed
|
||||||
|
; Specify 0 to disable expiration checking
|
||||||
|
FileCleanupTimer = .166 ;roughly every 10 minutes
|
||||||
|
|
||||||
|
; If WAIT_ON_INPROGRESS_REQUESTS has been defined then this specifies how
|
||||||
|
; long (in miliseconds) to block a request thread while trying to complete
|
||||||
|
; an existing write to disk.
|
||||||
|
; WaitOnInprogressTimeout = 3000
|
|
@ -1,7 +1,13 @@
|
||||||
|
;;
|
||||||
|
;; Please don't change this file.
|
||||||
|
;; All optional settings are in GridCommon.ini.example,
|
||||||
|
;; which you can copy and change.
|
||||||
|
;;
|
||||||
|
|
||||||
[Includes]
|
[Includes]
|
||||||
Include-Common = "config-include/GridCommon.ini"
|
Include-Common = "config-include/GridCommon.ini"
|
||||||
Include-Stable = "config-include/StableSettings.ini"
|
|
||||||
|
|
||||||
[Modules]
|
[Modules]
|
||||||
AssetServices = "RemoteAssetServicesConnector"
|
AssetServices = "RemoteAssetServicesConnector"
|
||||||
|
InventoryServices = "RemoteInventoryServicesConnector"
|
||||||
|
|
||||||
|
|
|
@ -1,43 +1,3 @@
|
||||||
[Modules]
|
|
||||||
;AssetCaching = "CoreAssetCache"
|
|
||||||
;AssetCaching = "GlynnTuckerAssetCache"
|
|
||||||
;AssetCaching = "CenomeMemoryAssetCache"
|
|
||||||
AssetCaching = "FlotsamAssetCache"
|
|
||||||
|
|
||||||
[AssetCache]
|
|
||||||
; cache directory can be shared by multiple instances
|
|
||||||
CacheDirectory = /directory/writable/by/OpenSim/instance
|
|
||||||
|
|
||||||
; Log level
|
|
||||||
; 0 - (Error) Errors only
|
|
||||||
; 1 - (Info) Hit Rate Stats + Level 0
|
|
||||||
; 2 - (Debug) Cache Activity (Reads/Writes) + Level 1
|
|
||||||
;
|
|
||||||
LogLevel = 0
|
|
||||||
|
|
||||||
; How often should hit rates be displayed (given in AssetRequests)
|
|
||||||
; 0 to disable
|
|
||||||
HitRateDisplay = 100
|
|
||||||
|
|
||||||
; Set to false for disk cache only.
|
|
||||||
MemoryCacheEnabled = true
|
|
||||||
|
|
||||||
; How long {in hours} to keep assets cached in memory, .5 == 30 minutes
|
|
||||||
MemoryCacheTimeout = 2
|
|
||||||
|
|
||||||
; How long {in hours} to keep assets cached on disk, .5 == 30 minutes
|
|
||||||
; Specify 0 if you do not want your disk cache to expire
|
|
||||||
FileCacheTimeout = 0
|
|
||||||
|
|
||||||
; How often {in hours} should the disk be checked for expired filed
|
|
||||||
; Specify 0 to disable expiration checking
|
|
||||||
FileCleanupTimer = .166 ;roughly every 10 minutes
|
|
||||||
|
|
||||||
; If WAIT_ON_INPROGRESS_REQUESTS has been defined then this specifies how
|
|
||||||
; long (in miliseconds) to block a request thread while trying to complete
|
|
||||||
; an existing write to disk.
|
|
||||||
; WaitOnInprogressTimeout = 3000
|
|
||||||
|
|
||||||
[AssetService]
|
[AssetService]
|
||||||
|
|
||||||
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
|
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
|
||||||
|
@ -48,3 +8,21 @@
|
||||||
;
|
;
|
||||||
AssetServerURI = "http://myassetserver.com:8003"
|
AssetServerURI = "http://myassetserver.com:8003"
|
||||||
|
|
||||||
|
[InventoryService]
|
||||||
|
;
|
||||||
|
; change this to your grid-wide asset server
|
||||||
|
;
|
||||||
|
InventoryServerURI = "http://myassetserver.com:8004"
|
||||||
|
|
||||||
|
|
||||||
|
[Modules]
|
||||||
|
;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists.
|
||||||
|
;; Copy the config .example file into your own .ini file and change configs there
|
||||||
|
|
||||||
|
AssetCaching = "FlotsamAssetCache"
|
||||||
|
Include-FlotsamCache = "config-include/FlotsamCache.ini"
|
||||||
|
|
||||||
|
;AssetCaching = "CenomeMemoryAssetCache"
|
||||||
|
;Include-CenomeCache = "config-include/CenomeCache.ini"
|
||||||
|
|
||||||
|
;AssetCaching = "GlynnTuckerAssetCache"
|
||||||
|
|
|
@ -1,11 +1,20 @@
|
||||||
|
;;
|
||||||
|
;; Please don't change this file.
|
||||||
|
;; All optional settings are in GridCommon.ini.example,
|
||||||
|
;; which you can copy and change.
|
||||||
|
;;
|
||||||
|
|
||||||
[Includes]
|
[Includes]
|
||||||
Include-Common = "config-include/GridCommon.ini"
|
Include-Common = "config-include/GridCommon.ini"
|
||||||
Include-Stable = "config-include/StableSettings.ini"
|
|
||||||
|
|
||||||
[Modules]
|
[Modules]
|
||||||
AssetServices = "HGAssetBroker"
|
AssetServices = "HGAssetBroker"
|
||||||
|
InventoryServices = "HGInventoryBroker"
|
||||||
|
|
||||||
[AssetService]
|
[AssetService]
|
||||||
LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"
|
LocalGridAssetService = "OpenSim.Services.Connectors.dll:AssetServicesConnector"
|
||||||
HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService"
|
HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService"
|
||||||
|
|
||||||
|
[InventoryService]
|
||||||
|
LocalGridInventoryService = "OpenSim.Services.Connectors.dll:InventoryServicesConnector"
|
||||||
|
HypergridInventoryService = "OpenSim.Services.InventoryService.dll:HGInventoryService"
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
[AssetCache]
|
|
||||||
;; ---- Optional configurations for CoreAssetCache
|
|
||||||
; Number of buckets for assets
|
|
||||||
;CacheBuckets = 32768
|
|
||||||
;; ---- endof CoreAssetCache ----------------
|
|
||||||
|
|
||||||
;; ---- Optional configurations for CenomeMemoryAssetCache
|
|
||||||
; Cache size 128 MB (default: 134217728)
|
|
||||||
; MaxSize = 134217728
|
|
||||||
; Maximal asset count
|
|
||||||
; MaxCount = 4096
|
|
||||||
; Asset's expiration time (minutes)
|
|
||||||
; ExpirationTime = 30
|
|
||||||
;; ---- endof CenomeMemoryAssetCache --------
|
|
||||||
|
|
||||||
;; ---- Optional configurations for FlotsamAssetCache
|
|
||||||
|
|
||||||
; Set to false for disk cache only.
|
|
||||||
MemoryCacheEnabled = true
|
|
||||||
|
|
||||||
; How long {in hours} to keep assets cached in memory, .5 == 30 minutes
|
|
||||||
MemoryCacheTimeout = 2
|
|
||||||
|
|
||||||
; How often {in hours} should the disk be checked for expired filed
|
|
||||||
; Specify 0 to disable expiration checking
|
|
||||||
FileCleanupTimer = .166 ;roughly every 10 minutes
|
|
||||||
|
|
||||||
;; ---- endof FlotsamAssetCache --------
|
|
|
@ -1,11 +1,20 @@
|
||||||
|
;;
|
||||||
|
;; Please don't change this file.
|
||||||
|
;; All optional settings are in StandaloneCommon.ini.example,
|
||||||
|
;; which you can copy and change.
|
||||||
|
;;
|
||||||
|
|
||||||
[Includes]
|
[Includes]
|
||||||
Include-Common = "config-include/StandaloneCommon.ini"
|
Include-Common = "config-include/StandaloneCommon.ini"
|
||||||
Include-Stable = "config-include/StableSettings.ini"
|
Include-Stable = "config-include/StableSettings.ini"
|
||||||
|
|
||||||
[Modules]
|
[Modules]
|
||||||
AssetServices = "LocalAssetServicesConnector"
|
AssetServices = "LocalAssetServicesConnector"
|
||||||
|
InventoryServices = "LocalInventoryServicesConnector"
|
||||||
|
|
||||||
|
|
||||||
[AssetService]
|
[AssetService]
|
||||||
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
|
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
|
||||||
|
|
||||||
|
[InventoryService]
|
||||||
|
LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
[Modules]
|
[DatabaseService]
|
||||||
;AssetCaching = "CoreAssetCache"
|
|
||||||
;AssetCaching = "GlynnTuckerAssetCache"
|
|
||||||
AssetCaching = "CenomeMemoryAssetCache"
|
|
||||||
|
|
||||||
[AssetService]
|
|
||||||
;
|
;
|
||||||
;### Choose the DB
|
;### Choose the DB
|
||||||
;
|
;
|
||||||
|
@ -13,6 +8,20 @@
|
||||||
;StorageProvider = "OpenSim.Data.MySQL.dll"
|
;StorageProvider = "OpenSim.Data.MySQL.dll"
|
||||||
;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;"
|
;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;"
|
||||||
|
|
||||||
|
[AssetService]
|
||||||
|
|
||||||
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
|
DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
|
||||||
AssetLoaderArgs = "assets/AssetSets.xml"
|
AssetLoaderArgs = "assets/AssetSets.xml"
|
||||||
|
|
||||||
|
|
||||||
|
[Modules]
|
||||||
|
;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists.
|
||||||
|
;; Copy the config .example file into your own .ini file and change configs there
|
||||||
|
|
||||||
|
;AssetCaching = "GlynnTuckerAssetCache"
|
||||||
|
|
||||||
|
;AssetCaching = "FlotsamAssetCache"
|
||||||
|
;Include-FlotsamCache = "config-include/FlotsamCache.ini"
|
||||||
|
|
||||||
|
AssetCaching = "CenomeMemoryAssetCache"
|
||||||
|
Include-CenomeCache = "config-include/CenomeCache.ini"
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
|
;;
|
||||||
|
;; Please don't change this file.
|
||||||
|
;; All optional settings are in StandaloneCommon.ini.example,
|
||||||
|
;; which you can copy and change.
|
||||||
|
;;
|
||||||
|
|
||||||
[Includes]
|
[Includes]
|
||||||
Include-Common = "config-include/StandaloneCommon.ini"
|
Include-Common = "config-include/StandaloneCommon.ini"
|
||||||
Include-Stable = "config-include/StableSettings.ini"
|
|
||||||
|
|
||||||
[Modules]
|
[Modules]
|
||||||
AssetServices = "HGAssetBroker"
|
AssetServices = "HGAssetBroker"
|
||||||
|
InventoryServices = "HGInventoryBroker"
|
||||||
|
|
||||||
|
|
||||||
[AssetService]
|
[AssetService]
|
||||||
|
@ -14,3 +20,10 @@
|
||||||
LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService"
|
LocalGridAssetService = "OpenSim.Services.AssetService.dll:AssetService"
|
||||||
HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService"
|
HypergridAssetService = "OpenSim.Services.AssetService.dll:HGAssetService"
|
||||||
|
|
||||||
|
[InventoryService]
|
||||||
|
; For the RegionInventoryService
|
||||||
|
LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
|
||||||
|
|
||||||
|
; For HGInventoryBroker
|
||||||
|
LocalGridInventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
|
||||||
|
HypergridInventoryService = "OpenSim.Services.InventoryService.dll:HGInventoryService"
|
||||||
|
|
|
@ -3554,6 +3554,7 @@
|
||||||
<Reference name="OpenSim.Client.Linden"/>
|
<Reference name="OpenSim.Client.Linden"/>
|
||||||
<Reference name="OpenSim.Framework"/>
|
<Reference name="OpenSim.Framework"/>
|
||||||
<Reference name="OpenSim.Framework.Communications"/>
|
<Reference name="OpenSim.Framework.Communications"/>
|
||||||
|
<Reference name="OpenSim.Services.Interfaces"/>
|
||||||
<Reference name="OpenSim.Data"/>
|
<Reference name="OpenSim.Data"/>
|
||||||
<Reference name="OpenSim.Region.Communications.Local"/>
|
<Reference name="OpenSim.Region.Communications.Local"/>
|
||||||
<Reference name="OpenSim.Tests.Common"/>
|
<Reference name="OpenSim.Tests.Common"/>
|
||||||
|
|
Loading…
Reference in New Issue