aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services')
-rw-r--r--OpenSim/Services/PresenceService/PresenceService.cs32
1 files changed, 23 insertions, 9 deletions
diff --git a/OpenSim/Services/PresenceService/PresenceService.cs b/OpenSim/Services/PresenceService/PresenceService.cs
index b3d8194..fc6a6e1 100644
--- a/OpenSim/Services/PresenceService/PresenceService.cs
+++ b/OpenSim/Services/PresenceService/PresenceService.cs
@@ -64,6 +64,7 @@ namespace OpenSim.Services.PresenceService
64 data.RegionID = UUID.Zero; 64 data.RegionID = UUID.Zero;
65 data.SessionID = sessionID; 65 data.SessionID = sessionID;
66 data.Data["SecureSessionID"] = secureSessionID.ToString(); 66 data.Data["SecureSessionID"] = secureSessionID.ToString();
67 data.Data["Online"] = "true";
67 data.Data["Login"] = Util.UnixTimeSinceEpoch().ToString(); 68 data.Data["Login"] = Util.UnixTimeSinceEpoch().ToString();
68 if (d.Length > 0) 69 if (d.Length > 0)
69 { 70 {
@@ -88,7 +89,6 @@ namespace OpenSim.Services.PresenceService
88 if (d.Length > 1) 89 if (d.Length > 1)
89 { 90 {
90 m_Database.Delete("SessionID", sessionID.ToString()); 91 m_Database.Delete("SessionID", sessionID.ToString());
91 return true;
92 } 92 }
93 93
94 data.Data["Online"] = "false"; 94 data.Data["Online"] = "false";
@@ -110,6 +110,12 @@ namespace OpenSim.Services.PresenceService
110 public bool ReportAgent(UUID sessionID, UUID regionID, Vector3 position, Vector3 lookAt) 110 public bool ReportAgent(UUID sessionID, UUID regionID, Vector3 position, Vector3 lookAt)
111 { 111 {
112 m_log.DebugFormat("[PRESENCE SERVICE]: ReportAgent with session {0} in region {1}", sessionID, regionID); 112 m_log.DebugFormat("[PRESENCE SERVICE]: ReportAgent with session {0} in region {1}", sessionID, regionID);
113 PresenceData pdata = m_Database.Get(sessionID);
114 if (pdata == null)
115 return false;
116 if (pdata.Data["Online"] == "false")
117 return false;
118
113 return m_Database.ReportAgent(sessionID, regionID, 119 return m_Database.ReportAgent(sessionID, regionID,
114 position.ToString(), lookAt.ToString()); 120 position.ToString(), lookAt.ToString());
115 } 121 }
@@ -124,14 +130,22 @@ namespace OpenSim.Services.PresenceService
124 130
125 ret.UserID = data.UserID; 131 ret.UserID = data.UserID;
126 ret.RegionID = data.RegionID; 132 ret.RegionID = data.RegionID;
127 ret.Online = bool.Parse(data.Data["Online"]); 133 if (data.Data.ContainsKey("Online"))
128 ret.Login = Util.ToDateTime(Convert.ToInt32(data.Data["Login"])); 134 ret.Online = bool.Parse(data.Data["Online"]);
129 ret.Logout = Util.ToDateTime(Convert.ToInt32(data.Data["Logout"])); 135 if (data.Data.ContainsKey("Login"))
130 ret.Position = Vector3.Parse(data.Data["Position"]); 136 ret.Login = Util.ToDateTime(Convert.ToInt32(data.Data["Login"]));
131 ret.LookAt = Vector3.Parse(data.Data["LookAt"]); 137 if (data.Data.ContainsKey("Logout"))
132 ret.HomeRegionID = new UUID(data.Data["HomeRegionID"]); 138 ret.Logout = Util.ToDateTime(Convert.ToInt32(data.Data["Logout"]));
133 ret.HomePosition = Vector3.Parse(data.Data["HomePosition"]); 139 if (data.Data.ContainsKey("Position"))
134 ret.HomeLookAt = Vector3.Parse(data.Data["HomeLookAt"]); 140 ret.Position = Vector3.Parse(data.Data["Position"]);
141 if (data.Data.ContainsKey("LookAt"))
142 ret.LookAt = Vector3.Parse(data.Data["LookAt"]);
143 if (data.Data.ContainsKey("HomeRegionID"))
144 ret.HomeRegionID = new UUID(data.Data["HomeRegionID"]);
145 if (data.Data.ContainsKey("HomePosition"))
146 ret.HomePosition = Vector3.Parse(data.Data["HomePosition"]);
147 if (data.Data.ContainsKey("HomeLookAt"))
148 ret.HomeLookAt = Vector3.Parse(data.Data["HomeLookAt"]);
135 149
136 return ret; 150 return ret;
137 } 151 }