コード例 #1
0
        public static object DeleteObject(object msg)
        {
            DeleteObjectMessage data = (DeleteObjectMessage)msg;

            switch (data.type)
            {
            case "node":
                NetUtil.ReleaseNode((ushort)data.id);
                break;

            case "segment":
                NetUtil.ReleaseSegment((ushort)data.id, !data.keep_nodes);
                break;

            case "building":
                ManagersUtil.ReleaseBuilding((ushort)data.id);
                break;

            case "prop":
                ManagersUtil.ReleaseProp((ushort)data.id);
                break;

            case "tree":
                ManagersUtil.ReleaseTree(data.id);
                break;

            default:
                throw new Exception("Unknown type '" + data.type + "'");
            }
            return(GetObjectFromIdInternal(data.id, null, data.type));
        }
コード例 #2
0
            public override byte[] Handle(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse)
            {
                OSDMap map;
                if (ServiceHelper.TryGetOSD(httpRequest, out map))
                {
                    DeleteObjectMessage message = new DeleteObjectMessage();
                    message.Deserialize(map);

                    DeleteObjectReplyMessage reply = new DeleteObjectReplyMessage();

                    UUID ownerID = CableBeachUtils.MessageToUUID(message.Identity, message.AgentID);

                    InventoryFolderBase folder = new InventoryFolderBase(message.ObjectID, ownerID);
                    if (m_InventoryService.GetFolder(folder) != null)
                    {
                        m_InventoryService.PurgeFolder(folder);
                        reply.Success = m_InventoryService.DeleteFolders(ownerID, new List<UUID> { message.ObjectID });

                        if (!reply.Success)
                        {
                            m_log.Error("[CABLE BEACH INVENTORY]: failed to delete folder " + message.ObjectID);
                            reply.Message = "failed to delete folder";
                        }
                    }
                    else
                    {
                        reply.Success = m_InventoryService.DeleteItems(ownerID, new List<UUID> { message.ObjectID });

                        if (!reply.Success)
                        {
                            m_log.Error("[CABLE BEACH INVENTORY]: failed to delete item " + message.ObjectID);
                            reply.Message = "failed to delete item";
                        }
                    }

                    return ServiceHelper.MakeResponse(httpResponse, reply.Serialize());
                }
                else
                {
                    m_log.Error("[CABLE BEACH INVENTORY]: delete_object called with invalid data");
                    httpResponse.StatusCode = (int)HttpStatusCode.BadRequest;
                    return Utils.EmptyBytes;
                }
            }