OpenMetaverse.GroupManager.GroupRoleMembersHandler C# (CSharp) Method

GroupRoleMembersHandler() private method

private GroupRoleMembersHandler ( Packet packet, Simulator simulator ) : void
packet OpenMetaverse.Packets.Packet
simulator Simulator
return void
        private void GroupRoleMembersHandler(Packet packet, Simulator simulator)
        {
            GroupRoleMembersReplyPacket members = (GroupRoleMembersReplyPacket)packet;
            List<KeyValuePair<UUID, UUID>> groupRoleMemberCache = null;

            try
            {
                lock (GroupRolesMembersRequests)
                {
                    // If nothing is registered to receive this RequestID drop the data
                    if (GroupRolesMembersRequests.Contains(members.AgentData.RequestID))
                    {
                        GroupRolesMembersRequests.Remove(members.AgentData.RequestID);

                        if (!GroupRolesMembersRequests.Contains(members.AgentData.RequestID))
                        {
                            GroupRolesMembersRequests.Remove(members.AgentData.RequestID);

                            if (!GroupRolesMembersCaches.TryGetValue(members.AgentData.GroupID, out groupRoleMemberCache))
                            {
                                groupRoleMemberCache = new List<KeyValuePair<UUID, UUID>>();
                                GroupRolesMembersCaches[members.AgentData.GroupID] = groupRoleMemberCache;
                            }
                        }
                        foreach (GroupRoleMembersReplyPacket.MemberDataBlock block in members.MemberData)
                        {
                            KeyValuePair<UUID, UUID> rolemember =
                                new KeyValuePair<UUID, UUID>(block.RoleID, block.MemberID);

                            groupRoleMemberCache.Add(rolemember);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e);
            }

            //Client.DebugLog("Pairs Ratio: " + groupRoleMemberCache.Count + "/" + members.AgentData.TotalPairs);

            // Check if we've received all the pairs that are showing up
            if (OnGroupRolesMembers != null && groupRoleMemberCache != null && groupRoleMemberCache.Count >= members.AgentData.TotalPairs)
            {
                try { OnGroupRolesMembers(groupRoleMemberCache); }
                catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); }
            }
        }