From 3de3d8bb3ba9b0781a2078c8698816ae5b72f7b1 Mon Sep 17 00:00:00 2001 From: gareth Date: Mon, 7 May 2007 16:32:30 +0000 Subject: Merged 0.1-prestable back into trunk :( --- OpenGrid.Framework.Data.DB4o/DB4oGridData.cs | 22 +++---- OpenGrid.Framework.Data.DB4o/DB4oManager.cs | 68 ++++++++++++++++++++-- .../OpenGrid.Framework.Data.DB4o.csproj | 38 +++++++----- 3 files changed, 97 insertions(+), 31 deletions(-) (limited to 'OpenGrid.Framework.Data.DB4o') diff --git a/OpenGrid.Framework.Data.DB4o/DB4oGridData.cs b/OpenGrid.Framework.Data.DB4o/DB4oGridData.cs index c853b50..caf7eb0 100644 --- a/OpenGrid.Framework.Data.DB4o/DB4oGridData.cs +++ b/OpenGrid.Framework.Data.DB4o/DB4oGridData.cs @@ -9,20 +9,20 @@ namespace OpenGrid.Framework.Data.DB4o { class DB4oGridData : IGridData { - DB4oManager manager; + DB4oGridManager manager; public void Initialise() { - manager = new DB4oManager("gridserver.yap"); + manager = new DB4oGridManager("gridserver.yap"); } public SimProfileData GetProfileByHandle(ulong handle) { - lock (manager.profiles) + lock (manager.simProfiles) { - foreach (LLUUID UUID in manager.profiles.Keys) + foreach (LLUUID UUID in manager.simProfiles.Keys) { - if (manager.profiles[UUID].regionHandle == handle) + if (manager.simProfiles[UUID].regionHandle == handle) { - return manager.profiles[UUID]; + return manager.simProfiles[UUID]; } } } @@ -31,17 +31,17 @@ namespace OpenGrid.Framework.Data.DB4o public SimProfileData GetProfileByLLUUID(LLUUID uuid) { - lock (manager.profiles) + lock (manager.simProfiles) { - if (manager.profiles.ContainsKey(uuid)) - return manager.profiles[uuid]; + if (manager.simProfiles.ContainsKey(uuid)) + return manager.simProfiles[uuid]; } throw new Exception("Unable to find profile with UUID (" + uuid.ToStringHyphenated() + ")"); } public DataResponse AddProfile(SimProfileData profile) { - lock (manager.profiles) + lock (manager.simProfiles) { if (manager.AddRow(profile)) { @@ -55,7 +55,7 @@ namespace OpenGrid.Framework.Data.DB4o } public bool AuthenticateSim(LLUUID uuid, ulong handle, string key) { - if (manager.profiles[uuid].regionRecvKey == key) + if (manager.simProfiles[uuid].regionRecvKey == key) return true; return false; } diff --git a/OpenGrid.Framework.Data.DB4o/DB4oManager.cs b/OpenGrid.Framework.Data.DB4o/DB4oManager.cs index 3ebcee2..aaa6e91 100644 --- a/OpenGrid.Framework.Data.DB4o/DB4oManager.cs +++ b/OpenGrid.Framework.Data.DB4o/DB4oManager.cs @@ -7,19 +7,19 @@ using libsecondlife; namespace OpenGrid.Framework.Data.DB4o { - class DB4oManager + class DB4oGridManager { - public Dictionary profiles = new Dictionary(); + public Dictionary simProfiles = new Dictionary(); string dbfl; - public DB4oManager(string db4odb) + public DB4oGridManager(string db4odb) { dbfl = db4odb; IObjectContainer database; database = Db4oFactory.OpenFile(dbfl); IObjectSet result = database.Get(typeof(SimProfileData)); foreach(SimProfileData row in result) { - profiles.Add(row.UUID, row); + simProfiles.Add(row.UUID, row); } database.Close(); } @@ -31,7 +31,65 @@ namespace OpenGrid.Framework.Data.DB4o /// Successful? public bool AddRow(SimProfileData row) { - profiles.Add(row.UUID, row); + if (simProfiles.ContainsKey(row.UUID)) + { + simProfiles[row.UUID] = row; + } + else + { + simProfiles.Add(row.UUID, row); + } + + try + { + IObjectContainer database; + database = Db4oFactory.OpenFile(dbfl); + database.Set(row); + database.Close(); + return true; + } + catch (Exception e) + { + return false; + } + } + + + } + + class DB4oUserManager + { + public Dictionary userProfiles = new Dictionary(); + string dbfl; + + public DB4oUserManager(string db4odb) + { + dbfl = db4odb; + IObjectContainer database; + database = Db4oFactory.OpenFile(dbfl); + IObjectSet result = database.Get(typeof(UserProfileData)); + foreach (UserProfileData row in result) + { + userProfiles.Add(row.UUID, row); + } + database.Close(); + } + + /// + /// Adds a new profile to the database (Warning: Probably slow.) + /// + /// The profile to add + /// Successful? + public bool AddRow(UserProfileData row) + { + if (userProfiles.ContainsKey(row.UUID)) + { + userProfiles[row.UUID] = row; + } + else + { + userProfiles.Add(row.UUID, row); + } try { diff --git a/OpenGrid.Framework.Data.DB4o/OpenGrid.Framework.Data.DB4o.csproj b/OpenGrid.Framework.Data.DB4o/OpenGrid.Framework.Data.DB4o.csproj index 45a2d44..6ef93c2 100644 --- a/OpenGrid.Framework.Data.DB4o/OpenGrid.Framework.Data.DB4o.csproj +++ b/OpenGrid.Framework.Data.DB4o/OpenGrid.Framework.Data.DB4o.csproj @@ -1,4 +1,4 @@ - + Local 8.0.50727 @@ -6,7 +6,8 @@ {39BD9497-0000-0000-0000-000000000000} Debug AnyCPU - + + OpenGrid.Framework.Data.DB4o @@ -15,9 +16,11 @@ IE50 false Library - + + OpenGrid.Framework.Data.DB4o - + + @@ -28,7 +31,8 @@ TRACE;DEBUG - + + True 4096 False @@ -37,7 +41,8 @@ False False 4 - + + False @@ -46,7 +51,8 @@ TRACE - + + False 4096 True @@ -55,26 +61,27 @@ False False 4 - + + - + System.dll False - + System.Xml.dll False - + System.Data.dll False - + ..\bin\libsecondlife.dll False - + ..\bin\Db4objects.Db4o.dll False @@ -84,7 +91,7 @@ OpenGrid.Framework.Data {62CDF671-0000-0000-0000-000000000000} {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - False + False @@ -94,6 +101,7 @@ Code + Code @@ -105,4 +113,4 @@ - + \ No newline at end of file -- cgit v1.1