From 29355de6ee01b1f44f32ea45b9c06f636ae9a241 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Mon, 13 Apr 2009 20:04:18 +0000 Subject: * Some more experimental work on distributed assets. Nothing hotwired yet. * Introduced preprocess step in FetchAsset (Might revert this later) * Some minor CCC * Added actual implementation of GetUserProfile( uri ) and the corresponding handler to OGS1. * Introduced non-functioning GetUserUri( userProfile) awaiting user server wireup (this might move elsewhere) --- OpenSim/Data/AssetDataBase.cs | 11 +++- OpenSim/Data/MSSQL/MSSQLAssetData.cs | 78 +++++++++++++------------- OpenSim/Data/MySQL/MySQLAssetData.cs | 36 ++++++------ OpenSim/Data/NHibernate/NHibernateAssetData.cs | 2 +- OpenSim/Data/SQLite/SQLiteAssetData.cs | 2 +- 5 files changed, 70 insertions(+), 59 deletions(-) (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/AssetDataBase.cs b/OpenSim/Data/AssetDataBase.cs index d699f17..e67d9cb 100644 --- a/OpenSim/Data/AssetDataBase.cs +++ b/OpenSim/Data/AssetDataBase.cs @@ -25,7 +25,10 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using System; using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; using OpenMetaverse; using OpenSim.Framework; @@ -33,7 +36,13 @@ namespace OpenSim.Data { public abstract class AssetDataBase : IAssetDataPlugin { - public abstract AssetBase FetchAsset(UUID uuid); + public virtual AssetBase FetchAsset(UUID uuid) + { + return FetchStoredAsset(uuid); + } + + protected abstract AssetBase FetchStoredAsset(UUID uuid); + public abstract void CreateAsset(AssetBase asset); public abstract void UpdateAsset(AssetBase asset); public abstract bool ExistsAsset(UUID uuid); diff --git a/OpenSim/Data/MSSQL/MSSQLAssetData.cs b/OpenSim/Data/MSSQL/MSSQLAssetData.cs index 54578bc..927b02b 100644 --- a/OpenSim/Data/MSSQL/MSSQLAssetData.cs +++ b/OpenSim/Data/MSSQL/MSSQLAssetData.cs @@ -43,11 +43,11 @@ namespace OpenSim.Data.MSSQL private const string _migrationStore = "AssetStore"; private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private long TicksToEpoch; + private long m_ticksToEpoch; /// /// Database manager /// - private MSSQLManager database; + private MSSQLManager m_database; #region IPlugin Members @@ -72,11 +72,11 @@ namespace OpenSim.Data.MSSQL /// connect string override public void Initialise(string connectionString) { - TicksToEpoch = new System.DateTime(1970, 1, 1).Ticks; + m_ticksToEpoch = new System.DateTime(1970, 1, 1).Ticks; if (!string.IsNullOrEmpty(connectionString)) { - database = new MSSQLManager(connectionString); + m_database = new MSSQLManager(connectionString); } else { @@ -88,13 +88,13 @@ namespace OpenSim.Data.MSSQL string settingUserId = gridDataMSSqlFile.ParseFileReadValue("user_id"); string settingPassword = gridDataMSSqlFile.ParseFileReadValue("password"); - database = + m_database = new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, settingPassword); } //New migration to check for DB changes - database.CheckMigration(_migrationStore); + m_database.CheckMigration(_migrationStore); } /// @@ -102,7 +102,7 @@ namespace OpenSim.Data.MSSQL /// override public string Version { - get { return database.getVersion(); } + get { return m_database.getVersion(); } } /// @@ -118,15 +118,15 @@ namespace OpenSim.Data.MSSQL #region IAssetDataPlugin Members /// - /// Fetch Asset from database + /// Fetch Asset from m_database /// /// the asset UUID /// - override public AssetBase FetchAsset(UUID assetID) + override protected AssetBase FetchStoredAsset(UUID assetID) { - using (AutoClosingSqlCommand command = database.Query("SELECT * FROM assets WHERE id = @id")) + using (AutoClosingSqlCommand command = m_database.Query("SELECT * FROM assets WHERE id = @id")) { - command.Parameters.Add(database.CreateParameter("id", assetID)); + command.Parameters.Add(m_database.CreateParameter("id", assetID)); using (IDataReader reader = command.ExecuteReader()) { if (reader.Read()) @@ -148,7 +148,7 @@ namespace OpenSim.Data.MSSQL } /// - /// Create asset in database + /// Create asset in m_database /// /// the asset override public void CreateAsset(AssetBase asset) @@ -158,33 +158,33 @@ namespace OpenSim.Data.MSSQL return; } - using (AutoClosingSqlCommand command = database.Query( + using (AutoClosingSqlCommand command = m_database.Query( "INSERT INTO assets ([id], [name], [description], [assetType], [local], [temporary], [create_time], [access_time], [data])" + " VALUES " + "(@id, @name, @description, @assetType, @local, @temporary, @create_time, @access_time, @data)")) { - int now = (int)((System.DateTime.Now.Ticks - TicksToEpoch) / 10000000); - command.Parameters.Add(database.CreateParameter("id", asset.FullID)); - command.Parameters.Add(database.CreateParameter("name", asset.Name)); - command.Parameters.Add(database.CreateParameter("description", asset.Description)); - command.Parameters.Add(database.CreateParameter("assetType", asset.Type)); - command.Parameters.Add(database.CreateParameter("local", asset.Local)); - command.Parameters.Add(database.CreateParameter("temporary", asset.Temporary)); - command.Parameters.Add(database.CreateParameter("access_time", now)); - command.Parameters.Add(database.CreateParameter("create_time", now)); - command.Parameters.Add(database.CreateParameter("data", asset.Data)); + int now = (int)((System.DateTime.Now.Ticks - m_ticksToEpoch) / 10000000); + command.Parameters.Add(m_database.CreateParameter("id", asset.FullID)); + command.Parameters.Add(m_database.CreateParameter("name", asset.Name)); + command.Parameters.Add(m_database.CreateParameter("description", asset.Description)); + command.Parameters.Add(m_database.CreateParameter("assetType", asset.Type)); + command.Parameters.Add(m_database.CreateParameter("local", asset.Local)); + command.Parameters.Add(m_database.CreateParameter("temporary", asset.Temporary)); + command.Parameters.Add(m_database.CreateParameter("access_time", now)); + command.Parameters.Add(m_database.CreateParameter("create_time", now)); + command.Parameters.Add(m_database.CreateParameter("data", asset.Data)); command.ExecuteNonQuery(); } } /// - /// Update asset in database + /// Update asset in m_database /// /// the asset override public void UpdateAsset(AssetBase asset) { - using (AutoClosingSqlCommand command = database.Query("UPDATE assets set id = @id, " + + using (AutoClosingSqlCommand command = m_database.Query("UPDATE assets set id = @id, " + "name = @name, " + "description = @description," + "assetType = @assetType," + @@ -193,14 +193,14 @@ namespace OpenSim.Data.MSSQL "data = @data where " + "id = @keyId;")) { - command.Parameters.Add(database.CreateParameter("id", asset.FullID)); - command.Parameters.Add(database.CreateParameter("name", asset.Name)); - command.Parameters.Add(database.CreateParameter("description", asset.Description)); - command.Parameters.Add(database.CreateParameter("assetType", asset.Type)); - command.Parameters.Add(database.CreateParameter("local", asset.Local)); - command.Parameters.Add(database.CreateParameter("temporary", asset.Temporary)); - command.Parameters.Add(database.CreateParameter("data", asset.Data)); - command.Parameters.Add(database.CreateParameter("@keyId", asset.FullID)); + command.Parameters.Add(m_database.CreateParameter("id", asset.FullID)); + command.Parameters.Add(m_database.CreateParameter("name", asset.Name)); + command.Parameters.Add(m_database.CreateParameter("description", asset.Description)); + command.Parameters.Add(m_database.CreateParameter("assetType", asset.Type)); + command.Parameters.Add(m_database.CreateParameter("local", asset.Local)); + command.Parameters.Add(m_database.CreateParameter("temporary", asset.Temporary)); + command.Parameters.Add(m_database.CreateParameter("data", asset.Data)); + command.Parameters.Add(m_database.CreateParameter("@keyId", asset.FullID)); try { @@ -216,9 +216,9 @@ namespace OpenSim.Data.MSSQL // Commented out since currently unused - this probably should be called in FetchAsset() // private void UpdateAccessTime(AssetBase asset) // { -// using (AutoClosingSqlCommand cmd = database.Query("UPDATE assets SET access_time = @access_time WHERE id=@id")) +// using (AutoClosingSqlCommand cmd = m_database.Query("UPDATE assets SET access_time = @access_time WHERE id=@id")) // { -// int now = (int)((System.DateTime.Now.Ticks - TicksToEpoch) / 10000000); +// int now = (int)((System.DateTime.Now.Ticks - m_ticksToEpoch) / 10000000); // cmd.Parameters.AddWithValue("@id", asset.FullID.ToString()); // cmd.Parameters.AddWithValue("@access_time", now); // try @@ -233,7 +233,7 @@ namespace OpenSim.Data.MSSQL // } /// - /// Check if asset exist in database + /// Check if asset exist in m_database /// /// /// true if exist. @@ -258,10 +258,10 @@ namespace OpenSim.Data.MSSQL { List retList = new List(count); - using (AutoClosingSqlCommand command = database.Query("SELECT (name,description,assetType,temporary,id), Row = ROW_NUMBER() OVER (ORDER BY (some column to order by)) WHERE Row >= @Start AND Row < @Start + @Count")) + using (AutoClosingSqlCommand command = m_database.Query("SELECT (name,description,assetType,temporary,id), Row = ROW_NUMBER() OVER (ORDER BY (some column to order by)) WHERE Row >= @Start AND Row < @Start + @Count")) { - command.Parameters.Add(database.CreateParameter("start", start)); - command.Parameters.Add(database.CreateParameter("count", count)); + command.Parameters.Add(m_database.CreateParameter("start", start)); + command.Parameters.Add(m_database.CreateParameter("count", count)); using (IDataReader reader = command.ExecuteReader()) { diff --git a/OpenSim/Data/MySQL/MySQLAssetData.cs b/OpenSim/Data/MySQL/MySQLAssetData.cs index 20b2673..cc16389 100644 --- a/OpenSim/Data/MySQL/MySQLAssetData.cs +++ b/OpenSim/Data/MySQL/MySQLAssetData.cs @@ -109,6 +109,24 @@ namespace OpenSim.Data.MySQL public override void Dispose() { } + /// + /// Database provider version + /// + override public string Version + { + get { return _dbConnection.getVersion(); } + } + + /// + /// The name of this DB provider + /// + override public string Name + { + get { return "MySQL Asset storage engine"; } + } + + #endregion + #region IAssetDataPlugin Members /// @@ -117,7 +135,7 @@ namespace OpenSim.Data.MySQL /// Asset UUID to fetch /// Return the asset /// On failure : throw an exception and attempt to reconnect to database - override public AssetBase FetchAsset(UUID assetID) + override protected AssetBase FetchStoredAsset(UUID assetID) { AssetBase asset = null; lock (_dbConnection) @@ -364,22 +382,6 @@ namespace OpenSim.Data.MySQL #endregion - /// - /// Database provider version - /// - override public string Version - { - get { return _dbConnection.getVersion(); } - } - /// - /// The name of this DB provider - /// - override public string Name - { - get { return "MySQL Asset storage engine"; } - } - - #endregion } } diff --git a/OpenSim/Data/NHibernate/NHibernateAssetData.cs b/OpenSim/Data/NHibernate/NHibernateAssetData.cs index 4e8f708..6e13dbb 100644 --- a/OpenSim/Data/NHibernate/NHibernateAssetData.cs +++ b/OpenSim/Data/NHibernate/NHibernateAssetData.cs @@ -65,7 +65,7 @@ namespace OpenSim.Data.NHibernate } - override public AssetBase FetchAsset(UUID uuid) + override protected AssetBase FetchStoredAsset(UUID uuid) { return (AssetBase)manager.Get(typeof(AssetBase), uuid); } diff --git a/OpenSim/Data/SQLite/SQLiteAssetData.cs b/OpenSim/Data/SQLite/SQLiteAssetData.cs index d3f1308..41a75a3 100644 --- a/OpenSim/Data/SQLite/SQLiteAssetData.cs +++ b/OpenSim/Data/SQLite/SQLiteAssetData.cs @@ -90,7 +90,7 @@ namespace OpenSim.Data.SQLite /// /// UUID of ... ? /// Asset base - override public AssetBase FetchAsset(UUID uuid) + override protected AssetBase FetchStoredAsset(UUID uuid) { lock (this) { -- cgit v1.1