Merge branch 'master' into careminster-presence-refactor

This commit is contained in:
Melanie
2010-05-08 13:31:36 +01:00
52 changed files with 1760 additions and 730 deletions

View File

@@ -44,9 +44,9 @@ namespace OpenSim.Data.MySQL
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public MySQLGridUserData(string connectionString, string realm) : base(connectionString, realm, "UserGrid") {}
public MySQLGridUserData(string connectionString, string realm) : base(connectionString, realm, "GridUserStore") {}
public GridUserData GetGridUserData(string userID)
public GridUserData Get(string userID)
{
GridUserData[] ret = Get("UserID", userID);
@@ -56,9 +56,6 @@ namespace OpenSim.Data.MySQL
return ret[0];
}
public bool StoreGridUserData(GridUserData data)
{
return Store(data);
}
}
}

View File

@@ -65,15 +65,14 @@ namespace OpenSim.Data.MySQL
{
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = String.Format("update {0} set Online='false' where `RegionID`=?RegionID", m_Realm);
cmd.CommandText = String.Format("delete from {0} where `RegionID`=?RegionID", m_Realm);
cmd.Parameters.AddWithValue("?RegionID", regionID.ToString());
ExecuteNonQuery(cmd);
}
public bool ReportAgent(UUID sessionID, UUID regionID, string position,
string lookAt)
public bool ReportAgent(UUID sessionID, UUID regionID)
{
PresenceData[] pd = Get("SessionID", sessionID.ToString());
if (pd.Length == 0)
@@ -81,12 +80,10 @@ namespace OpenSim.Data.MySQL
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = String.Format("update {0} set RegionID=?RegionID, Position=?Position, LookAt=?LookAt, Online='true' where `SessionID`=?SessionID", m_Realm);
cmd.CommandText = String.Format("update {0} set RegionID=?RegionID where `SessionID`=?SessionID", m_Realm);
cmd.Parameters.AddWithValue("?SessionID", sessionID.ToString());
cmd.Parameters.AddWithValue("?RegionID", regionID.ToString());
cmd.Parameters.AddWithValue("?Position", position.ToString());
cmd.Parameters.AddWithValue("?LookAt", lookAt.ToString());
if (ExecuteNonQuery(cmd) == 0)
return false;
@@ -94,62 +91,5 @@ namespace OpenSim.Data.MySQL
return true;
}
public bool SetHomeLocation(string userID, UUID regionID, Vector3 position, Vector3 lookAt)
{
PresenceData[] pd = Get("UserID", userID);
if (pd.Length == 0)
return false;
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = String.Format("update {0} set HomeRegionID=?HomeRegionID, HomePosition=?HomePosition, HomeLookAt=?HomeLookAt where UserID=?UserID", m_Realm);
cmd.Parameters.AddWithValue("?UserID", userID);
cmd.Parameters.AddWithValue("?HomeRegionID", regionID.ToString());
cmd.Parameters.AddWithValue("?HomePosition", position);
cmd.Parameters.AddWithValue("?HomeLookAt", lookAt);
if (ExecuteNonQuery(cmd) == 0)
return false;
return true;
}
public void Prune(string userID)
{
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = String.Format("select * from {0} where UserID=?UserID", m_Realm);
cmd.Parameters.AddWithValue("?UserID", userID);
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
{
dbcon.Open();
cmd.Connection = dbcon;
using (IDataReader reader = cmd.ExecuteReader())
{
List<UUID> deleteSessions = new List<UUID>();
int online = 0;
while (reader.Read())
{
if (bool.Parse(reader["Online"].ToString()))
online++;
else
deleteSessions.Add(new UUID(reader["SessionID"].ToString()));
}
// Leave one session behind so that we can pick up details such as home location
if (online == 0 && deleteSessions.Count > 0)
deleteSessions.RemoveAt(0);
foreach (UUID s in deleteSessions)
Delete("SessionID", s.ToString());
}
}
}
}
}

View File

@@ -0,0 +1,17 @@
BEGIN;
CREATE TABLE `GridUser` (
`UserID` VARCHAR(255) NOT NULL,
`HomeRegionID` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000',
`HomePosition` CHAR(64) NOT NULL DEFAULT '<0,0,0>',
`HomeLookAt` CHAR(64) NOT NULL DEFAULT '<0,0,0>',
`LastRegionID` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000',
`LastPosition` CHAR(64) NOT NULL DEFAULT '<0,0,0>',
`LastLookAt` CHAR(64) NOT NULL DEFAULT '<0,0,0>',
`Online` CHAR(5) NOT NULL DEFAULT 'false',
`Login` CHAR(16) NOT NULL DEFAULT '0',
`Logout` CHAR(16) NOT NULL DEFAULT '0',
PRIMARY KEY (`UserID`)
) ENGINE=InnoDB;
COMMIT;

View File

@@ -4,12 +4,10 @@ CREATE TABLE `Presence` (
`UserID` VARCHAR(255) NOT NULL,
`RegionID` CHAR(36) NOT NULL,
`SessionID` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000',
`SecureSessionID` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000',
`Online` CHAR(5) NOT NULL DEFAULT 'false',
`Login` CHAR(16) NOT NULL DEFAULT '0',
`Logout` CHAR(16) NOT NULL DEFAULT '0',
`Position` CHAR(64) NOT NULL DEFAULT '<0,0,0>',
`LookAt` CHAR(64) NOT NULL DEFAULT '<0,0,0>'
`SecureSessionID` CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'
) ENGINE=InnoDB;
CREATE UNIQUE INDEX SessionID ON Presence(SessionID);
CREATE INDEX UserID ON Presence(UserID);
COMMIT;

View File

@@ -1,7 +0,0 @@
BEGIN;
ALTER TABLE Presence ADD COLUMN `HomeRegionID` CHAR(36) NOT NULL;
ALTER TABLE Presence ADD COLUMN `HomePosition` CHAR(64) NOT NULL DEFAULT '<0,0,0>';
ALTER TABLE Presence ADD COLUMN `HomeLookAt` CHAR(64) NOT NULL DEFAULT '<0,0,0>';
COMMIT;

View File

@@ -1,6 +0,0 @@
BEGIN;
CREATE UNIQUE INDEX SessionID ON Presence(SessionID);
CREATE INDEX UserID ON Presence(UserID);
COMMIT;