public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle) { UserProfileData userProfile = m_userDataBaseService.GetUserProfile(agentID); if (userProfile != null) { if (userProfile.CurrentAgent.Region == regionID) { UserAgentData userAgent = userProfile.CurrentAgent; if (userAgent != null && userAgent.AgentOnline) { userAgent.AgentOnline = false; userAgent.LogoutTime = Util.UnixTimeSinceEpoch(); if (regionID != UUID.Zero) { userAgent.Region = regionID; } userAgent.Handle = regionHandle; userProfile.LastLogin = userAgent.LogoutTime; m_userDataBaseService.CommitAgent(ref userProfile); handlerLogOffUser = OnLogOffUser; if (handlerLogOffUser != null) { handlerLogOffUser(agentID); } } } } }
public XmlRpcResponse XmlRPCLogOffUserMethodUUID(XmlRpcRequest request, IPEndPoint remoteClient) { // Check IP Endpoint Access if (!TrustManager.Instance.IsTrustedPeer(remoteClient)) { return(Util.CreateTrustManagerAccessDeniedResponse()); } XmlRpcResponse response = new XmlRpcResponse(); Hashtable requestData = (Hashtable)request.Params[0]; if (requestData.Contains("avatar_uuid")) { try { UUID userUUID = new UUID((string)requestData["avatar_uuid"]); UUID RegionID = new UUID((string)requestData["region_uuid"]); ulong regionhandle = (ulong)Convert.ToInt64((string)requestData["region_handle"]); Vector3 position = new Vector3( (float)Convert.ToDouble((string)requestData["region_pos_x"]), (float)Convert.ToDouble((string)requestData["region_pos_y"]), (float)Convert.ToDouble((string)requestData["region_pos_z"])); Vector3 lookat = new Vector3( (float)Convert.ToDouble((string)requestData["lookat_x"]), (float)Convert.ToDouble((string)requestData["lookat_y"]), (float)Convert.ToDouble((string)requestData["lookat_z"])); handlerLogOffUser = OnLogOffUser; if (handlerLogOffUser != null) { handlerLogOffUser(userUUID); } m_userDataBaseService.LogOffUser(userUUID, RegionID, regionhandle, position, lookat); } catch (FormatException) { m_log.Warn("[LOGOUT]: Error in Logout XMLRPC Params"); return(response); } } else { return(Util.CreateUnknownUserErrorResponse()); } return(response); }
public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle) { UserProfileData userProfile = m_userDataBaseService.GetUserProfile(agentID); if (userProfile != null) { if (userProfile.CurrentAgent.Region == regionID) { UserAgentData userAgent = userProfile.CurrentAgent; if (userAgent != null && userAgent.AgentOnline) { userAgent.AgentOnline = false; userAgent.LogoutTime = Util.UnixTimeSinceEpoch(); if (regionID != UUID.Zero) { userAgent.Region = regionID; } userAgent.Handle = regionHandle; userProfile.LastLogin = userAgent.LogoutTime; m_userDataBaseService.CommitAgent(ref userProfile); handlerLogOffUser = OnLogOffUser; if (handlerLogOffUser != null) handlerLogOffUser(agentID); } } } }
public XmlRpcResponse XmlRPCLogOffUserMethodUUID(XmlRpcRequest request, IPEndPoint remoteClient) { XmlRpcResponse response = new XmlRpcResponse(); Hashtable requestData = (Hashtable)request.Params[0]; if (requestData.Contains("avatar_uuid")) { try { UUID userUUID = new UUID((string)requestData["avatar_uuid"]); UUID RegionID = new UUID((string)requestData["region_uuid"]); ulong regionhandle = (ulong)Convert.ToInt64((string)requestData["region_handle"]); Vector3 position = new Vector3( (float)Convert.ToDecimal((string)requestData["region_pos_x"]), (float)Convert.ToDecimal((string)requestData["region_pos_y"]), (float)Convert.ToDecimal((string)requestData["region_pos_z"])); Vector3 lookat = new Vector3( (float)Convert.ToDecimal((string)requestData["lookat_x"]), (float)Convert.ToDecimal((string)requestData["lookat_y"]), (float)Convert.ToDecimal((string)requestData["lookat_z"])); handlerLogOffUser = OnLogOffUser; if (handlerLogOffUser != null) handlerLogOffUser(userUUID); m_userDataBaseService.LogOffUser(userUUID, RegionID, regionhandle, position, lookat); } catch (FormatException) { m_log.Warn("[LOGOUT]: Error in Logout XMLRPC Params"); return response; } } else { return Util.CreateUnknownUserErrorResponse(); } return response; }