Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20 R7
Storage

Storage 


 

Storage -> Resultado 
Parámetro Tipo   Descripción
Resultado  Objeto in Catálogo de objetos compartidos registrados y colecciones compartidas

El método Storage devuelve el catálogo de objetos compartidos o colecciones compartidas registrados registradas en el objeto Storage en la máquina o componente actual.

El catálogo devuelto por Storage es creado automáticamente por 4D y está disponible para todos los procesos de la base, incluidos los procesos apropiativos. Existe un catálogo Storage por máquina y componente: en una aplicación cliente/servidor, hay un objeto compartido Storage en el servidor y un objeto compartido Storage en cada aplicación 4D remota; si la base usa componentes, hay un objeto Storage por componente.

Utilice el catálogo Storage para hacer referencia a cualquier objeto compartido o colección compartida que desee utilizar desde cualquier proceso apropiativo o estándar. Para registrar un objeto compartido o una colección compartida en el catálogo, agregue su referencia al objeto compartido devuelto por Storage.

Como el catálogo devuelto por Storage es un objeto compartido, sigue las reglas descritas en la sección Objetos y colecciones compartidos, pero con algunas características específicas:

  • Este objeto solo puede contener objetos compartidos y colecciones compartidas. Intentar agregar otros tipos de valores (objetos no compartidos o colecciones, nulos, valores escalares) generará un error.
  • Para agregar una propiedad a este objeto debe estar rodeado por la estructura Use...End use, de lo contrario, se devuelve un error. Sin embargo, es posible leer un atributo fuera de una estructura Use...End use
  • Cuando está rodeado por la estructura Use...End use, los atributos de primer nivel de Storage están bloqueados para otros procesos.
  • A diferencia de los objetos compartidos estándar, el objeto devuelto por Storage NO compartirá su identificador de bloqueo con objetos compartidos o colecciones agregadas como atributos (para más información, consulte la sección Identificador de bloqueo).

Una práctica común podría ser inicializar el objeto Storage en el

 Use(Storage)
    Storage.counters:=New shared object("customers";0;"invoices";0)
 End use

Este ejemplo muestra una forma estándar de establecer valores de Almacenamiento:

 Use(Storage)
    Storage.mydata:=New shared object
    Use(Storage.mydata)
       Storage.mydata.prop1:="Smith"
       Storage.mydata.prop2:=100
    End use
 End use

Storage permite implementar un singleton con una inicialización lenta, como se muestra en el siguiente ejemplo.

Nota: para más información acerca de los patrones de singleton, puede consultar esta página de Wikipedia.

 C_LONGINT($0)
 C_LONGINT($counterValue)
 C_OBJECT(counter//crea una referencia al contador para el proceso
 
 If(counter=Null//Si esta referencia es nula, obtenga if de Storage
    Use(Storage// ¡El uso del almacenamiento solo se necesita una vez!
       If(Storage.counter=Null)
          Storage.counter:=New shared object("operation";0)
       End if
       counter:=Storage.counter //Obtener la referencia del objeto compartido contador
    End use
 End if
 Use(counter) //use directamente el contador de objetos compartidos (¡no necesita usar Storage!)
    counter.operation:=counter.operation+1
    $counterValue:=counter.operation
 End use
 
 $0:=$counterValue



Ver también 

Objetos y colecciones compartidos

 
PROPIEDADES 

Producto: 4D
Tema: Objetos (Lenguaje)
Número 1525

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v16 R6

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v20 R7)