diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLManager.cs | 60 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLUserData.cs | 9 | ||||
-rw-r--r-- | OpenSim/Grid/UserServer/UserManager.cs | 25 |
3 files changed, 73 insertions, 21 deletions
diff --git a/OpenSim/Data/MSSQL/MSSQLManager.cs b/OpenSim/Data/MSSQL/MSSQLManager.cs index fe4ca77..9cd9eca 100644 --- a/OpenSim/Data/MSSQL/MSSQLManager.cs +++ b/OpenSim/Data/MSSQL/MSSQLManager.cs | |||
@@ -354,7 +354,7 @@ namespace OpenSim.Data.MSSQL | |||
354 | // Agent Who? | 354 | // Agent Who? |
355 | retval.AgentIP = (string)reader["agentIP"]; | 355 | retval.AgentIP = (string)reader["agentIP"]; |
356 | retval.AgentPort = Convert.ToUInt32(reader["agentPort"].ToString()); | 356 | retval.AgentPort = Convert.ToUInt32(reader["agentPort"].ToString()); |
357 | retval.AgentOnline = Convert.ToBoolean(reader["agentOnline"].ToString()); | 357 | retval.AgentOnline = Convert.ToInt32(reader["agentOnline"].ToString()) != 0; |
358 | 358 | ||
359 | // Login/Logout times (UNIX Epoch) | 359 | // Login/Logout times (UNIX Epoch) |
360 | retval.LoginTime = Convert.ToInt32(reader["loginTime"].ToString()); | 360 | retval.LoginTime = Convert.ToInt32(reader["loginTime"].ToString()); |
@@ -528,5 +528,63 @@ namespace OpenSim.Data.MSSQL | |||
528 | string.Format("{0}.{1}.{2}.{3}", dllVersion.Major, dllVersion.Minor, dllVersion.Build, | 528 | string.Format("{0}.{1}.{2}.{3}", dllVersion.Major, dllVersion.Minor, dllVersion.Build, |
529 | dllVersion.Revision); | 529 | dllVersion.Revision); |
530 | } | 530 | } |
531 | |||
532 | public bool insertAgentRow(UserAgentData agentdata) | ||
533 | { | ||
534 | string sql = @" | ||
535 | |||
536 | IF EXISTS (SELECT * FROM agents WHERE UUID = @UUID) | ||
537 | BEGIN | ||
538 | UPDATE agents SET UUID = @UUID, sessionID = @sessionID, secureSessionID = @secureSessionID, agentIP = @agentIP, agentPort = @agentPort, agentOnline = @agentOnline, loginTime = @loginTime, logoutTime = @logoutTime, currentRegion = @currentRegion, currentHandle = @currentHandle, currentPos = @currentPos | ||
539 | WHERE UUID = @UUID | ||
540 | END | ||
541 | ELSE | ||
542 | BEGIN | ||
543 | INSERT INTO | ||
544 | agents (UUID, sessionID, secureSessionID, agentIP, agentPort, agentOnline, loginTime, logoutTime, currentRegion, currentHandle, currentPos) VALUES | ||
545 | (@UUID, @sessionID, @secureSessionID, @agentIP, @agentPort, @agentOnline, @loginTime, @logoutTime, @currentRegion, @currentHandle, @currentPos) | ||
546 | END | ||
547 | "; | ||
548 | |||
549 | Dictionary<string, string> parameters = new Dictionary<string, string>(); | ||
550 | |||
551 | parameters["@UUID"] = agentdata.ProfileID.ToString(); | ||
552 | parameters["@sessionID"] = agentdata.SessionID.ToString(); | ||
553 | parameters["@secureSessionID"] = agentdata.SecureSessionID.ToString(); | ||
554 | parameters["@agentIP"] = agentdata.AgentIP.ToString(); | ||
555 | parameters["@agentPort"] = agentdata.AgentPort.ToString(); | ||
556 | parameters["@agentOnline"] = (agentdata.AgentOnline == true) ? "1" : "0"; | ||
557 | parameters["@loginTime"] = agentdata.LoginTime.ToString(); | ||
558 | parameters["@logoutTime"] = agentdata.LogoutTime.ToString(); | ||
559 | parameters["@currentRegion"] = agentdata.Region.ToString(); | ||
560 | parameters["@currentHandle"] = agentdata.Handle.ToString(); | ||
561 | parameters["@currentPos"] = "<" + ((int)agentdata.Position.X).ToString() + "," + ((int)agentdata.Position.Y).ToString() + "," + ((int)agentdata.Position.Z).ToString() + ">"; | ||
562 | |||
563 | |||
564 | using (IDbCommand result = Query(sql, parameters)) | ||
565 | { | ||
566 | result.Transaction = result.Connection.BeginTransaction(IsolationLevel.Serializable); | ||
567 | try | ||
568 | { | ||
569 | if (result.ExecuteNonQuery() > 0) | ||
570 | { | ||
571 | result.Transaction.Commit(); | ||
572 | return true; | ||
573 | } | ||
574 | else | ||
575 | { | ||
576 | result.Transaction.Rollback(); | ||
577 | return false; | ||
578 | } | ||
579 | } | ||
580 | catch (Exception e) | ||
581 | { | ||
582 | result.Transaction.Rollback(); | ||
583 | m_log.Error(e.ToString()); | ||
584 | return false; | ||
585 | } | ||
586 | } | ||
587 | |||
588 | } | ||
531 | } | 589 | } |
532 | } | 590 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLUserData.cs b/OpenSim/Data/MSSQL/MSSQLUserData.cs index 20c3acd..0593c62 100644 --- a/OpenSim/Data/MSSQL/MSSQLUserData.cs +++ b/OpenSim/Data/MSSQL/MSSQLUserData.cs | |||
@@ -610,7 +610,14 @@ namespace OpenSim.Data.MSSQL | |||
610 | /// <param name="agent">The agent to create</param> | 610 | /// <param name="agent">The agent to create</param> |
611 | override public void AddNewUserAgent(UserAgentData agent) | 611 | override public void AddNewUserAgent(UserAgentData agent) |
612 | { | 612 | { |
613 | // Do nothing. | 613 | try |
614 | { | ||
615 | database.insertAgentRow(agent); | ||
616 | } | ||
617 | catch (Exception e) | ||
618 | { | ||
619 | m_log.Error(e.ToString()); | ||
620 | } | ||
614 | } | 621 | } |
615 | 622 | ||
616 | /// <summary> | 623 | /// <summary> |
diff --git a/OpenSim/Grid/UserServer/UserManager.cs b/OpenSim/Grid/UserServer/UserManager.cs index d4fb187..b48f20e 100644 --- a/OpenSim/Grid/UserServer/UserManager.cs +++ b/OpenSim/Grid/UserServer/UserManager.cs | |||
@@ -190,28 +190,15 @@ namespace OpenSim.Grid.UserServer | |||
190 | { | 190 | { |
191 | // ulong cregionhandle = 0; | 191 | // ulong cregionhandle = 0; |
192 | LLUUID regionUUID = LLUUID.Zero; | 192 | LLUUID regionUUID = LLUUID.Zero; |
193 | LLUUID AvatarID = LLUUID.Zero; | 193 | LLUUID avatarUUID = LLUUID.Zero; |
194 | 194 | ||
195 | Helpers.TryParse((string)requestData["avatar_id"], out AvatarID); | 195 | Helpers.TryParse((string)requestData["avatar_id"], out avatarUUID); |
196 | Helpers.TryParse((string)requestData["region_uuid"], out regionUUID); | 196 | Helpers.TryParse((string)requestData["region_uuid"], out regionUUID); |
197 | // try | 197 | |
198 | // { | 198 | if (avatarUUID != LLUUID.Zero) |
199 | // cregionhandle = (ulong)Convert.ToInt64((string)requestData["region_handle"]); | ||
200 | // } | ||
201 | // catch (ArgumentException) | ||
202 | // { | ||
203 | // } | ||
204 | // catch (OverflowException) | ||
205 | // { | ||
206 | // } | ||
207 | // catch (FormatException) | ||
208 | // { | ||
209 | // } | ||
210 | |||
211 | if (AvatarID != LLUUID.Zero) | ||
212 | { | 199 | { |
213 | UserProfileData userProfile = GetUserProfile(new LLUUID((string)requestData["avatar_id"])); | 200 | UserProfileData userProfile = GetUserProfile(avatarUUID); |
214 | userProfile.CurrentAgent.Region = new LLUUID((string)requestData["region_uuid"]); | 201 | userProfile.CurrentAgent.Region = regionUUID; |
215 | userProfile.CurrentAgent.Handle = (ulong)Convert.ToInt64((string)requestData["region_handle"]); | 202 | userProfile.CurrentAgent.Handle = (ulong)Convert.ToInt64((string)requestData["region_handle"]); |
216 | //userProfile.CurrentAgent. | 203 | //userProfile.CurrentAgent. |
217 | CommitAgent(ref userProfile); | 204 | CommitAgent(ref userProfile); |