4.2. Módulo objects

El módulo objects mantiene una lista de objetos de red creada por el usuario. Estos objetos pueden contener cualquier número de direcciones IP y bloques CIDR.

Su interfaz es muy simple. La clase EBox::ObjectObserver tiene dos funciones abstractas que deben ser implementadas por los módulos que hacen uso del módulo objects:

usesObject

Recibe el nombre de un objeto como argumento y devuelve true si el módulo está haciendo uso del objeto dado en su configuración, y false en caso contrario.

freeObject

También recibe el nombre de un objeto como argumento. Este método le dice al módulo que el usuario ha pedido la eliminación del objeto dado (incluso si estaba siendo usado por los otros módulos). El módulo debería borrar todas las referencias al objeto en su configuración cuando se llame a freeObject.

Como ejemplo, aquí está la implementación de ambas funciones en el módulo firewall:

Ejemplo 4.1. Implementación de la clase EBox::ObjectsObserver

sub usesObject # (object) 
{
	my ($self, $object) = @_;
	defined($object) or return undef;
	($object ne "") or return undef;
	return $self->dir_exists("objects/$object");
}

sub freeObject # (object) 
{
	my ($self, $object) = @_;
	defined($object) or return;
	($object ne "") or return;
	$self->delete_dir("objects/$object");
}