From 55b569069dfd6eb7c87d4fbd66d68083878f6c65 Mon Sep 17 00:00:00 2001
From: Sean Dague
Date: Tue, 31 Jul 2007 14:42:50 +0000
Subject: clear userAgent state on client shutdown, which fixes the issue where
you could only login once with a given id in standalone mode.
---
OpenSim/Framework/Data.DB4o/DB4oManager.cs | 23 +++++++++++++----------
OpenSim/Framework/Data.DB4o/DB4oUserData.cs | 19 ++++++++++++++++++-
2 files changed, 31 insertions(+), 11 deletions(-)
(limited to 'OpenSim/Framework/Data.DB4o')
diff --git a/OpenSim/Framework/Data.DB4o/DB4oManager.cs b/OpenSim/Framework/Data.DB4o/DB4oManager.cs
index 43f9095..0e32938 100644
--- a/OpenSim/Framework/Data.DB4o/DB4oManager.cs
+++ b/OpenSim/Framework/Data.DB4o/DB4oManager.cs
@@ -129,26 +129,31 @@ namespace OpenSim.Framework.Data.DB4o
}
///
- /// Adds a new profile to the database (Warning: Probably slow.)
+ /// Adds or updates a record to the user database. Do this when changes are needed
+ /// in the user profile that need to be persistant.
+ ///
+ /// TODO: the logic here is not ACID, the local cache will be
+ /// updated even if the persistant data is not. This may lead
+ /// to unexpected results.
///
- /// The profile to add
- /// Successful?
- public bool AddRow(UserProfileData row)
+ /// The profile to update
+ /// true on success, false on fail to persist to db
+ public bool UpdateRecord(UserProfileData record)
{
- if (userProfiles.ContainsKey(row.UUID))
+ if (userProfiles.ContainsKey(record.UUID))
{
- userProfiles[row.UUID] = row;
+ userProfiles[record.UUID] = record;
}
else
{
- userProfiles.Add(row.UUID, row);
+ userProfiles.Add(record.UUID, record);
}
try
{
IObjectContainer database;
database = Db4oFactory.OpenFile(dbfl);
- database.Set(row);
+ database.Set(record);
database.Close();
return true;
}
@@ -157,7 +162,5 @@ namespace OpenSim.Framework.Data.DB4o
return false;
}
}
-
-
}
}
diff --git a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
index 831b198..88caeb8 100644
--- a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
+++ b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
@@ -139,13 +139,30 @@ namespace OpenSim.Framework.Data.DB4o
{
try
{
- manager.AddRow(user);
+ manager.UpdateRecord(user);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
+
+ ///
+ /// Creates a new user profile
+ ///
+ /// The profile to add to the database
+ /// True on success, false on error
+ public bool updateUserProfile(UserProfileData user)
+ {
+ try {
+ return manager.UpdateRecord(user);
+ } catch (Exception e) {
+ Console.WriteLine(e.ToString());
+ return false;
+ }
+ }
+
+
///
/// Creates a new user agent
--
cgit v1.1