OpenSim.Region.CoreModules.Avatar.Friends.FriendsModule.StatusNotify C# (CSharp) Method

StatusNotify() private method

private StatusNotify ( OpenSim.Services.Interfaces.FriendInfo friend, UUID userID, bool online ) : void
friend OpenSim.Services.Interfaces.FriendInfo
userID UUID
online bool
return void
        private void StatusNotify(FriendInfo friend, UUID userID, bool online)
        {
            UUID friendID;
            if (UUID.TryParse(friend.Friend, out friendID))
            {
                // Try local
                if (LocalStatusNotification(userID, friendID, online))
                    return;

                // The friend is not here [as root]. Let's forward.
                PresenceInfo[] friendSessions = PresenceService.GetAgents(new string[] { friendID.ToString() });
                if (friendSessions != null && friendSessions.Length > 0)
                {
                    PresenceInfo friendSession = null; 
                    foreach (PresenceInfo pinfo in friendSessions)
                        if (pinfo.RegionID != UUID.Zero) // let's guard against sessions-gone-bad
                        {
                            friendSession = pinfo;
                            break;
                        }

                    if (friendSession != null)
                    {
                        GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
                        //m_log.DebugFormat("[FRIENDS]: Remote Notify to region {0}", region.RegionName);
                        m_FriendsSimConnector.StatusNotify(region, userID, friendID, online);
                    }
                }

                // Friend is not online. Ignore.
            }
            else
            {
                m_log.WarnFormat("[FRIENDS]: Error parsing friend ID {0}", friend.Friend);
            }
        }