private bool CreateAgent(GridRegion region, IRegionClientCapsService regionCaps, ref AgentCircuitData aCircuit, ISimulationService SimulationService, ref int requestedUDPPort, out string reason) { CachedUserInfo info = new CachedUserInfo(); IAgentConnector con = Aurora.DataManager.DataManager.RequestPlugin<IAgentConnector>(); if (con != null) info.AgentInfo = con.GetAgent(aCircuit.AgentID); info.UserAccount = regionCaps.ClientCaps.AccountInfo; IGroupsServiceConnector groupsConn = Aurora.DataManager.DataManager.RequestPlugin<IGroupsServiceConnector>(); if (groupsConn != null) { info.ActiveGroup = groupsConn.GetGroupMembershipData(aCircuit.AgentID, UUID.Zero, aCircuit.AgentID); info.GroupMemberships = groupsConn.GetAgentGroupMemberships(aCircuit.AgentID, aCircuit.AgentID); } aCircuit.OtherInformation["CachedUserInfo"] = info.ToOSD(); return SimulationService.CreateAgent(region, aCircuit, aCircuit.teleportFlags, null, out requestedUDPPort, out reason); }
public void UpdateCachedData(UUID agentID, CachedUserInfo cachedInfo) { //Update the cache m_cachedGroupTitles[agentID] = cachedInfo.ActiveGroup; m_cachedGroupMemberships[agentID] = cachedInfo.GroupMemberships; }
private void CacheUserInfo(IScene scene, OSDMap map) { if(map.ContainsKey("CachedUserInfo")) { //OpenSim does not contain this, only check if it is there // We do this caching so that we don't pull down all of this info as the user is trying to login, which causes major lag, and slows down the sim for people already in the sim CachedUserInfo cache = new CachedUserInfo(); cache.FromOSD((OSDMap)map["CachedUserInfo"]); IAgentConnector conn = Aurora.DataManager.DataManager.RequestPlugin<IAgentConnector>(); if (conn != null) conn.CacheAgent(cache.AgentInfo); scene.UserAccountService.CacheAccount(cache.UserAccount); IGroupsModule groupsMod = scene.RequestModuleInterface<IGroupsModule>(); if (groupsMod != null) groupsMod.UpdateCachedData(cache.UserAccount.PrincipalID, cache); } }
public void UpdateCachedData(UUID agentID, CachedUserInfo cachedInfo) { //Update the cache RemoveFromGroupPowersCache(agentID, UUID.Zero); m_cachedGroupTitles[agentID] = cachedInfo.ActiveGroup; m_cachedGroupMemberships[agentID] = cachedInfo.GroupMemberships; }