---
title: assetpool
slug: develop/es/assetpool
docTags: 
createdAt: 2025-03-11T07:07:19.526Z
---

El objeto *assetpool* representa un directorio en un dispositivo de almacenamiento utilizado para almacenar activos descargados. 

:::hint{type="warning"}
Consulte [Grupo de recursos de BrightSign](docId\:tHz-WP_XJdOzepeBP4ncH) para obtener información y ejemplos más generales.
:::

**IDL de assetpool**

```text
interface AssetPool {
    AssetPool(String poolPath);
    Promise<void> protectAssets(String assetCollectionName, AssetList assets);
    Promise<void> unprotectAssets(String assetCollectionName);
    Promise<void> reserveStorage(long reservedStorageInBytes);
    Promise<void> setMaximumPoolSize(long? maximumPoolSizeInBytes);
    Promise<long> getPoolSize();
    Promise<AssetValidationResult> validate(AssetList assets, AssetValidationOptions options);
    Promise<AssetQueryResult> queryFiles(AssetList assets);
    Promise<bool> areAssetsReady(AssetList assets);
};

interface AssetInfo {
    attribute String name;
    attribute String link;
    [optional] attribute long size;
    [optional] attribute AssetHash hash;
    [optional] attribute String changeHint;
    [optional] attribute AssetFetchAuthentication? auth;
    [optional] attribute AssetFetchHeaders? headers;
};

interface AssetHash {
    attribute String method;
    attribute String hex;
};

interface AssetFetchAuthentication {
    [optional] attribute String user;
    [optional] attribute String password;
};

interface AssetFetchHeaders {
};

interface AssetValidationOptions {
    attribute deleteCorrupt;
};

interface AssetQueryResult {
    attribute String name;
    attribute bool present;
};

interface AssetValidationResult {
    attribute String name;
    attribute String reason;
};
```

## Creación de objetos

Para crear un objeto *assetpool* , primero cargue el módulo `brightsign/assetpool` utilizando el método `require()` . Luego cree una instancia de la clase *assetpool* con un valor de cadena que especifique la ruta del pool. Debe crear solo una instancia de *assetpool* por ruta de pool. Esto significa que no es posible compartir de forma segura una única ruta de pool entre código BrightScript y JavaScript.

```text
const AssetPoolClass = require("@brightsign/assetpool");
let assetPool = new AssetPoolClass("SD:/pool");
```

## AssetPool

Utilice esta interfaz para realizar operaciones en el grupo de activos.

### protectAssets()

```javascript
Promise<void> protectAssets(String assetCollectionName, AssetList assets)
```

Solicita que un conjunto de archivos en el grupo de activos esté protegido contra eliminación cuando el software del sistema necesite depurar archivos del pool para liberar espacio. El parámetro `assetCollectionName` se utiliza para hacer referencia al conjunto de archivos si su protección debe eliminarse más adelante mediante el método `unprotectAssets()` . La protección solo afecta a esta instancia de `assetpool` y a los demás objetos que la utilizan. Debe proteger todos los activos que le interesen antes de realizar cualquier operación que pueda depurar archivos del pool para asegurarse de que los activos que todavía necesita no se eliminen. Esta configuración no persiste más allá del ciclo de vida de la instancia de `assetpool` .

### unprotectAssets()

```javascript
Promise<void> unprotectAssets(String assetCollectionName)
```

Elimina la protección de un conjunto de archivos que fueron protegidos al pasar el correspondiente `assetCollectionName` al método `protectAssets()` .

### reserveStorage()

```javascript
Promise<void> reserveStorage(long reservedStorageInBytes)
```

Las operaciones en esta instancia de assetpool, y cualquier otra instancia de assetpoolfetcher y assetrealizer que la utilice, intentarán mantener libre la cantidad de espacio especificada en el dispositivo de almacenamiento que contiene el pool. A medida que se escriben otros archivos en el dispositivo de almacenamiento, el tamaño máximo ocupado por el pool se reducirá para compensarlo. Esta configuración no se almacena de manera persistente en el pool, por lo que el método debe llamarse cada vez que se crea un objeto assetpool.

### setMaximumPoolSize()

```javascript
Promise<void> setMaximumPoolSize(long? maximumPoolSizeInBytes)
```

Especifica el tamaño máximo del grupo de activos. Este método requiere más recursos que `reserveStorage()`, pero es útil al crear múltiples pools en un dispositivo de almacenamiento para garantizar que no crezcan de forma desigual. Esta configuración no se almacena de manera persistente en el pool, por lo que el método debe llamarse cada vez que se crea un objeto assetpool.

### getPoolSize()

```javascript
Promise<long> getPoolSize()
```

Devuelve el tamaño actual del grupo de activos en bytes. Para hacerlo, es necesario recorrer la estructura de directorios del pool y examinar cada archivo de activos, lo que puede ralentizar otros accesos al dispositivo de almacenamiento. Este método no debería llamarse regularmente en código de producción.

### validate()

```javascript
Promise<AssetValidationResult> validate(AssetList assets, AssetValidationOptions options)
```

Recalcula los hashes de cada archivo del pool y los compara con los valores esperados en el AssetList proporcionado. Esto significa que cada archivo de recurso debe leerse en su totalidad, lo que puede tomar mucho tiempo y puede ralentizar otros accesos al dispositivo de almacenamiento. Este método puede utilizarse para detectar corrupción del almacenamiento y del sistema de archivos. Este método devuelve una interfaz *ResultadoDeValidaciónDeActivo* que contiene resultados de validación para cada archivo. El segundo parámetro es una interfaz *AssetValidationsOptions* que especifica las opciones de validación. La única opción admitida actualmente indica si los recursos cuyos hashes no coinciden se eliminan automáticamente. El comportamiento predeterminado es dejar dichos archivos de recursos en su lugar.

### queryFiles()

```javascript
Promise<AssetQueryResult> queryFiles(AssetList assets)
```

Determina si los archivos especificados están presentes en el pool de recursos. Este método devuelve una interfaz *AssetQueryResult* que contiene los resultados de la consulta. Este método normalmente solo es útil para depuración durante el desarrollo.

### areAssetsReady()

```javascript
Promise<bool> areAssetsReady(AssetList assets)
```

Devuelve `verdadero` si cada recurso del AssetList está presente en el pool de recursos.

## AssetInfo 

Esta interfaz representa un único archivo de recurso que puede estar en el pool o puede que aún no esté en el pool. Cada recurso tiene un subconjunto de las siguientes propiedades:

- `nombre` <font color="#6B21A8">string</font>: El nombre que puede utilizarse para buscar el recurso. Para que un archivo pueda realizarse, debe tener un nombre de archivo válido sin barras. Los nombres de recursos deben ser únicos dentro de una colección de recursos, pero diferentes colecciones de recursos pueden usar el mismo nombre de recurso para referirse al mismo recurso en el pool o a un recurso diferente en el pool. Los nombres de recursos no se almacenan en el pool; la única forma de referirse a un recurso por nombre es usando una colección de recursos.
- `enlace` <font color="#6B21A8">string</font>: El URI que puede ser utilizado por assetpoolfetcher para descargar el archivo. Se admiten URI http, https, ftp y file.
- `tamaño` <font color="#6B21A8">long</font> <font color="#01a0af">optional</font>: La longitud del archivo (en bytes), si se conoce.
- `hash` <font color="#6B21A8">AssetHash</font> <font color="#01a0af">optional</font>: Una interfaz *Hash* que especifica el algoritmo hash y el valor hash del archivo. Si no se proporciona un hash, entonces se crea automáticamente a partir del link y changeHint.
- `changeHint` <font color="#6B21A8">string</font> <font color="#01a0af">optional</font>: Un valor arbitrario que puede ser utilizado por el cliente para especificar que un archivo ha cambiado incluso cuando el valor hash y el URL de descarga permanecen iguales. Esto es principalmente útil cuando el hash no se conoce, pero el proveedor de la colección de recursos puede saber cuándo ha cambiado el contenido. Por ejemplo, los feeds MediaRSS a menudo proporcionan un GUID para el contenido.
- `auth` <font color="#6B21A8">AssetFetchAuthentication</font><font color="#6B21A8">?</font> <font color="#01a0af">optional</font>: Una interfaz *AssetFetchAuthentication* que especifica las credenciales que se deben usar al descargar el recurso. De forma predeterminada, las credenciales se heredan de la instancia de [assetpoolfetcher](docId\:KBRcXMgDzal3KLAii8rhv) utilizada para descargar el recurso.
- `encabezados` <font color="#6B21A8">AssetFetchHeaders?</font> <font color="#01a0af">optional</font>: De forma predeterminada, los encabezados HTTP especificados mediante la propiedad `encabezados` pasada al método s`tarta` se usarán para cada recurso. El uso de estos encabezados puede deshabilitarse para un recurso concreto estableciendo esta propiedad en `null`. Esto es útil si un subconjunto particular de recursos se recupera desde otro lugar que no requiere autenticación. Actualmente no es posible proporcionar encabezados específicos para un único recurso.

## AssetHash

Esta interfaz contiene información hash sobre el archivo.

- `método` <font color="#6B21A8">string</font>: El algoritmo hash. Los valores aceptados incluyen "SHA1", "SHA224", "SHA256", "SHA384", "SHA512", "MD5" y "BESHA1". "BESHA1" es un algoritmo hash personalizado que solo es útil para hacer referencia a grandes recursos almacenados de forma remota y no se recomienda su uso.
- `hex` <font color="#6B21A8">string</font>: El valor hash en formato hexadecimal

## AssetFetchAuthentication

Esta interfaz contiene información de autenticación para descargar archivos.

- `usuario` <font color="#6B21A8">string</font> <font color="#01a0af">optional</font>: El nombre de usuario para la autenticación
- `contraseña` <font color="#6B21A8">string</font> <font color="#01a0af">optional</font>: La contraseña para la autenticación

## AssetValidationOptions

Esta interfaz contiene opciones de validación para el método `validate()` .

- `deleteCorrupt`: Un indicador que especifica si los archivos corruptos deben eliminarse durante la validación

## AssetQueryResult

Esta interfaz es devuelta por el método `queryFiles()` . Cada entrada de la lista contiene los siguientes parámetros:

- `nombre` <font color="#6B21A8">string</font>: El nombre del archivo consultado
- `presente` <font color="#6B21A8">bool</font>: Un indicador que señala si el archivo consultado existe en el grupo de recursos

## AssetValidationResult

Esta interfaz es devuelta por el método `validate()` . Cada entrada de la lista contiene los siguientes parámetros:

- `nombre` <font color="#6B21A8">string</font>: El nombre del archivo verificado
- `razón` <font color="#6B21A8">string</font>: Una explicación de una validación fallida

