示例#1
0
        private void ParcelAccessListRequestHandler(Packet packet, LLAgent agent)
        {
            ParcelAccessListRequestPacket request = (ParcelAccessListRequestPacket)packet;
            ParcelAccessFlags             flags   = (ParcelAccessFlags)request.Data.Flags;

            SceneParcel parcel;

            if (m_parcels.TryGetParcel(request.Data.LocalID, out parcel))
            {
                ParcelAccessListReplyPacket reply = new ParcelAccessListReplyPacket();
                reply.Data.AgentID    = agent.ID;
                reply.Data.Flags      = request.Data.Flags;
                reply.Data.LocalID    = request.Data.LocalID;
                reply.Data.SequenceID = request.Data.SequenceID;

                List <ParcelAccessEntry> list = (flags == ParcelAccessFlags.Access)
                    ? parcel.AccessWhiteList
                    : parcel.AccessBlackList;

                if (list != null)
                {
                    lock (list)
                    {
                        reply.List = new ParcelAccessListReplyPacket.ListBlock[list.Count];
                        for (int i = 0; i < list.Count; i++)
                        {
                            reply.List[i] = new ParcelAccessListReplyPacket.ListBlock
                            {
                                Flags = request.Data.Flags,
                                ID    = list[i].AgentID,
                                Time  = (int)Utils.DateTimeToUnixTime(list[i].Created)
                            };
                        }
                    }
                }
                else
                {
                    reply.List = new ParcelAccessListReplyPacket.ListBlock[0];
                }

                m_udp.SendPacket(agent, reply, ThrottleCategory.Task, true);
            }
            else
            {
                m_log.Warn(agent.Name + " requested access list for unknown parcel " + request.Data.LocalID);
            }
        }
示例#2
0
文件: Parcels.cs 项目: thoys/simian
        private void ParcelAccessListRequestHandler(Packet packet, LLAgent agent)
        {
            ParcelAccessListRequestPacket request = (ParcelAccessListRequestPacket)packet;
            ParcelAccessFlags flags = (ParcelAccessFlags)request.Data.Flags;

            SceneParcel parcel;
            if (m_parcels.TryGetParcel(request.Data.LocalID, out parcel))
            {
                ParcelAccessListReplyPacket reply = new ParcelAccessListReplyPacket();
                reply.Data.AgentID = agent.ID;
                reply.Data.Flags = request.Data.Flags;
                reply.Data.LocalID = request.Data.LocalID;
                reply.Data.SequenceID = request.Data.SequenceID;

                List<ParcelAccessEntry> list = (flags == ParcelAccessFlags.Access)
                    ? parcel.AccessWhiteList
                    : parcel.AccessBlackList;

                if (list != null)
                {
                    lock (list)
                    {
                        reply.List = new ParcelAccessListReplyPacket.ListBlock[list.Count];
                        for (int i = 0; i < list.Count; i++)
                        {
                            reply.List[i] = new ParcelAccessListReplyPacket.ListBlock
                            {
                                Flags = request.Data.Flags,
                                ID = list[i].AgentID,
                                Time = (int)Utils.DateTimeToUnixTime(list[i].Created)
                            };
                        }
                    }
                }
                else
                {
                    reply.List = new ParcelAccessListReplyPacket.ListBlock[0];
                }

                m_udp.SendPacket(agent, reply, ThrottleCategory.Task, true);
            }
            else
            {
                m_log.Warn(agent.Name + " requested access list for unknown parcel " + request.Data.LocalID);
            }
        }