From 38e8853e5761d09a7e8f580dd277d9b99b834696 Mon Sep 17 00:00:00 2001 From: Homer Horwitz Date: Sat, 1 Nov 2008 22:09:48 +0000 Subject: Megapatch that fixes/adds: friend offer/deny/accept, friendship termination, on-/offline updates, calling cards for friends. This adds methods in the DB layer and changes the MessagingServer, so a full update (incl. UGAIM) is necessary to get it working. Older regions shouldn't break, nor should older UGAIM break newer regions, but friends/presence will only work with all concerned parts (UGAIM, source region and destination region) at this revision (or later). I added the DB code for MSSQL, too, but couldn't test that. BEWARE: May contain bugs. --- OpenSim/Data/MySQL/MySQLUserData.cs | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'OpenSim/Data/MySQL/MySQLUserData.cs') diff --git a/OpenSim/Data/MySQL/MySQLUserData.cs b/OpenSim/Data/MySQL/MySQLUserData.cs index e671989..c3aade0 100644 --- a/OpenSim/Data/MySQL/MySQLUserData.cs +++ b/OpenSim/Data/MySQL/MySQLUserData.cs @@ -365,6 +365,49 @@ namespace OpenSim.Data.MySQL return Lfli; } + override public Dictionary GetFriendRegionInfos (List uuids) + { + MySQLSuperManager dbm = GetLockedConnection("GetFriendRegionInfos"); + Dictionary infos = new Dictionary(); + + try + { + foreach (UUID uuid in uuids) + { + Dictionary param = new Dictionary(); + param["?uuid"] = uuid.ToString(); + IDbCommand result = + dbm.Manager.Query("select agentOnline,currentHandle from " + m_agentsTableName + + " where UUID = ?uuid", param); + + IDataReader reader = result.ExecuteReader(); + while (reader.Read()) + { + FriendRegionInfo fri = new FriendRegionInfo(); + fri.isOnline = (sbyte)reader["agentOnline"] != 0; + fri.regionHandle = (ulong)reader["currentHandle"]; + + infos[uuid] = fri; + } + + reader.Dispose(); + result.Dispose(); + } + } + catch (Exception e) + { + m_log.Warn("[MYSQL]: Got exception on trying to find friends regions:", e); + dbm.Manager.Reconnect(); + m_log.Error(e.ToString()); + } + finally + { + dbm.Release(); + } + + return infos; + } + #endregion public override void UpdateUserCurrentRegion(UUID avatarid, UUID regionuuid, ulong regionhandle) -- cgit v1.1