Пример #1
0
        public override void Groups_OnGroupMembers(object sender, GroupMembersReplyEventArgs e)
        {
            var      groupID = e.GroupID;
            SimGroup g       = DeclareGroup(groupID);

            if (MaintainGroupMetaData)
            {
                MetaDataQueue.Enqueue(() =>
                {
                    foreach (var member in e.Members)
                    {
                        var v = member.Value;
                        if (member.Key == UUID.Zero)
                        {
                            continue;
                        }
                        SimAvatarImpl A = DeclareAvatarProfile(member.Key);
                        //A.AddInfoMap(new NamedParam("GroupMember",groupID));
                    }
                    if (g != null)
                    {
                        SendOnUpdateDataAspect(g, "Members", null, null);
                    }
                });
            }
            // base.Groups_OnGroupMembers(requestID, totalCount, members);
        }
Пример #2
0
 protected override void GroupMembersReplyHandler(object sender, GroupMembersReplyEventArgs e)
 {
     base.GroupMembersReplyHandler(sender, e);
     if (await_events.ContainsKey("groupmembersreply") == true)
     {
         List <string> PurgeAwaiters = new List <string>();
         foreach (KeyValuePair <string, KeyValuePair <CoreCommand, string[]> > await_reply in await_events["groupmembersreply"])
         {
             // eventid
             // KeyValuePair<CommandLink,Args>
             // Args: Group, Message
             if (await_reply.Value.Value.Length == 2)
             {
                 if (UUID.TryParse(await_reply.Value.Value[0], out UUID test_group) == true)
                 {
                     if (test_group == e.GroupID)
                     {
                         // oh shit its for me
                         PurgeAwaiters.Add(await_reply.Key);
                         await_reply.Value.Key.Callback(await_reply.Value.Value, e);
                     }
                 }
             }
         }
         foreach (string eventid in PurgeAwaiters)
         {
             await_event_ages.Remove(eventid);
             await_event_idtolistener.Remove(eventid);
             await_events["groupmembersreply"].Remove(eventid);
         }
     }
 }
Пример #3
0
        private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
        {
            if (e.RequestID != GroupMembersRequestID)
            {
                return;
            }

            GroupMembers = e.Members;
        }
Пример #4
0
        private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
        {
            Members = e.Members;

            BeginInvoke((MethodInvoker) delegate
            {
                UpdateMembers();
            });
        }
Пример #5
0
 protected override void GroupMembersReplyHandler(object sender, GroupMembersReplyEventArgs e)
 {
     base.GroupMembersReplyHandler(sender, e);
     lock (group_members_storage)
     {
         if (group_members_storage.ContainsKey(e.GroupID) == true)
         {
             group_members_storage.Remove(e.GroupID);
         }
         group_members_storage.Add(e.GroupID, new KeyValuePair <long, List <UUID> >(helpers.UnixTimeNow(), e.Members.Keys.ToList()));
     }
 }
Пример #6
0
        private void Groups_GroupMembersReply(object sender, GroupMembersReplyEventArgs e)
        {
            if (e.RequestID != OCBSession.Instance.MemberLookupRequest)
            {
                return;
            }


            foreach (KeyValuePair <UUID, GroupMember> kvp in e.Members)
            {
                //BotSession.Instance.MHE(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, $"[DEBUG] secondlife:///app/agent/{kvp.Key.ToString()}/about - {kvp.Value.OnlineStatus}");
                if (OCBSession.Instance.GroupMembers.ContainsKey(kvp.Key) == false)
                {
                    OCBSession.Instance.GroupMembers.Add(kvp.Key, kvp.Value);
                }
            }

            OCBSession.Instance.MemberLookupRE.Set();
        }
 private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
 {
     if (e.RequestID == GroupRequestID)
     {
         StringBuilder sb = new StringBuilder();
         sb.AppendLine();
         sb.AppendFormat("GroupMembers: RequestID {0}", e.RequestID).AppendLine();
         sb.AppendFormat("GroupMembers: GroupUUID {0}", GroupUUID).AppendLine();
         sb.AppendFormat("GroupMembers: GroupName {0}", GroupName).AppendLine();
         if (e.Members.Count > 0)
         {
             foreach (KeyValuePair <UUID, GroupMember> member in e.Members)
             {
                 sb.AppendFormat("GroupMembers: MemberUUID {0}", member.Key.ToString()).AppendLine();
             }
         }
         sb.AppendFormat("GroupMembers: MemberCount {0}", e.Members.Count).AppendLine();
         Console.WriteLine(sb.ToString());
         GroupsEvent.Set();
     }
 }
Пример #8
0
        public override void Callback(string[] args, EventArgs e)
        {
            GroupMembersReplyEventArgs reply = (GroupMembersReplyEventArgs)e;

            if (UUID.TryParse(args[0], out UUID target_group) == true)
            {
                if (UUID.TryParse(args[1], out UUID target_avatar) == true)
                {
                    if (reply.GroupID == target_group)
                    {
                        if (reply.Members.ContainsKey(target_avatar) == false)
                        {
                            ForRealGroupInvite(args, target_group, target_avatar);
                        }
                    }
                    else
                    {
                        ConsoleLog.Crit("Callback sent for the wrong group as part of group invite!");
                    }
                }
            }
        }
Пример #9
0
        private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
        {
            if (e.GroupID != parcel.GroupID)
            {
                return;
            }

            client.Groups.GroupMembersReply -= new EventHandler <GroupMembersReplyEventArgs>(GroupMembersHandler);

            // do the stuff here
            if (e.Members.ContainsKey(client.Self.AgentID))
            {
                this.BeginInvoke(new MethodInvoker(delegate()
                {
                    grpID = e.GroupID;
                    RequestParcelDets();

                    SetOwnerProperties();
                }));

                //return;
            }
        }
Пример #10
0
        public void Groups_GroupMembersReply(object sender, GroupMembersReplyEventArgs e)
        {
            List <Hashtable> list = new List <Hashtable>();

            foreach (KeyValuePair <UUID, GroupMember> memberpair in e.Members)
            {
                GroupMember member = memberpair.Value;
                Hashtable   hash   = new Hashtable();
                hash.Add("UUID", memberpair.Key);
                hash.Add("Contribution", member.Contribution);
                hash.Add("IsOwner", member.IsOwner);
                hash.Add("ID", member.ID);
                hash.Add("OnlineStatus", member.OnlineStatus);
                hash.Add("Powers", member.Powers);
                hash.Add("Title", member.Title);
                list.Add(hash);
            }
            Hashtable message = new Hashtable();

            message.Add("MessageType", "GroupMembers");
            message.Add("MemberList", list);
            message.Add("GroupID", e.GroupID);
            enqueue(message);
        }
Пример #11
0
 protected virtual void GroupMembersReplyHandler(object sender, GroupMembersReplyEventArgs e)
 {
 }
Пример #12
0
        protected void groupMembershipUpdate(object o, GroupMembersReplyEventArgs e)
        {
            if (group_membership_update_q.ContainsKey(e.GroupID) == true)
            {
                updateGroupPolling(e.GroupID);
                bool        enableChanges = GroupMembership.ContainsKey(e.GroupID);
                List <UUID> members       = new List <UUID>();
                foreach (KeyValuePair <UUID, GroupMember> entry in e.Members)
                {
                    members.Add(entry.Key);
                }
                if (enableChanges == false)
                {
                    bool skip = false;
                    if (members.Count == 1)
                    {
                        skip = members.Contains(UUID.Zero);
                    }
                    if (skip == false)
                    {
                        if (DebugWhere == true)
                        {
                            LogFormater.Info("OnEvent - updating group membership: " + e.GroupID.ToString(), true);
                        }
                        GroupMembership.Add(e.GroupID, members);
                    }
                    else
                    {
                        if (DebugWhere == true)
                        {
                            LogFormater.Info("OnEvent - membership data pack: " + e.GroupID + " - invaild 1 entry and its NULL_KEY", true);
                        }
                    }
                }
                else
                {
                    List <UUID> newEntrys     = new List <UUID>();
                    List <UUID> missingEntrys = GroupMembership[e.GroupID];
                    foreach (UUID updated in members)
                    {
                        if (missingEntrys.Contains(updated) == false)
                        {
                            newEntrys.Add(updated);
                        }
                        else
                        {
                            missingEntrys.Remove(updated);
                        }
                    }
                    if (DebugWhere == true)
                    {
                        LogFormater.Info("OnEvent - updating group membership: " + e.GroupID.ToString(), true);
                    }
                    GroupMembership[e.GroupID] = members;
                    int lookups = 0;
                    foreach (UUID newMember in newEntrys)
                    {
                        string name = controler.getBot().FindAvatarKey2Name(newMember);
                        if (name == "lookup")
                        {
                            lookups++;
                        }
                        //LogFormater.Info("OnEvent - new group member: " + name, true);
                    }
                    foreach (UUID missingMember in missingEntrys)
                    {
                        string name = controler.getBot().FindAvatarKey2Name(missingMember);
                        if (name == "lookup")
                        {
                            lookups++;
                        }
                        //LogFormater.Info("OnEvent - leaving group member: " + name, true);
                    }
                    if (lookups > 0)
                    {
                        Thread.Sleep(500);
                    }
                    Dictionary <string, string> args = new Dictionary <string, string>();
                    args.Add("avataruuid", "notset");
                    args.Add("avatarname", "notset");
                    args.Add("groupuuid", e.GroupID.ToString());

                    foreach (UUID newMember in newEntrys)
                    {
                        string name = controler.getBot().FindAvatarKey2Name(newMember);
                        args["avataruuid"] = newMember.ToString();
                        args["avatarname"] = name;
                        TriggerEvent("GroupMemberJoins", args, false);
                    }

                    foreach (UUID missingMember in missingEntrys)
                    {
                        string name = controler.getBot().FindAvatarKey2Name(missingMember);
                        args["avataruuid"] = missingMember.ToString();
                        args["avatarname"] = name;
                        TriggerEvent("GroupMemberLeaves", args, false);
                    }
                }
            }
        }
Пример #13
0
        private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
        {
            Members = e.Members;

            UpdateMembers();
        }