1. INTRODUCTION

The MOP-1.00 package is composed of several Perl5 modules:
 - MOP::MOP
 - MOP::MetaModule
 - MOP::Remote

The two modules MOP::MOP and MOP::MetaModule provide the basis of
a meta-object protocol (MOP) for Perl5 objects.
Basically, a MOP allows trapping of the various method calls made by a
user on the objects he has created from a MOP-aware module. These
method calls are then redirected to another object, called the meta-object,
for further processing. Once the meta-object has taken control of the
method call, it can complement the processing made by the base level
target object in various ways. Possible applications include:
transparent remote invocation, authentication, replicas management or
stable storage for fault tolerance, etc.

MOP::MOP allows the programmer to specify which methods of an object can be
controlled by a meta-object through the MOP. It is used to enable the MOP and
the reflective methods in the base level module.
MOP::MetaModule provides the minimal functionality needed for a meta-object,
in particular the ability to activate the actual method call processing
in the base level object from the meta-level. Hence, MOP::MetaModule
is a generic module from which all meta-class modules should inherit.

The MOP-1.00 package contains a few examples of more or less useful
meta-modules. The most interesting meta-module example (MOP::Remote)
provides a framework for transparent distribution on a (NFS capable)
Unix platform.

2. PREREQUISITES

MOP::MOP is implemented as a source filter. Hence, the MOP::MOP module
depends on the Filter::Util::Call module, which is available from CPAN.

3. QUICKSTART

WANRING: If you want to run the tests of MOP::Remote, you need to specify
the name of another host you can use to start a remote server! If you only
have one machine, you can say 'localhost' instead of other-host.

 * BUILD:
perl Makefile.PL PREFIX=~
make

 * TRY:
You set an env. variable to indicate a remote host (or fake it on
'localhost'). Depending on your shell, say one of:
 setenv REMOTE_HOST other-host                  (csh-ish)
 REMOTE_HOST=other-host; export REMOTE_HOST     (sh-ish)
 export REMOTE_HOST=other-host                  (bash-ish)
make test

 * ADOPT:
make pure_install

4. LICENSE

Copyright (c) 1999 Rodolphe Ortalo & LAAS-CNRS. All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

Note in particular that, according to this license:
"   [... 1-8 skipped...]
9. The name(s) of the Copyright Holder may not be used to endorse or promote
products derived from this software without specific prior written permission.

10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE."


5. AVAILABILITY

This module should be available soon from CPAN, probably in:
 http://www.cpan.org/authors/id/O/OR/ORTALO/MOP-1.00.tar.gz
and from my own homepage (in French):
 http://www.laas.fr/~ortalo/


Rodolphe Ortalo, February 9, 1999

==========================================================================

1. INTRODUCTION

La distribution MOP-1.00 est composee de plusieurs modules Perl5 :
 - MOP::MOP
 - MOP::MetaModule
 - MOP::Remote

Les deux modules MOP::MOP et MOP::MetaModule fournissent les fondations
d'un protocoles a meta-objets (meta-object protocol ou MOP) pour les objets
Perl5.
Un MOP permet d'intercepter les differents appels de methode effectues par
l'utilisateur sur les objets qu'il a crees a partir d'un module utilisant
le MOP. Ces appels de methodes sont alors rediriges vers un autre objet,
appele un meta-objet, effectuant leur mise en oeuvre. Une fois que le
meta-objet a pris le controle de l'appel de methode, il peut effectuer
divers traitements complementaires. Les applications possibles de cette
technique incluent: l'invocation a distance tranparente d'un serveur,
l'authentification, la gestion de repliques ou le stockage persistant pour
la tolerance aux fautes, etc.

MOP::MOP permet de specifier quelles methodes d'un objet peuvent etre
controllees par un meta-objet au travers du MOP. Il est donc utilise pour
activer le MOP et les methodes reflexives dans le module du niveau de base.
MOP::MetaModule fournit les fonctionnalites minimales necessaires a un
meta-objet, et en particulier les moyens d'activer le veritable appel
de methode au niveau de base depuis le meta-niveau. MOP::MetaModule est
donc un module patron dont tout les meta-modules peuvent heriter.

La distribution MOP-1.00 contient plusieurs exemples d'application de
ce MOP. L'exemple le plus interessant est un meta-module (MOP::Remote)
permettant l'invocation a distance d'objets dans un systeme Unix.

2. DEPENDANCES

MOP::MOP est un filtre de code source. Le module MOP::MOP utilise donc
le module Filter::Util::Call, egalement disponible sur la CPAN.

3. DEMARRAGE (RAPIDE)

ATTENTION: Si vous voulez executer les tests fournis avec MOP::Remote,
vous devez specifier le nom d'une deuxieme machine sur laquelle il est
possible de demarrer un serveur distant! Si vous n'avez qu'une seule
machine disponible, vous pouvez donner la constante 'localhost' a la place
du nom de l'hote-distant.

 * LE PREPARER:
perl Makefile.PL PREFIX=~
make

 * L'ESSAYER:
Vous devez positionner une variable d'environnement pour indiquer l'hote
distant a utiliser (ou pour le simuler sur la machine local 'localhost').
En fonction de votre shell, executez:
 setenv REMOTE_HOST hote-distant                  (csh-ish)
 REMOTE_HOST=hote-distant; export REMOTE_HOST     (sh-ish)
 export REMOTE_HOST=hote-distant                  (bash-ish)
make test

 * L'ADOPTER:
make pure_install

4. LICENSE D'UTILISATION

Copyright (c) 1999 Rodolphe Ortalo & LAAS-CNRS. Tous droits reserves.
Ce programme est un logiciel libre; il peut etre redistribue et/ou
modifie suivant les memes conditions que Perl lui-meme.

Au terme de cette license, veuillez notez plus particulierement que ce
logiciel est fourni "tel-quel" et qu'aucune garantie n'est associee.

5. DISPONIBILITE

Ce module sera prochainement disponible sur l'archive CPAN, probablement
a l'adresse:
 http://www.cpan.org/authors/id/O/OR/ORTALO/MOP-1.00.tar.gz
et depuis la page Web:
 http://www.laas.fr/~ortalo/


Rodolphe Ortalo, 9 Fevrier 1999
