3.3. EBox::GConfModule

eBox utiliza GConf para almacenar su configuración. La plataforma de desarrollo ofrece un recubrimiento sobre los bindings originales de perl. GConf ofrece una sencilla API para almacenar y consultar configuración con valores clasificados por tipos y organizada jerárquicamente. También nos permite definir esquemas limitados para algunas claves de configuración, configurando sus tipos y valores por defecto.

La plataforma de desarrollo define un recubrimiento sobre el API de GConf más algunas funcionalidades añadidas. El recubrimiento es implementado como una clase hija de Ebox::Module, así que todos los módulos que quieren usar GConf heredan de EBox::GConfModule. Sus hijos automáticamente adquieren estas características:

Esta es la lista de las funciones más importantes en EBox::GConfModule:

all_dirs

Dada una clave, devuelve todos los directorios de su interior.

all_dirs_base

Dada una clave, devuelve todos los directorios de su interior, eliminando cualquier directorio que aparezca por delante.

all_entries

Dada una clave, devuelve todas las entradas de su interior. Estas entradas son todas aquellas claves que no son directorios, por lo que contendrán un valor.

all_entries_base

Dada una clave, devuelve todas las de su interior, eliminando cualquier directorio que aparezca por delante. Las entradas son todas aquellas claves que no son directorios, por lo que contendrán un valor.

array_from_dir

Dada una clave, devuelve un array utilizando una referencia a un hash para contener en cada elemento los directorios bajo su clave. También, el hash contiene la clave _dir que dice cual es el nombre del directorio.

dir_exists

Dada una clave que referencia un directorio, devuelve true si existe.

get_bool

Devuelve el valor de una clave de tipo booleano.

get_int

Devuelve el valor de una clave de tipo entero.

get_list

Devuelve un array conteniendo la lista referenciada por la clave.

get_string

Devuelve el valor de una clave de tipo cadena.

get_unique_id

General un identificado único aleatorio con un prefix delante en la raíz del nombre del espacio del módulo. Si directory es pasado, será añadido a la ruta. Notar que esto no crea la entrada, únicamente devuelve un identificador único, así que es tarea del programador crear la entrada correctamente.

hash_from_dir

Devuelve un hash conteniendo todas las entradas del directorio referenciado por la clave.

isReadOnly

Devuelve true si la instancia actual de EBox::GConfModule a la que se está accediendo es de sólo-lectura.

makeBackup

Vuelca el contenido actual de la configuración a un fichero.

restoreBackup

Recupera el último backup.

revokeConfig

Todos los cambios hechos desde que se escribió o eliminó algo serán descartados.

set_bool

Asigna un valor booleano a una clave.

set_int

Asigna un valor entero a una clave.

set_list

Asigna una lista de valores de un tipo en un valor.

set_string

Asigna un valor de tipo cadena en la clave.

Veamos algunos ejemplos de las funciones anteriormente descritas.

Ejemplo 3.3. Asignando un valor de tipo cadena

 $self->set_string("printers/x4235/name", "fooprinter"); 

Ejemplo 3.4. Asignando una lista de cadenas

$self->set_list('foo/foolist', 'string', ['foo', 'bar']);

Ejemplo 3.5. Recogiendo y usando un identificador único

my $id = $self->get_unique_id('p', 'printers');
$self->set_string("printers/$id/name", $name);
$self->set_bool("printers/$id/configured", undef);