diff options
Diffstat (limited to 'OpenSim/Services/PresenceService/PresenceService.cs')
-rw-r--r-- | OpenSim/Services/PresenceService/PresenceService.cs | 79 |
1 files changed, 5 insertions, 74 deletions
diff --git a/OpenSim/Services/PresenceService/PresenceService.cs b/OpenSim/Services/PresenceService/PresenceService.cs index ea8d673..7e7e98e 100644 --- a/OpenSim/Services/PresenceService/PresenceService.cs +++ b/OpenSim/Services/PresenceService/PresenceService.cs | |||
@@ -54,8 +54,6 @@ namespace OpenSim.Services.PresenceService | |||
54 | public bool LoginAgent(string userID, UUID sessionID, | 54 | public bool LoginAgent(string userID, UUID sessionID, |
55 | UUID secureSessionID) | 55 | UUID secureSessionID) |
56 | { | 56 | { |
57 | m_Database.Prune(userID); | ||
58 | |||
59 | PresenceData[] d = m_Database.Get("UserID", userID); | 57 | PresenceData[] d = m_Database.Get("UserID", userID); |
60 | 58 | ||
61 | PresenceData data = new PresenceData(); | 59 | PresenceData data = new PresenceData(); |
@@ -65,24 +63,6 @@ namespace OpenSim.Services.PresenceService | |||
65 | data.SessionID = sessionID; | 63 | data.SessionID = sessionID; |
66 | data.Data = new Dictionary<string, string>(); | 64 | data.Data = new Dictionary<string, string>(); |
67 | data.Data["SecureSessionID"] = secureSessionID.ToString(); | 65 | data.Data["SecureSessionID"] = secureSessionID.ToString(); |
68 | data.Data["Online"] = "true"; | ||
69 | data.Data["Login"] = Util.UnixTimeSinceEpoch().ToString(); | ||
70 | if (d != null && d.Length > 0) | ||
71 | { | ||
72 | data.Data["HomeRegionID"] = d[0].Data["HomeRegionID"]; | ||
73 | data.Data["HomePosition"] = d[0].Data["HomePosition"]; | ||
74 | data.Data["HomeLookAt"] = d[0].Data["HomeLookAt"]; | ||
75 | data.Data["Position"] = d[0].Data["Position"]; | ||
76 | data.Data["LookAt"] = d[0].Data["LookAt"]; | ||
77 | |||
78 | data.RegionID = d[0].RegionID; | ||
79 | } | ||
80 | else | ||
81 | { | ||
82 | data.Data["HomeRegionID"] = UUID.Zero.ToString(); | ||
83 | data.Data["HomePosition"] = new Vector3(128, 128, 0).ToString(); | ||
84 | data.Data["HomeLookAt"] = new Vector3(0, 1, 0).ToString(); | ||
85 | } | ||
86 | 66 | ||
87 | m_Database.Store(data); | 67 | m_Database.Store(data); |
88 | 68 | ||
@@ -91,28 +71,10 @@ namespace OpenSim.Services.PresenceService | |||
91 | return true; | 71 | return true; |
92 | } | 72 | } |
93 | 73 | ||
94 | public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat) | 74 | public bool LogoutAgent(UUID sessionID) |
95 | { | 75 | { |
96 | PresenceData data = m_Database.Get(sessionID); | 76 | m_log.DebugFormat("[PRESENCE SERVICE]: Session {0} logout", sessionID); |
97 | if (data == null) | 77 | return m_Database.Delete("SessionID", sessionID.ToString()); |
98 | return false; | ||
99 | |||
100 | PresenceData[] d = m_Database.Get("UserID", data.UserID); | ||
101 | |||
102 | m_log.DebugFormat("[PRESENCE SERVICE]: LogoutAgent {0} with {1} sessions currently present", data.UserID, d.Length); | ||
103 | if (d.Length > 1) | ||
104 | { | ||
105 | m_Database.Delete("UserID", data.UserID); | ||
106 | } | ||
107 | |||
108 | data.Data["Online"] = "false"; | ||
109 | data.Data["Logout"] = Util.UnixTimeSinceEpoch().ToString(); | ||
110 | data.Data["Position"] = position.ToString(); | ||
111 | data.Data["LookAt"] = lookat.ToString(); | ||
112 | |||
113 | m_Database.Store(data); | ||
114 | |||
115 | return true; | ||
116 | } | 78 | } |
117 | 79 | ||
118 | public bool LogoutRegionAgents(UUID regionID) | 80 | public bool LogoutRegionAgents(UUID regionID) |
@@ -123,7 +85,7 @@ namespace OpenSim.Services.PresenceService | |||
123 | } | 85 | } |
124 | 86 | ||
125 | 87 | ||
126 | public bool ReportAgent(UUID sessionID, UUID regionID, Vector3 position, Vector3 lookAt) | 88 | public bool ReportAgent(UUID sessionID, UUID regionID) |
127 | { | 89 | { |
128 | m_log.DebugFormat("[PRESENCE SERVICE]: ReportAgent with session {0} in region {1}", sessionID, regionID); | 90 | m_log.DebugFormat("[PRESENCE SERVICE]: ReportAgent with session {0} in region {1}", sessionID, regionID); |
129 | try | 91 | try |
@@ -134,14 +96,7 @@ namespace OpenSim.Services.PresenceService | |||
134 | if (pdata.Data == null) | 96 | if (pdata.Data == null) |
135 | return false; | 97 | return false; |
136 | 98 | ||
137 | if (!pdata.Data.ContainsKey("Online") || (pdata.Data.ContainsKey("Online") && pdata.Data["Online"] == "false")) | 99 | return m_Database.ReportAgent(sessionID, regionID); |
138 | { | ||
139 | m_log.WarnFormat("[PRESENCE SERVICE]: Someone tried to report presence of an agent who's not online"); | ||
140 | return false; | ||
141 | } | ||
142 | |||
143 | return m_Database.ReportAgent(sessionID, regionID, | ||
144 | position.ToString(), lookAt.ToString()); | ||
145 | } | 100 | } |
146 | catch (Exception e) | 101 | catch (Exception e) |
147 | { | 102 | { |
@@ -160,22 +115,10 @@ namespace OpenSim.Services.PresenceService | |||
160 | 115 | ||
161 | ret.UserID = data.UserID; | 116 | ret.UserID = data.UserID; |
162 | ret.RegionID = data.RegionID; | 117 | ret.RegionID = data.RegionID; |
163 | if (data.Data.ContainsKey("Online")) | ||
164 | ret.Online = bool.Parse(data.Data["Online"]); | ||
165 | if (data.Data.ContainsKey("Login")) | ||
166 | ret.Login = Util.ToDateTime(Convert.ToInt32(data.Data["Login"])); | ||
167 | if (data.Data.ContainsKey("Logout")) | ||
168 | ret.Logout = Util.ToDateTime(Convert.ToInt32(data.Data["Logout"])); | ||
169 | if (data.Data.ContainsKey("Position")) | 118 | if (data.Data.ContainsKey("Position")) |
170 | ret.Position = Vector3.Parse(data.Data["Position"]); | 119 | ret.Position = Vector3.Parse(data.Data["Position"]); |
171 | if (data.Data.ContainsKey("LookAt")) | 120 | if (data.Data.ContainsKey("LookAt")) |
172 | ret.LookAt = Vector3.Parse(data.Data["LookAt"]); | 121 | ret.LookAt = Vector3.Parse(data.Data["LookAt"]); |
173 | if (data.Data.ContainsKey("HomeRegionID")) | ||
174 | ret.HomeRegionID = new UUID(data.Data["HomeRegionID"]); | ||
175 | if (data.Data.ContainsKey("HomePosition")) | ||
176 | ret.HomePosition = Vector3.Parse(data.Data["HomePosition"]); | ||
177 | if (data.Data.ContainsKey("HomeLookAt")) | ||
178 | ret.HomeLookAt = Vector3.Parse(data.Data["HomeLookAt"]); | ||
179 | 122 | ||
180 | return ret; | 123 | return ret; |
181 | } | 124 | } |
@@ -195,16 +138,8 @@ namespace OpenSim.Services.PresenceService | |||
195 | 138 | ||
196 | ret.UserID = d.UserID; | 139 | ret.UserID = d.UserID; |
197 | ret.RegionID = d.RegionID; | 140 | ret.RegionID = d.RegionID; |
198 | ret.Online = bool.Parse(d.Data["Online"]); | ||
199 | ret.Login = Util.ToDateTime(Convert.ToInt32( | ||
200 | d.Data["Login"])); | ||
201 | ret.Logout = Util.ToDateTime(Convert.ToInt32( | ||
202 | d.Data["Logout"])); | ||
203 | ret.Position = Vector3.Parse(d.Data["Position"]); | 141 | ret.Position = Vector3.Parse(d.Data["Position"]); |
204 | ret.LookAt = Vector3.Parse(d.Data["LookAt"]); | 142 | ret.LookAt = Vector3.Parse(d.Data["LookAt"]); |
205 | ret.HomeRegionID = new UUID(d.Data["HomeRegionID"]); | ||
206 | ret.HomePosition = Vector3.Parse(d.Data["HomePosition"]); | ||
207 | ret.HomeLookAt = Vector3.Parse(d.Data["HomeLookAt"]); | ||
208 | 143 | ||
209 | info.Add(ret); | 144 | info.Add(ret); |
210 | } | 145 | } |
@@ -214,9 +149,5 @@ namespace OpenSim.Services.PresenceService | |||
214 | return info.ToArray(); | 149 | return info.ToArray(); |
215 | } | 150 | } |
216 | 151 | ||
217 | public bool SetHomeLocation(string userID, UUID regionID, Vector3 position, Vector3 lookAt) | ||
218 | { | ||
219 | return m_Database.SetHomeLocation(userID, regionID, position, lookAt); | ||
220 | } | ||
221 | } | 152 | } |
222 | } | 153 | } |