public void UpdateCachedData(UUID agentID, CachedUserInfo cachedInfo)
 {
     //Update the cache
     RemoveFromGroupPowersCache(agentID, UUID.Zero);
     m_cachedGroupTitles[agentID] = cachedInfo.ActiveGroup;
     m_cachedGroupMemberships[agentID] = cachedInfo.GroupMemberships;
 }
        private void CacheUserInfo(IScene scene, CachedUserInfo cache)
        {
            if (cache == null) return;
            IAgentConnector conn = Framework.Utilities.DataManager.RequestPlugin<IAgentConnector>();
            if (conn != null)
                conn.CacheAgent(cache.AgentInfo);
            scene.UserAccountService.CacheAccount(cache.UserAccount);

            scene.EventManager.TriggerOnUserCachedData(cache.UserAccount.PrincipalID, cache);
        }
        private bool CreateAgent(GridRegion region, IRegionClientCapsService regionCaps, ref AgentCircuitData aCircuit,
            ISimulationService SimulationService, List<UUID> friendsToInform, out CreateAgentResponse response)
        {
            CachedUserInfo info = new CachedUserInfo();
            IAgentConnector con = Framework.Utilities.DataManager.RequestPlugin<IAgentConnector>();
            if (con != null)
                info.AgentInfo = con.GetAgent(aCircuit.AgentID);
            info.UserAccount = regionCaps.ClientCaps.AccountInfo;

            IGroupsServiceConnector groupsConn = Framework.Utilities.DataManager.RequestPlugin<IGroupsServiceConnector>();
            if (groupsConn != null)
            {
                info.ActiveGroup = groupsConn.GetGroupMembershipData(aCircuit.AgentID, UUID.Zero, aCircuit.AgentID);
                info.GroupMemberships = groupsConn.GetAgentGroupMemberships(aCircuit.AgentID, aCircuit.AgentID);
            }

            IOfflineMessagesConnector offlineMessConn =
                Framework.Utilities.DataManager.RequestPlugin<IOfflineMessagesConnector>();
            if (offlineMessConn != null)
                info.OfflineMessages = offlineMessConn.GetOfflineMessages(aCircuit.AgentID);

            IMuteListConnector muteConn = Framework.Utilities.DataManager.RequestPlugin<IMuteListConnector>();
            if (muteConn != null)
                info.MuteList = muteConn.GetMuteList(aCircuit.AgentID);

            IAvatarService avatarService = m_registry.RequestModuleInterface<IAvatarService>();
            if (avatarService != null)
                info.Appearance = avatarService.GetAppearance(aCircuit.AgentID);

            info.FriendOnlineStatuses = friendsToInform;
            IFriendsService friendsService = m_registry.RequestModuleInterface<IFriendsService>();
            if (friendsService != null)
                info.Friends = friendsService.GetFriends(aCircuit.AgentID);

            aCircuit.CachedUserInfo = info;
            return SimulationService.CreateAgent(region, aCircuit, aCircuit.TeleportFlags,
                                                 out response);
        }
 void UpdateCachedInfo (UUID agentID, CachedUserInfo info)
 {
     lock (m_offlineMessagesCache)
         m_offlineMessagesCache [agentID] = info.OfflineMessages;
 }
 /// <summary>
 ///     Deserialize the module from OSD
 /// </summary>
 /// <param name="map"></param>
 public override void FromOSD(OSDMap map)
 {
     AgentID = map["AgentID"];
     IsChildAgent = map["IsChildAgent"];
     CircuitCode = map["CircuitCode"];
     SecureSessionID = map["SecureSessionID"];
     SessionID = map["SessionID"];
     IPAddress = map["IPAddress"];
     RegionUDPPort = map["RegionUDPPort"];
     StartingPosition = map["StartingPosition"];
     TeleportFlags = map["TeleportFlags"];
     if (map.ContainsKey("CachedUserInfo"))
     {
         CachedUserInfo = new CachedUserInfo();
         CachedUserInfo.FromOSD((OSDMap)map["CachedUserInfo"]);
     }
 }
 private void UpdateCachedInfo(UUID agentID, CachedUserInfo info)
 {
     lock (MuteListCache)
         MuteListCache[agentID] = info.MuteList.ToArray();
 }
 void UpdateCachedInfo(UUID agentID, CachedUserInfo info)
 {
     lock (m_FriendOnlineStatuses)
     {
         if (info.FriendOnlineStatuses.Count > 0)
             m_FriendOnlineStatuses [agentID] = info.FriendOnlineStatuses;
         else
             m_FriendOnlineStatuses.Remove (agentID);
     }
     lock (m_Friends)
         m_Friends [agentID] = info.Friends;
 }