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);
        }
Example #2
0
 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;
 }