diff options
Diffstat (limited to 'OpenSim/Data/MySQL/MySQLPresenceData.cs')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLPresenceData.cs | 66 |
1 files changed, 3 insertions, 63 deletions
diff --git a/OpenSim/Data/MySQL/MySQLPresenceData.cs b/OpenSim/Data/MySQL/MySQLPresenceData.cs index 143dbe3..71caa1a 100644 --- a/OpenSim/Data/MySQL/MySQLPresenceData.cs +++ b/OpenSim/Data/MySQL/MySQLPresenceData.cs | |||
@@ -65,15 +65,14 @@ namespace OpenSim.Data.MySQL | |||
65 | { | 65 | { |
66 | MySqlCommand cmd = new MySqlCommand(); | 66 | MySqlCommand cmd = new MySqlCommand(); |
67 | 67 | ||
68 | cmd.CommandText = String.Format("update {0} set Online='false' where `RegionID`=?RegionID", m_Realm); | 68 | cmd.CommandText = String.Format("delete from {0} where `RegionID`=?RegionID", m_Realm); |
69 | 69 | ||
70 | cmd.Parameters.AddWithValue("?RegionID", regionID.ToString()); | 70 | cmd.Parameters.AddWithValue("?RegionID", regionID.ToString()); |
71 | 71 | ||
72 | ExecuteNonQuery(cmd); | 72 | ExecuteNonQuery(cmd); |
73 | } | 73 | } |
74 | 74 | ||
75 | public bool ReportAgent(UUID sessionID, UUID regionID, string position, | 75 | public bool ReportAgent(UUID sessionID, UUID regionID) |
76 | string lookAt) | ||
77 | { | 76 | { |
78 | PresenceData[] pd = Get("SessionID", sessionID.ToString()); | 77 | PresenceData[] pd = Get("SessionID", sessionID.ToString()); |
79 | if (pd.Length == 0) | 78 | if (pd.Length == 0) |
@@ -81,12 +80,10 @@ namespace OpenSim.Data.MySQL | |||
81 | 80 | ||
82 | MySqlCommand cmd = new MySqlCommand(); | 81 | MySqlCommand cmd = new MySqlCommand(); |
83 | 82 | ||
84 | cmd.CommandText = String.Format("update {0} set RegionID=?RegionID, Position=?Position, LookAt=?LookAt, Online='true' where `SessionID`=?SessionID", m_Realm); | 83 | cmd.CommandText = String.Format("update {0} set RegionID=?RegionID where `SessionID`=?SessionID", m_Realm); |
85 | 84 | ||
86 | cmd.Parameters.AddWithValue("?SessionID", sessionID.ToString()); | 85 | cmd.Parameters.AddWithValue("?SessionID", sessionID.ToString()); |
87 | cmd.Parameters.AddWithValue("?RegionID", regionID.ToString()); | 86 | cmd.Parameters.AddWithValue("?RegionID", regionID.ToString()); |
88 | cmd.Parameters.AddWithValue("?Position", position.ToString()); | ||
89 | cmd.Parameters.AddWithValue("?LookAt", lookAt.ToString()); | ||
90 | 87 | ||
91 | if (ExecuteNonQuery(cmd) == 0) | 88 | if (ExecuteNonQuery(cmd) == 0) |
92 | return false; | 89 | return false; |
@@ -94,62 +91,5 @@ namespace OpenSim.Data.MySQL | |||
94 | return true; | 91 | return true; |
95 | } | 92 | } |
96 | 93 | ||
97 | public bool SetHomeLocation(string userID, UUID regionID, Vector3 position, Vector3 lookAt) | ||
98 | { | ||
99 | PresenceData[] pd = Get("UserID", userID); | ||
100 | if (pd.Length == 0) | ||
101 | return false; | ||
102 | |||
103 | MySqlCommand cmd = new MySqlCommand(); | ||
104 | |||
105 | cmd.CommandText = String.Format("update {0} set HomeRegionID=?HomeRegionID, HomePosition=?HomePosition, HomeLookAt=?HomeLookAt where UserID=?UserID", m_Realm); | ||
106 | |||
107 | cmd.Parameters.AddWithValue("?UserID", userID); | ||
108 | cmd.Parameters.AddWithValue("?HomeRegionID", regionID.ToString()); | ||
109 | cmd.Parameters.AddWithValue("?HomePosition", position); | ||
110 | cmd.Parameters.AddWithValue("?HomeLookAt", lookAt); | ||
111 | |||
112 | if (ExecuteNonQuery(cmd) == 0) | ||
113 | return false; | ||
114 | |||
115 | return true; | ||
116 | } | ||
117 | |||
118 | public void Prune(string userID) | ||
119 | { | ||
120 | MySqlCommand cmd = new MySqlCommand(); | ||
121 | |||
122 | cmd.CommandText = String.Format("select * from {0} where UserID=?UserID", m_Realm); | ||
123 | |||
124 | cmd.Parameters.AddWithValue("?UserID", userID); | ||
125 | |||
126 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | ||
127 | { | ||
128 | dbcon.Open(); | ||
129 | |||
130 | cmd.Connection = dbcon; | ||
131 | |||
132 | using (IDataReader reader = cmd.ExecuteReader()) | ||
133 | { | ||
134 | List<UUID> deleteSessions = new List<UUID>(); | ||
135 | int online = 0; | ||
136 | |||
137 | while (reader.Read()) | ||
138 | { | ||
139 | if (bool.Parse(reader["Online"].ToString())) | ||
140 | online++; | ||
141 | else | ||
142 | deleteSessions.Add(new UUID(reader["SessionID"].ToString())); | ||
143 | } | ||
144 | |||
145 | // Leave one session behind so that we can pick up details such as home location | ||
146 | if (online == 0 && deleteSessions.Count > 0) | ||
147 | deleteSessions.RemoveAt(0); | ||
148 | |||
149 | foreach (UUID s in deleteSessions) | ||
150 | Delete("SessionID", s.ToString()); | ||
151 | } | ||
152 | } | ||
153 | } | ||
154 | } | 94 | } |
155 | } | 95 | } |